From 477aab59603825e3cfc5144b784d0fe3df286ae4 Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 15 Apr 2018 14:42:23 -0500 Subject: GPU: Use the same buffer names in the generated GLSL and the buffer uploading code. --- src/video_core/renderer_opengl/gl_rasterizer.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'src/video_core/renderer_opengl/gl_rasterizer.cpp') diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index a80923285..28abc563a 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -226,10 +226,6 @@ void RasterizerOpenGL::SetupShaders(u8* buffer_ptr, GLintptr buffer_offset, size Memory::ReadBlock(cpu_address, program_code.data(), program_code.size() * sizeof(u64)); GLShader::ShaderSetup setup{std::move(program_code)}; - static constexpr std::array base_names = { - "buffer_vs_c", "buffer_tessc_c", "buffer_tesse_c", "buffer_gs_c", "buffer_fs_c", - }; - GLShader::ShaderEntries shader_resources; switch (program) { @@ -255,9 +251,9 @@ void RasterizerOpenGL::SetupShaders(u8* buffer_ptr, GLintptr buffer_offset, size static_cast(stage)); // Configure the const buffers for this shader stage. - current_constbuffer_bindpoint = SetupConstBuffers( - static_cast(stage), gl_stage_program, base_names[stage], - current_constbuffer_bindpoint, shader_resources.const_buffer_entries); + current_constbuffer_bindpoint = + SetupConstBuffers(static_cast(stage), gl_stage_program, + current_constbuffer_bindpoint, shader_resources.const_buffer_entries); } shader_program_manager->UseTrivialGeometryShader(); @@ -555,7 +551,7 @@ void RasterizerOpenGL::SamplerInfo::SyncWithConfig(const Tegra::Texture::TSCEntr } u32 RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage, GLuint program, - const std::string& base_name, u32 current_bindpoint, + u32 current_bindpoint, const std::vector& entries) { auto& gpu = Core::System::GetInstance().GPU(); auto& maxwell3d = gpu.Get3DEngine(); @@ -591,10 +587,11 @@ u32 RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage, GLuint progr glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0); // Now configure the bindpoint of the buffer inside the shader - std::string buffer_name = base_name + std::to_string(used_buffer.GetIndex()); + std::string buffer_name = used_buffer.GetName(); GLuint index = glGetProgramResourceIndex(program, GL_SHADER_STORAGE_BLOCK, buffer_name.c_str()); - glShaderStorageBlockBinding(program, index, buffer_draw_state.bindpoint); + if (index != -1) + glShaderStorageBlockBinding(program, index, buffer_draw_state.bindpoint); } state.Apply(); -- cgit v1.2.3