فهرست منبع

Merge pull request #546 from Subv/flush_ubo_buffer

Rasterizer: Flush the written region when writing shader uniform data before copying it to the uniform buffers.
bunnei 8 سال پیش
والد
کامیت
a941a94148
1فایلهای تغییر یافته به همراه3 افزوده شده و 0 حذف شده
  1. 3 0
      src/video_core/renderer_opengl/gl_rasterizer.cpp

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

@@ -218,6 +218,9 @@ void RasterizerOpenGL::SetupShaders(u8* buffer_ptr, GLintptr buffer_offset) {
         ubo.SetFromRegs(gpu.state.shader_stages[stage]);
         ubo.SetFromRegs(gpu.state.shader_stages[stage]);
         std::memcpy(buffer_ptr, &ubo, sizeof(ubo));
         std::memcpy(buffer_ptr, &ubo, sizeof(ubo));
 
 
+        // Flush the buffer so that the GPU can see the data we just wrote.
+        glFlushMappedBufferRange(GL_ARRAY_BUFFER, buffer_offset, sizeof(ubo));
+
         // Upload uniform data as one UBO per stage
         // Upload uniform data as one UBO per stage
         const GLintptr ubo_offset = buffer_offset;
         const GLintptr ubo_offset = buffer_offset;
         copy_buffer(uniform_buffers[stage].handle, ubo_offset,
         copy_buffer(uniform_buffers[stage].handle, ubo_offset,