summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_shader_manager.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-04-08 05:45:09 +0200
committerbunnei <bunneidev@gmail.com>2018-04-14 05:48:28 +0200
commit51f37f5061eec2d9a0a872aebd6b50e21bee19a6 (patch)
tree9419d0758e5df2e94af38e95443dd1563a7ee969 /src/video_core/renderer_opengl/gl_shader_manager.cpp
parentmaxwell_3d: Make memory_manager public. (diff)
downloadyuzu-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.cpp19
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