Skip to content
Permalink
Browse files

VertexManagerBase: Increase vertex/uniform buffer sizes

ZTP was uploading 10MB+ of uniforms per frame, reducing paralellism by
forcing GPU waits.
  • Loading branch information...
stenzek committed Mar 24, 2019
1 parent 2a4bca8 commit 3b86c9328577e09daf762b83a195de2c3e53f4d7
@@ -39,8 +39,6 @@

namespace OGL
{
static constexpr u32 UBO_LENGTH = 32 * 1024 * 1024;

u32 ProgramShaderCache::s_ubo_buffer_size;
s32 ProgramShaderCache::s_ubo_align;
GLuint ProgramShaderCache::s_attributeless_VBO = 0;
@@ -497,7 +495,7 @@ void ProgramShaderCache::Init()
// We multiply by *4*4 because we need to get down to basic machine units.
// So multiply by four to get how many floats we have from vec4s
// Then once more to get bytes
s_buffer = StreamBuffer::Create(GL_UNIFORM_BUFFER, UBO_LENGTH);
s_buffer = StreamBuffer::Create(GL_UNIFORM_BUFFER, VertexManagerBase::UNIFORM_STREAM_BUFFER_SIZE);

CreateHeader();
CreateAttributelessVAO();
@@ -54,9 +54,9 @@ class VertexManagerBase

// Streaming buffer sizes.
// Texel buffer will fit the maximum size of an encoded GX texture. 1024x1024, RGBA8 = 4MB.
static constexpr u32 VERTEX_STREAM_BUFFER_SIZE = 40 * 1024 * 1024;
static constexpr u32 INDEX_STREAM_BUFFER_SIZE = 4 * 1024 * 1024;
static constexpr u32 UNIFORM_STREAM_BUFFER_SIZE = 16 * 1024 * 1024;
static constexpr u32 VERTEX_STREAM_BUFFER_SIZE = 48 * 1024 * 1024;
static constexpr u32 INDEX_STREAM_BUFFER_SIZE = 8 * 1024 * 1024;
static constexpr u32 UNIFORM_STREAM_BUFFER_SIZE = 32 * 1024 * 1024;
static constexpr u32 TEXEL_STREAM_BUFFER_SIZE = 16 * 1024 * 1024;

VertexManagerBase();

0 comments on commit 3b86c93

Please sign in to comment.
You can’t perform that action at this time.