GLRenderer: Write the shader stage configuration UBO data *before* copying it to the GPU.
This should fix the bug with the vs_config UBO being uninitialized during shader execution.
This commit is contained in:
parent
0ff2929644
commit
86146ef819
|
@ -214,13 +214,14 @@ void RasterizerOpenGL::SetupShaders(u8* buffer_ptr, GLintptr buffer_offset) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GLShader::MaxwellUniformData ubo{};
|
||||||
|
ubo.SetFromRegs(gpu.state.shader_stages[stage]);
|
||||||
|
std::memcpy(buffer_ptr, &ubo, sizeof(ubo));
|
||||||
|
|
||||||
// Upload uniform data as one UBO per stage
|
// Upload uniform data as one UBO per stage
|
||||||
const GLintptr ubo_offset = buffer_offset;
|
const GLintptr ubo_offset = buffer_offset;
|
||||||
copy_buffer(uniform_buffers[stage].handle, ubo_offset,
|
copy_buffer(uniform_buffers[stage].handle, ubo_offset,
|
||||||
sizeof(GLShader::MaxwellUniformData));
|
sizeof(GLShader::MaxwellUniformData));
|
||||||
GLShader::MaxwellUniformData* ub_ptr =
|
|
||||||
reinterpret_cast<GLShader::MaxwellUniformData*>(buffer_ptr);
|
|
||||||
ub_ptr->SetFromRegs(gpu.state.shader_stages[stage]);
|
|
||||||
|
|
||||||
buffer_ptr += sizeof(GLShader::MaxwellUniformData);
|
buffer_ptr += sizeof(GLShader::MaxwellUniformData);
|
||||||
buffer_offset += sizeof(GLShader::MaxwellUniformData);
|
buffer_offset += sizeof(GLShader::MaxwellUniformData);
|
||||||
|
|
Reference in New Issue