Remove transform constants

This commit is contained in:
Vincent Lejeune 2015-10-11 19:31:43 +02:00
parent e086b7a522
commit beabc88f79
4 changed files with 16 additions and 22 deletions

View File

@ -284,12 +284,6 @@ void D3D12GSRender::setScaleOffset()
void D3D12GSRender::FillVertexShaderConstantsBuffer()
{
for (const RSXTransformConstant& c : m_transform_constants)
{
size_t offset = c.id * 4 * sizeof(float);
m_vertexConstants[offset] = c;
}
size_t bufferSize = 512 * 4 * sizeof(float);
assert(m_constantsData.canAlloc(bufferSize));
@ -297,15 +291,15 @@ void D3D12GSRender::FillVertexShaderConstantsBuffer()
void *constantsBufferMap;
ThrowIfFailed(m_constantsData.m_heap->Map(0, &CD3DX12_RANGE(heapOffset, heapOffset + bufferSize), &constantsBufferMap));
for (const auto &vertexConstants : m_vertexConstants)
for (const auto &entry : transform_constants)
{
float data[4] = {
vertexConstants.second.x,
vertexConstants.second.y,
vertexConstants.second.z,
vertexConstants.second.w
entry.second.x,
entry.second.y,
entry.second.z,
entry.second.w
};
streamToBuffer((char*)constantsBufferMap + heapOffset + vertexConstants.first, data, 4 * sizeof(float));
streamToBuffer((char*)constantsBufferMap + heapOffset + entry.first * 4 * sizeof(float), data, 4 * sizeof(float));
}
m_constantsData.m_heap->Unmap(0, &CD3DX12_RANGE(heapOffset, heapOffset + bufferSize));

View File

@ -1032,7 +1032,7 @@ void GLGSRender::InitVertexData()
0.0f, 0.0f, 0.0f, 1.0f
};
for (const RSXTransformConstant& c : m_transform_constants)
/* for (const RSXTransformConstant& c : m_transform_constants)
{
const std::string name = fmt::format("vc[%u]", c.id);
l = m_program.GetLocation(name);
@ -1040,7 +1040,7 @@ void GLGSRender::InitVertexData()
glUniform4f(l, c.x, c.y, c.z, c.w);
checkForGlError("glUniform4f " + name + fmt::format(" %d [%f %f %f %f]", l, c.x, c.y, c.z, c.w));
}
}*/
// Scale
scaleOffsetMat[0] = (GLfloat&)rsx::method_registers[NV4097_SET_VIEWPORT_SCALE + (0x4 * 0)] / (RSXThread::m_width / RSXThread::m_width_scale);

View File

@ -1066,11 +1066,9 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, const u32 args_addr, const
const u32 z = ARGS(i); i++;
const u32 w = ARGS(i); i++;
RSXTransformConstant c(id, (float&)x, (float&)y, (float&)z, (float&)w);
color4f c((float&)x, (float&)y, (float&)z, (float&)w);
m_transform_constants.push_back(c);
//LOG_NOTICE(RSX, "NV4097_SET_TRANSFORM_CONSTANT_LOAD: [%d : %d] = (%f, %f, %f, %f)", i, id, c.x, c.y, c.z, c.w);
transform_constants[id] = c;
}
break;
}
@ -2150,7 +2148,6 @@ void RSXThread::End()
m_indexed_array.Reset();
m_fragment_constants.clear();
m_transform_constants.clear();
m_cur_fragment_prog_num = 0;
m_clear_surface_mask = 0;

View File

@ -8,7 +8,7 @@
#include "Utilities/Semaphore.h"
#include "Utilities/Thread.h"
#include "Utilities/Timer.h"
#include "Utilities/types.h"
namespace rsx
{
@ -152,9 +152,12 @@ public:
rsx::data_array_format_info vertex_arrays_info[rsx::limits::vertex_count];
std::vector<u8> vertex_arrays[rsx::limits::vertex_count];
RSXIndexArrayData m_indexed_array;
std::unordered_map<u32, color4_base<f32>> transform_constants;
std::vector<RSXTransformConstant> m_fragment_constants;
std::vector<RSXTransformConstant> m_transform_constants;
u32 m_shader_ctrl, m_cur_fragment_prog_num;
RSXFragmentProgram m_fragment_progs[rsx::limits::fragment_count];
RSXFragmentProgram* m_cur_fragment_prog;