diff options
| author | 2018-06-27 00:06:23 -0400 | |
|---|---|---|
| committer | 2018-06-27 00:06:23 -0400 | |
| commit | 84cadf9918bcc71c77621d4c22dcf3edf98f9763 (patch) | |
| tree | 0cb7a0cc54d7042565ccc08386962060ce7f5aca | |
| parent | Merge pull request #593 from bunnei/fix-swizzle (diff) | |
| parent | gl_rasterizer: Workaround for when exceeding max UBO size. (diff) | |
| download | yuzu-84cadf9918bcc71c77621d4c22dcf3edf98f9763.tar.gz yuzu-84cadf9918bcc71c77621d4c22dcf3edf98f9763.tar.xz yuzu-84cadf9918bcc71c77621d4c22dcf3edf98f9763.zip | |
Merge pull request #594 from bunnei/max-constbuff
gl_rasterizer: Workaround for when exceeding max UBO size.
Diffstat (limited to '')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index aadf7e233..3fbf8e1f9 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -613,6 +613,12 @@ u32 RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage, GLuint progr | |||
| 613 | if (used_buffer.IsIndirect()) { | 613 | if (used_buffer.IsIndirect()) { |
| 614 | // Buffer is accessed indirectly, so upload the entire thing | 614 | // Buffer is accessed indirectly, so upload the entire thing |
| 615 | size = buffer.size * sizeof(float); | 615 | size = buffer.size * sizeof(float); |
| 616 | |||
| 617 | if (size > MaxConstbufferSize) { | ||
| 618 | NGLOG_ERROR(HW_GPU, "indirect constbuffer size {} exceeds maximum {}", size, | ||
| 619 | MaxConstbufferSize); | ||
| 620 | size = MaxConstbufferSize; | ||
| 621 | } | ||
| 616 | } else { | 622 | } else { |
| 617 | // Buffer is accessed directly, upload just what we use | 623 | // Buffer is accessed directly, upload just what we use |
| 618 | size = used_buffer.GetSize() * sizeof(float); | 624 | size = used_buffer.GetSize() * sizeof(float); |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 2ab066681..4762983c9 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h | |||
| @@ -55,7 +55,7 @@ public: | |||
| 55 | }; | 55 | }; |
| 56 | 56 | ||
| 57 | /// Maximum supported size that a constbuffer can have in bytes. | 57 | /// Maximum supported size that a constbuffer can have in bytes. |
| 58 | static constexpr size_t MaxConstbufferSize = 0x1000; | 58 | static constexpr size_t MaxConstbufferSize = 0x10000; |
| 59 | static_assert(MaxConstbufferSize % sizeof(GLvec4) == 0, | 59 | static_assert(MaxConstbufferSize % sizeof(GLvec4) == 0, |
| 60 | "The maximum size of a constbuffer must be a multiple of the size of GLvec4"); | 60 | "The maximum size of a constbuffer must be a multiple of the size of GLvec4"); |
| 61 | 61 | ||