summaryrefslogtreecommitdiff
path: root/indra/llrender
diff options
context:
space:
mode:
authorGeenz <geenz@lindenlab.com>2022-10-05 09:48:18 -0700
committerGeenz <geenz@lindenlab.com>2022-10-05 09:48:18 -0700
commitbe1cdc1aaa67eca71fee8cbbc16b4c85bcbdb258 (patch)
tree42bf8c3d8ff049c55b7609a934ef35fc3aac8616 /indra/llrender
parent1a437cbedf94de90d749f426dde09f2466693de2 (diff)
Initial pass at adding KHR_debug support
This still needs some work - I'm not super satisfied with the overall structure of the code. Will continue to iterate as I add in proper RenderDoc support.
Diffstat (limited to 'indra/llrender')
-rw-r--r--indra/llrender/llglslshader.cpp11
-rw-r--r--indra/llrender/llglslshader.h9
-rw-r--r--indra/llrender/llvertexbuffer.cpp7
-rw-r--r--indra/llrender/llvertexbuffer.h9
4 files changed, 35 insertions, 1 deletions
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 55713eea80..f424a01541 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -504,6 +504,10 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,
unbind();
}
+#ifdef LL_PROFILER_ENABLE_TRACY_OPENGL
+ setLabel(mName);
+#endif
+
return success;
}
@@ -1786,3 +1790,10 @@ void LLShaderUniforms::apply(LLGLSLShader* shader)
shader->uniform3fv(uniform.mUniform, 1, uniform.mValue.mV);
}
}
+
+#ifdef LL_PROFILER_ENABLE_TRACY_OPENGL
+void LLGLSLShader::setLabel(std::string label) {
+ LL_LABEL_OBJECT_GL(GL_PROGRAM, mProgramObject, label.length(), label.c_str());
+}
+
+#endif
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index c26ee014cb..01eca7ebfe 100644
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -294,6 +294,10 @@ public:
// this pointer should be set to whichever shader represents this shader's rigged variant
LLGLSLShader* mRiggedVariant = nullptr;
+ #ifdef LL_PROFILER_ENABLE_TRACY_OPENGL
+ void setLabel(std::string label);
+ #endif
+
private:
void unloadInternal();
};
@@ -305,5 +309,10 @@ extern LLGLSLShader gSolidColorProgram;
//Alpha mask shader (declared here so llappearance can access properly)
extern LLGLSLShader gAlphaMaskProgram;
+#ifdef LL_PROFILER_ENABLE_TRACY_OPENGL
+#define LL_SET_SHADER_LABEL(shader) shader.setLabel(#shader)
+#else
+#define LL_SET_SHADER_LABEL(shader, label)
+#endif
#endif
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 981175d845..4ce04c17f6 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -175,7 +175,7 @@ U8* LLVBOPool::allocate(U32& name, U32 size, bool for_seed)
{
//make a new buffer
name = genBuffer();
-
+
glBindBuffer(mType, name);
if (!for_seed && i < LL_VBO_POOL_SEED_COUNT)
@@ -574,6 +574,10 @@ void LLVertexBuffer::validateRange(U32 start, U32 end, U32 count, U32 indices_of
}
}
+void LLVertexBuffer::setLabel(std::string label) {
+ LL_LABEL_OBJECT_GL(GL_BUFFER, mGLBuffer, label.length(), label.c_str());
+}
+
void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indices_offset) const
{
validateRange(start, end, count, indices_offset);
@@ -1068,6 +1072,7 @@ bool LLVertexBuffer::createGLBuffer(U32 size)
{
static int gl_buffer_idx = 0;
mGLBuffer = ++gl_buffer_idx;
+
mMappedData = (U8*)ll_aligned_malloc_16(size);
mSize = size;
}
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index a7907f9cae..a7e5fddf8c 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -300,6 +300,9 @@ public:
//for debugging, validate data in given range is valid
void validateRange(U32 start, U32 end, U32 count, U32 offset) const;
+ #ifdef LL_PROFILER_ENABLE_TRACY_OPENGL
+ void setLabel(std::string label);
+ #endif
protected:
@@ -370,5 +373,11 @@ public:
static U32 sSetCount;
};
+#ifdef LL_PROFILER_ENABLE_TRACY_OPENGL
+#define LL_LABEL_VERTEX_BUFFER(buf, name) buf->setLabel(name)
+#else
+#define LL_LABEL_VERTEX_BUFFER(buf, name)
+#endif
+
#endif // LL_LLVERTEXBUFFER_H