1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2012 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker // ShaderExecutable.cpp: Implements a class to contain D3D shader executable 8*8975f5c5SAndroid Build Coastguard Worker // implementation details. 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/d3d/ShaderExecutableD3D.h" 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Worker #include "common/angleutils.h" 13*8975f5c5SAndroid Build Coastguard Worker 14*8975f5c5SAndroid Build Coastguard Worker namespace rx 15*8975f5c5SAndroid Build Coastguard Worker { 16*8975f5c5SAndroid Build Coastguard Worker ShaderExecutableD3D(const void * function,size_t length)17*8975f5c5SAndroid Build Coastguard WorkerShaderExecutableD3D::ShaderExecutableD3D(const void *function, size_t length) 18*8975f5c5SAndroid Build Coastguard Worker : mFunctionBuffer(length) 19*8975f5c5SAndroid Build Coastguard Worker { 20*8975f5c5SAndroid Build Coastguard Worker memcpy(mFunctionBuffer.data(), function, length); 21*8975f5c5SAndroid Build Coastguard Worker } 22*8975f5c5SAndroid Build Coastguard Worker ~ShaderExecutableD3D()23*8975f5c5SAndroid Build Coastguard WorkerShaderExecutableD3D::~ShaderExecutableD3D() {} 24*8975f5c5SAndroid Build Coastguard Worker getFunction() const25*8975f5c5SAndroid Build Coastguard Workerconst uint8_t *ShaderExecutableD3D::getFunction() const 26*8975f5c5SAndroid Build Coastguard Worker { 27*8975f5c5SAndroid Build Coastguard Worker return mFunctionBuffer.data(); 28*8975f5c5SAndroid Build Coastguard Worker } 29*8975f5c5SAndroid Build Coastguard Worker getLength() const30*8975f5c5SAndroid Build Coastguard Workersize_t ShaderExecutableD3D::getLength() const 31*8975f5c5SAndroid Build Coastguard Worker { 32*8975f5c5SAndroid Build Coastguard Worker return mFunctionBuffer.size(); 33*8975f5c5SAndroid Build Coastguard Worker } 34*8975f5c5SAndroid Build Coastguard Worker getDebugInfo() const35*8975f5c5SAndroid Build Coastguard Workerconst std::string &ShaderExecutableD3D::getDebugInfo() const 36*8975f5c5SAndroid Build Coastguard Worker { 37*8975f5c5SAndroid Build Coastguard Worker return mDebugInfo; 38*8975f5c5SAndroid Build Coastguard Worker } 39*8975f5c5SAndroid Build Coastguard Worker appendDebugInfo(const std::string & info)40*8975f5c5SAndroid Build Coastguard Workervoid ShaderExecutableD3D::appendDebugInfo(const std::string &info) 41*8975f5c5SAndroid Build Coastguard Worker { 42*8975f5c5SAndroid Build Coastguard Worker mDebugInfo += info; 43*8975f5c5SAndroid Build Coastguard Worker } 44*8975f5c5SAndroid Build Coastguard Worker UniformStorageD3D(size_t initialSize)45*8975f5c5SAndroid Build Coastguard WorkerUniformStorageD3D::UniformStorageD3D(size_t initialSize) : mUniformData() 46*8975f5c5SAndroid Build Coastguard Worker { 47*8975f5c5SAndroid Build Coastguard Worker bool result = mUniformData.resize(initialSize); 48*8975f5c5SAndroid Build Coastguard Worker ASSERT(result); 49*8975f5c5SAndroid Build Coastguard Worker 50*8975f5c5SAndroid Build Coastguard Worker // Uniform data is zero-initialized by default. 51*8975f5c5SAndroid Build Coastguard Worker mUniformData.fill(0); 52*8975f5c5SAndroid Build Coastguard Worker } 53*8975f5c5SAndroid Build Coastguard Worker ~UniformStorageD3D()54*8975f5c5SAndroid Build Coastguard WorkerUniformStorageD3D::~UniformStorageD3D() {} 55*8975f5c5SAndroid Build Coastguard Worker size() const56*8975f5c5SAndroid Build Coastguard Workersize_t UniformStorageD3D::size() const 57*8975f5c5SAndroid Build Coastguard Worker { 58*8975f5c5SAndroid Build Coastguard Worker return mUniformData.size(); 59*8975f5c5SAndroid Build Coastguard Worker } 60*8975f5c5SAndroid Build Coastguard Worker getDataPointer(unsigned int registerIndex,unsigned int registerElement)61*8975f5c5SAndroid Build Coastguard Workeruint8_t *UniformStorageD3D::getDataPointer(unsigned int registerIndex, unsigned int registerElement) 62*8975f5c5SAndroid Build Coastguard Worker { 63*8975f5c5SAndroid Build Coastguard Worker size_t offset = ((registerIndex * 4 + registerElement) * sizeof(float)); 64*8975f5c5SAndroid Build Coastguard Worker return mUniformData.data() + offset; 65*8975f5c5SAndroid Build Coastguard Worker } 66*8975f5c5SAndroid Build Coastguard Worker 67*8975f5c5SAndroid Build Coastguard Worker } // namespace rx 68