diff options
| author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-03-11 01:03:01 -0300 |
|---|---|---|
| committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-03-11 01:04:52 -0300 |
| commit | 835790809954bb5962f8893320b8f5c3ad82d6a0 (patch) | |
| tree | 30e258936c1282f31143f465f1c310563dd9acfa /src/video_core/renderer_opengl/renderer_opengl.cpp | |
| parent | 22e825a3bc0d9bfb5f8c29a50724c2887014dc02 (diff) | |
gl_shader_manager: Fix interaction between graphics and compute
After a compute shader was set to the pipeline, no graphics shader was
invoked again. To address this use glUseProgram to bind compute shaders
(without state tracking) and call glUseProgram(0) when transitioning out
of it back to the graphics pipeline.
Diffstat (limited to 'src/video_core/renderer_opengl/renderer_opengl.cpp')
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index a51410660..c05677cd9 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -443,7 +443,6 @@ void RendererOpenGL::InitOpenGLObjects() { // Create program pipeline program_manager.Create(); - glBindProgramPipeline(program_manager.GetHandle()); // Generate VBO handle for drawing vertex_buffer.Create(); @@ -596,7 +595,7 @@ void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) { program_manager.UseVertexShader(vertex_program.handle); program_manager.UseGeometryShader(0); program_manager.UseFragmentShader(fragment_program.handle); - program_manager.Update(); + program_manager.BindGraphicsPipeline(); glEnable(GL_CULL_FACE); if (screen_info.display_srgb) { |
