blob: eab3becc915fa7ab75d3a53a4900f46fc8a3f527 [file] [log] [blame]
//
// Copyright 2012 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