diff options
| author | 2018-06-08 12:22:39 -0500 | |
|---|---|---|
| committer | 2018-06-08 12:22:39 -0500 | |
| commit | 47dc5e0dabeedc9a080c51214418e4761069ae90 (patch) | |
| tree | bb8a51beb4026c47921802817a1ab2e03f9bfc44 /src | |
| parent | Merge pull request #478 from janisozaur/patch-1 (diff) | |
| download | yuzu-47dc5e0dabeedc9a080c51214418e4761069ae90.tar.gz yuzu-47dc5e0dabeedc9a080c51214418e4761069ae90.tar.xz yuzu-47dc5e0dabeedc9a080c51214418e4761069ae90.zip | |
Rasterizer: Flush the written region when writing shader uniform data before copying it to the uniform buffers.
This fixes the flip_viewport uniform having invalid values when drawing.
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 0bd235218..59761c6b1 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -218,6 +218,9 @@ void RasterizerOpenGL::SetupShaders(u8* buffer_ptr, GLintptr buffer_offset) { | |||
| 218 | ubo.SetFromRegs(gpu.state.shader_stages[stage]); | 218 | ubo.SetFromRegs(gpu.state.shader_stages[stage]); |
| 219 | std::memcpy(buffer_ptr, &ubo, sizeof(ubo)); | 219 | std::memcpy(buffer_ptr, &ubo, sizeof(ubo)); |
| 220 | 220 | ||
| 221 | // Flush the buffer so that the GPU can see the data we just wrote. | ||
| 222 | glFlushMappedBufferRange(GL_ARRAY_BUFFER, buffer_offset, sizeof(ubo)); | ||
| 223 | |||
| 221 | // Upload uniform data as one UBO per stage | 224 | // Upload uniform data as one UBO per stage |
| 222 | const GLintptr ubo_offset = buffer_offset; | 225 | const GLintptr ubo_offset = buffer_offset; |
| 223 | copy_buffer(uniform_buffers[stage].handle, ubo_offset, | 226 | copy_buffer(uniform_buffers[stage].handle, ubo_offset, |