diff options
| author | 2019-11-02 13:19:07 -0300 | |
|---|---|---|
| committer | 2019-11-02 13:19:19 -0300 | |
| commit | 442a1cc0211131cb237b5291fd49dbd2f37399e9 (patch) | |
| tree | f906af06d2bfac00d8a733e114c0ea5717ee2abf /src | |
| parent | gl_rasterizer: Upload constant buffers with glNamedBufferSubData (diff) | |
| download | yuzu-442a1cc0211131cb237b5291fd49dbd2f37399e9.tar.gz yuzu-442a1cc0211131cb237b5291fd49dbd2f37399e9.tar.xz yuzu-442a1cc0211131cb237b5291fd49dbd2f37399e9.zip | |
gl_rasterizer: Re-enable stream buffer memory due to global memory
Global memory is still using the stream buffer when it shouldn't. As a
temporary fix re-enable the stream buffer on compute.
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 28fa8a8be..e9abd901e 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -575,11 +575,9 @@ void RasterizerOpenGL::DrawPrelude() { | |||
| 575 | (sizeof(GLShader::MaxwellUniformData) + device.GetUniformBufferAlignment()) * | 575 | (sizeof(GLShader::MaxwellUniformData) + device.GetUniformBufferAlignment()) * |
| 576 | Maxwell::MaxShaderStage; | 576 | Maxwell::MaxShaderStage; |
| 577 | 577 | ||
| 578 | if (!device.HasFastBufferSubData()) { | 578 | // Add space for at least 18 constant buffers |
| 579 | // Add space for at least 18 constant buffers | 579 | buffer_size += Maxwell::MaxConstBuffers * |
| 580 | buffer_size += Maxwell::MaxConstBuffers * | 580 | (Maxwell::MaxConstBufferSize + device.GetUniformBufferAlignment()); |
| 581 | (Maxwell::MaxConstBufferSize + device.GetUniformBufferAlignment()); | ||
| 582 | } | ||
| 583 | 581 | ||
| 584 | // Prepare the vertex array. | 582 | // Prepare the vertex array. |
| 585 | buffer_cache.Map(buffer_size); | 583 | buffer_cache.Map(buffer_size); |
| @@ -743,12 +741,10 @@ void RasterizerOpenGL::DispatchCompute(GPUVAddr code_addr) { | |||
| 743 | state.draw.shader_program = program; | 741 | state.draw.shader_program = program; |
| 744 | state.draw.program_pipeline = 0; | 742 | state.draw.program_pipeline = 0; |
| 745 | 743 | ||
| 746 | if (!device.HasFastBufferSubData()) { | 744 | const std::size_t buffer_size = |
| 747 | const std::size_t buffer_size = | 745 | Tegra::Engines::KeplerCompute::NumConstBuffers * |
| 748 | Tegra::Engines::KeplerCompute::NumConstBuffers * | 746 | (Maxwell::MaxConstBufferSize + device.GetUniformBufferAlignment()); |
| 749 | (Maxwell::MaxConstBufferSize + device.GetUniformBufferAlignment()); | 747 | buffer_cache.Map(buffer_size); |
| 750 | buffer_cache.Map(buffer_size); | ||
| 751 | } | ||
| 752 | 748 | ||
| 753 | bind_ubo_pushbuffer.Setup(0); | 749 | bind_ubo_pushbuffer.Setup(0); |
| 754 | bind_ssbo_pushbuffer.Setup(0); | 750 | bind_ssbo_pushbuffer.Setup(0); |
| @@ -756,9 +752,7 @@ void RasterizerOpenGL::DispatchCompute(GPUVAddr code_addr) { | |||
| 756 | SetupComputeConstBuffers(kernel); | 752 | SetupComputeConstBuffers(kernel); |
| 757 | SetupComputeGlobalMemory(kernel); | 753 | SetupComputeGlobalMemory(kernel); |
| 758 | 754 | ||
| 759 | if (!device.HasFastBufferSubData()) { | 755 | buffer_cache.Unmap(); |
| 760 | buffer_cache.Unmap(); | ||
| 761 | } | ||
| 762 | 756 | ||
| 763 | bind_ubo_pushbuffer.Bind(); | 757 | bind_ubo_pushbuffer.Bind(); |
| 764 | bind_ssbo_pushbuffer.Bind(); | 758 | bind_ssbo_pushbuffer.Bind(); |