Browse Source
Merge pull request #594 from bunnei/max-constbuff
gl_rasterizer: Workaround for when exceeding max UBO size.
pull/15/merge
bunnei
8 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
7 additions and
1 deletions
-
src/video_core/renderer_opengl/gl_rasterizer.cpp
-
src/video_core/renderer_opengl/gl_rasterizer.h
|
|
|
@ -613,6 +613,12 @@ u32 RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage, GLuint progr |
|
|
|
if (used_buffer.IsIndirect()) { |
|
|
|
// Buffer is accessed indirectly, so upload the entire thing
|
|
|
|
size = buffer.size * sizeof(float); |
|
|
|
|
|
|
|
if (size > MaxConstbufferSize) { |
|
|
|
NGLOG_ERROR(HW_GPU, "indirect constbuffer size {} exceeds maximum {}", size, |
|
|
|
MaxConstbufferSize); |
|
|
|
size = MaxConstbufferSize; |
|
|
|
} |
|
|
|
} else { |
|
|
|
// Buffer is accessed directly, upload just what we use
|
|
|
|
size = used_buffer.GetSize() * sizeof(float); |
|
|
|
|
|
|
|
@ -55,7 +55,7 @@ public: |
|
|
|
}; |
|
|
|
|
|
|
|
/// Maximum supported size that a constbuffer can have in bytes. |
|
|
|
static constexpr size_t MaxConstbufferSize = 0x1000; |
|
|
|
static constexpr size_t MaxConstbufferSize = 0x10000; |
|
|
|
static_assert(MaxConstbufferSize % sizeof(GLvec4) == 0, |
|
|
|
"The maximum size of a constbuffer must be a multiple of the size of GLvec4"); |
|
|
|
|
|
|
|
|