Просмотр исходного кода

gl_rasterizer: Flush L2 caches before glFlush on GLASM

ReinUsesLisp 5 лет назад
Родитель
Сommit
dc02cb92e4
1 измененных файлов с 8 добавлено и 0 удалено
  1. 8 0
      src/video_core/renderer_opengl/gl_rasterizer.cpp

+ 8 - 0
src/video_core/renderer_opengl/gl_rasterizer.cpp

@@ -473,6 +473,14 @@ void RasterizerOpenGL::FlushCommands() {
         return;
         return;
     }
     }
     num_queued_commands = 0;
     num_queued_commands = 0;
+
+    // Make sure memory stored from the previous GL command stream is visible
+    // This is only needed on assembly shaders where we write to GPU memory with raw pointers
+    // TODO: Call this only when NV_shader_buffer_load or NV_shader_buffer_store have been used
+    //       and prefer using NV_shader_storage_buffer_object when possible
+    if (Settings::values.use_assembly_shaders.GetValue()) {
+        glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT);
+    }
     glFlush();
     glFlush();
 }
 }