summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-11-02 13:19:07 -0300
committerGravatar ReinUsesLisp2019-11-02 13:19:19 -0300
commit442a1cc0211131cb237b5291fd49dbd2f37399e9 (patch)
treef906af06d2bfac00d8a733e114c0ea5717ee2abf /src
parentgl_rasterizer: Upload constant buffers with glNamedBufferSubData (diff)
downloadyuzu-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.cpp22
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();