summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Subv2018-04-15 11:18:09 -0500
committerGravatar Subv2018-04-15 11:18:09 -0500
commite128e90350a95bbeeebb3987c3513537e5e4289c (patch)
treef1487899eaee35fe95e136deb853222871ef585c /src
parentGPU: Use the buffer hints from the shader decompiler to upload only the neces... (diff)
downloadyuzu-e128e90350a95bbeeebb3987c3513537e5e4289c.tar.gz
yuzu-e128e90350a95bbeeebb3987c3513537e5e4289c.tar.xz
yuzu-e128e90350a95bbeeebb3987c3513537e5e4289c.zip
GPU: Don't use GetPointer when uploading the constbuffer data to the GPU.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 8709f9fc2..a778dfc64 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -571,10 +571,11 @@ void RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage,
571 buffer_draw_state.bindpoint = bindpoint; 571 buffer_draw_state.bindpoint = bindpoint;
572 572
573 VAddr addr = gpu.memory_manager->PhysicalToVirtualAddress(buffer.address); 573 VAddr addr = gpu.memory_manager->PhysicalToVirtualAddress(buffer.address);
574 const u8* data = Memory::GetPointer(addr); 574 std::vector<u8> data(used_buffer.GetSize() * sizeof(float));
575 Memory::ReadBlock(addr, data.data(), data.size());
576
575 glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer_draw_state.ssbo); 577 glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer_draw_state.ssbo);
576 glBufferData(GL_SHADER_STORAGE_BUFFER, used_buffer.GetSize() * sizeof(float), data, 578 glBufferData(GL_SHADER_STORAGE_BUFFER, data.size(), data.data(), GL_DYNAMIC_DRAW);
577 GL_DYNAMIC_DRAW);
578 glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0); 579 glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0);
579 } 580 }
580 581