summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-05-18 21:07:18 -0300
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-22 21:51:32 -0400
commit85fc7e584ef9d64bae3269e7993bbf919bd10640 (patch)
tree21e7c0372b7011a1e9d915da8d7bfdd35dd793c8 /src
parente8ed90480518c200c8beaefa0ddb2bbb164a429c (diff)
HACK: Bind stages before and after bindings
Works around a bug where program parameters are only applied to the current stage, and this one wasn't bound at the moment. Affects all SSBO usages on GLASM.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_graphics_program.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_graphics_program.cpp b/src/video_core/renderer_opengl/gl_graphics_program.cpp
index 7c0bf7bc8..4ac026502 100644
--- a/src/video_core/renderer_opengl/gl_graphics_program.cpp
+++ b/src/video_core/renderer_opengl/gl_graphics_program.cpp
@@ -240,6 +240,17 @@ void GraphicsProgram::Configure(bool is_indexed) {
buffer_cache.UpdateGraphicsBuffers(is_indexed);
buffer_cache.BindHostGeometryBuffers(is_indexed);
+ // FIXME: Unhack this
+ if (assembly_programs[0].handle != 0) {
+ // TODO: State track this
+ glEnable(GL_VERTEX_PROGRAM_NV);
+ glEnable(GL_FRAGMENT_PROGRAM_NV);
+ glBindProgramARB(GL_VERTEX_PROGRAM_NV, assembly_programs[0].handle);
+ glBindProgramARB(GL_FRAGMENT_PROGRAM_NV, assembly_programs[4].handle);
+ program_manager.BindProgram(0);
+ } else {
+ program_manager.BindProgram(program.handle);
+ }
const ImageId* views_it{image_view_ids.data()};
GLsizei texture_binding = 0;
GLsizei image_binding = 0;