diff options
author | bunnei <bunneidev@gmail.com> | 2018-04-08 05:45:09 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2018-04-14 05:48:28 +0200 |
commit | 51f37f5061eec2d9a0a872aebd6b50e21bee19a6 (patch) | |
tree | 9419d0758e5df2e94af38e95443dd1563a7ee969 /src/video_core/renderer_opengl/gl_shader_manager.cpp | |
parent | maxwell_3d: Make memory_manager public. (diff) | |
download | yuzu-51f37f5061eec2d9a0a872aebd6b50e21bee19a6.tar yuzu-51f37f5061eec2d9a0a872aebd6b50e21bee19a6.tar.gz yuzu-51f37f5061eec2d9a0a872aebd6b50e21bee19a6.tar.bz2 yuzu-51f37f5061eec2d9a0a872aebd6b50e21bee19a6.tar.lz yuzu-51f37f5061eec2d9a0a872aebd6b50e21bee19a6.tar.xz yuzu-51f37f5061eec2d9a0a872aebd6b50e21bee19a6.tar.zst yuzu-51f37f5061eec2d9a0a872aebd6b50e21bee19a6.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_manager.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_manager.cpp b/src/video_core/renderer_opengl/gl_shader_manager.cpp index 0da78bc65..a5835f2b1 100644 --- a/src/video_core/renderer_opengl/gl_shader_manager.cpp +++ b/src/video_core/renderer_opengl/gl_shader_manager.cpp @@ -10,8 +10,8 @@ namespace GLShader { namespace Impl { -void SetShaderUniformBlockBinding(GLuint shader, const char* name, UniformBindings binding, - size_t expected_size) { +void SetShaderUniformBlockBinding(GLuint shader, const char* name, + Maxwell3D::Regs::ShaderStage binding, size_t expected_size) { GLuint ub_index = glGetUniformBlockIndex(shader, name); if (ub_index != GL_INVALID_INDEX) { GLint ub_size = 0; @@ -24,7 +24,12 @@ void SetShaderUniformBlockBinding(GLuint shader, const char* name, UniformBindin } void SetShaderUniformBlockBindings(GLuint shader) { - SetShaderUniformBlockBinding(shader, "vs_config", UniformBindings::VS, sizeof(VSUniformData)); + SetShaderUniformBlockBinding(shader, "vs_config", Maxwell3D::Regs::ShaderStage::Vertex, + sizeof(MaxwellUniformData)); + SetShaderUniformBlockBinding(shader, "gs_config", Maxwell3D::Regs::ShaderStage::Geometry, + sizeof(MaxwellUniformData)); + SetShaderUniformBlockBinding(shader, "fs_config", Maxwell3D::Regs::ShaderStage::Fragment, + sizeof(MaxwellUniformData)); } void SetShaderSamplerBindings(GLuint shader) { @@ -40,7 +45,13 @@ void SetShaderSamplerBindings(GLuint shader) { } // namespace Impl -void MaxwellUniformData::SetFromRegs() { +void MaxwellUniformData::SetFromRegs(const Maxwell3D::State::ShaderStageInfo& shader_stage) { + const auto& memory_manager = Core::System().GetInstance().GPU().memory_manager; + for (unsigned index = 0; index < shader_stage.const_buffers.size(); ++index) { + const auto& const_buffer = shader_stage.const_buffers[index]; + const VAddr vaddr = memory_manager->PhysicalToVirtualAddress(const_buffer.address); + Memory::ReadBlock(vaddr, const_buffers[index].data(), sizeof(ConstBuffer)); + } } } // namespace GLShader |