// // Copyright (c) 2012-2015 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // ShaderExecutable.cpp: Implements a class to contain D3D shader executable // implementation details. #include "libANGLE/renderer/d3d/ShaderExecutableD3D.h" #include "common/angleutils.h" namespace rx { ShaderExecutableD3D::ShaderExecutableD3D(const void *function, size_t length) : mFunctionBuffer(length) { memcpy(mFunctionBuffer.data(), function, length); } ShaderExecutableD3D::~ShaderExecutableD3D() { } const uint8_t *ShaderExecutableD3D::getFunction() const { return mFunctionBuffer.data(); } size_t ShaderExecutableD3D::getLength() const { return mFunctionBuffer.size(); } const std::string &ShaderExecutableD3D::getDebugInfo() const { return mDebugInfo; } void ShaderExecutableD3D::appendDebugInfo(const std::string &info) { mDebugInfo += info; } UniformStorageD3D::UniformStorageD3D(size_t initialSize) : mUniformData() { bool result = mUniformData.resize(initialSize); ASSERT(result); // Uniform data is zero-initialized by default. mUniformData.fill(0); } UniformStorageD3D::~UniformStorageD3D() { } size_t UniformStorageD3D::size() const { return mUniformData.size(); } uint8_t *UniformStorageD3D::getDataPointer(unsigned int registerIndex, unsigned int registerElement) { size_t offset = ((registerIndex * 4 + registerElement) * sizeof(float)); return mUniformData.data() + offset; } } // namespace rx