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

util_shaders: Specify ASTC decoder memory barrier bits

ameerj 5 лет назад
Родитель
Сommit
851c76233d
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      src/video_core/renderer_opengl/util_shaders.cpp

+ 6 - 1
src/video_core/renderer_opengl/util_shaders.cpp

@@ -118,7 +118,12 @@ void UtilShaders::ASTCDecode(Image& image, const ImageBufferMap& map,
 
         glDispatchCompute(num_dispatches_x, num_dispatches_y, image.info.resources.layers);
     }
-    glMemoryBarrier(GL_ALL_BARRIER_BITS);
+    // Precautionary barrier to ensure the compute shader is done decoding prior to texture access.
+    // GL_TEXTURE_FETCH_BARRIER_BIT and GL_SHADER_IMAGE_ACCESS_BARRIER_BIT are used in a separate
+    // glMemoryBarrier call by the texture cache runtime
+    glMemoryBarrier(GL_UNIFORM_BARRIER_BIT | GL_COMMAND_BARRIER_BIT | GL_PIXEL_BUFFER_BARRIER_BIT |
+                    GL_TEXTURE_UPDATE_BARRIER_BIT | GL_BUFFER_UPDATE_BARRIER_BIT |
+                    GL_SHADER_STORAGE_BARRIER_BIT | GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT);
     program_manager.RestoreGuestCompute();
 }