From d7ea2ebf8a8ff1048ad3b9076c446a0d5f4bba2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 23 May 2023 15:43:29 +0200 Subject: [PATCH] GL: Add tags to push buffers for debug purposes. Double the default vertex buffer size. --- Common/GPU/OpenGL/GLMemory.cpp | 3 ++- Common/GPU/OpenGL/GLMemory.h | 3 ++- Common/GPU/OpenGL/GLRenderManager.h | 4 ++-- Common/GPU/OpenGL/thin3d_gl.cpp | 2 +- GPU/GLES/DrawEngineGLES.cpp | 4 ++-- GPU/GLES/DrawEngineGLES.h | 8 -------- 6 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Common/GPU/OpenGL/GLMemory.cpp b/Common/GPU/OpenGL/GLMemory.cpp index 73bd973161..dbf851c951 100644 --- a/Common/GPU/OpenGL/GLMemory.cpp +++ b/Common/GPU/OpenGL/GLMemory.cpp @@ -61,7 +61,7 @@ bool GLRBuffer::Unmap() { return glUnmapBuffer(target_) == GL_TRUE; } -GLPushBuffer::GLPushBuffer(GLRenderManager *render, GLuint target, size_t size) : render_(render), size_(size), target_(target) { +GLPushBuffer::GLPushBuffer(GLRenderManager *render, GLuint target, size_t size, const char *tag) : render_(render), size_(size), target_(target), tag_(tag) { bool res = AddBuffer(); _assert_(res); } @@ -136,6 +136,7 @@ void GLPushBuffer::Flush() { } bool GLPushBuffer::AddBuffer() { + INFO_LOG(G3D, "GLPushBuffer(%s): Allocating %d bytes", tag_, size_); BufInfo info; info.localMemory = (uint8_t *)AllocateAlignedMemory(size_, 16); if (!info.localMemory) diff --git a/Common/GPU/OpenGL/GLMemory.h b/Common/GPU/OpenGL/GLMemory.h index 180e8aa583..6aa03dfd52 100644 --- a/Common/GPU/OpenGL/GLMemory.h +++ b/Common/GPU/OpenGL/GLMemory.h @@ -73,7 +73,7 @@ public: size_t size; }; - GLPushBuffer(GLRenderManager *render, GLuint target, size_t size); + GLPushBuffer(GLRenderManager *render, GLuint target, size_t size, const char *tag); ~GLPushBuffer(); void Reset() { offset_ = 0; } @@ -164,4 +164,5 @@ private: uint8_t *writePtr_ = nullptr; GLuint target_; GLBufferStrategy strategy_ = GLBufferStrategy::SUBDATA; + const char *tag_; }; diff --git a/Common/GPU/OpenGL/GLRenderManager.h b/Common/GPU/OpenGL/GLRenderManager.h index 3a07bebb82..17fa1148df 100644 --- a/Common/GPU/OpenGL/GLRenderManager.h +++ b/Common/GPU/OpenGL/GLRenderManager.h @@ -334,8 +334,8 @@ public: return step.create_input_layout.inputLayout; } - GLPushBuffer *CreatePushBuffer(int frame, GLuint target, size_t size) { - GLPushBuffer *push = new GLPushBuffer(this, target, size); + GLPushBuffer *CreatePushBuffer(int frame, GLuint target, size_t size, const char *tag) { + GLPushBuffer *push = new GLPushBuffer(this, target, size, tag); RegisterPushBuffer(frame, push); return push; } diff --git a/Common/GPU/OpenGL/thin3d_gl.cpp b/Common/GPU/OpenGL/thin3d_gl.cpp index e25a95c1e8..895c452601 100644 --- a/Common/GPU/OpenGL/thin3d_gl.cpp +++ b/Common/GPU/OpenGL/thin3d_gl.cpp @@ -631,7 +631,7 @@ OpenGLContext::OpenGLContext() { caps_.isTilingGPU = gl_extensions.IsGLES && caps_.vendor != GPUVendor::VENDOR_NVIDIA && caps_.vendor != GPUVendor::VENDOR_INTEL; for (int i = 0; i < GLRenderManager::MAX_INFLIGHT_FRAMES; i++) { - frameData_[i].push = renderManager_.CreatePushBuffer(i, GL_ARRAY_BUFFER, 64 * 1024); + frameData_[i].push = renderManager_.CreatePushBuffer(i, GL_ARRAY_BUFFER, 64 * 1024, "thin3d_vbuf"); } if (!gl_extensions.VersionGEThan(3, 0, 0)) { diff --git a/GPU/GLES/DrawEngineGLES.cpp b/GPU/GLES/DrawEngineGLES.cpp index b49f1104b2..807037d250 100644 --- a/GPU/GLES/DrawEngineGLES.cpp +++ b/GPU/GLES/DrawEngineGLES.cpp @@ -97,8 +97,8 @@ void DrawEngineGLES::InitDeviceObjects() { _assert_msg_(render_ != nullptr, "Render manager must be set"); for (int i = 0; i < GLRenderManager::MAX_INFLIGHT_FRAMES; i++) { - frameData_[i].pushVertex = render_->CreatePushBuffer(i, GL_ARRAY_BUFFER, 1024 * 1024); - frameData_[i].pushIndex = render_->CreatePushBuffer(i, GL_ELEMENT_ARRAY_BUFFER, 256 * 1024); + frameData_[i].pushVertex = render_->CreatePushBuffer(i, GL_ARRAY_BUFFER, 2048 * 1024, "game_vertex"); + frameData_[i].pushIndex = render_->CreatePushBuffer(i, GL_ELEMENT_ARRAY_BUFFER, 256 * 1024, "game_index"); } int vertexSize = sizeof(TransformedVertex); diff --git a/GPU/GLES/DrawEngineGLES.h b/GPU/GLES/DrawEngineGLES.h index a6c5cc1173..74459ef5c1 100644 --- a/GPU/GLES/DrawEngineGLES.h +++ b/GPU/GLES/DrawEngineGLES.h @@ -103,13 +103,6 @@ public: Flush(); } - GLPushBuffer *GetPushVertexBuffer() { - return frameData_[render_->GetCurFrame()].pushVertex; - } - GLPushBuffer *GetPushIndexBuffer() { - return frameData_[render_->GetCurFrame()].pushIndex; - } - void ClearInputLayoutMap(); bool SupportsHWTessellation() const; @@ -153,7 +146,6 @@ private: ViewportAndScissor vpAndScissor; int bufferDecimationCounter_ = 0; - int lastRenderStepId_ = -1; // Hardware tessellation