Merge branch 'DRTVWR-559' of ssh://bitbucket.org/lindenlab/viewer into DRTVWR-559
commit
5890f423b4
|
|
@ -153,12 +153,16 @@ extern thread_local bool gProfilerEnabled;
|
|||
// disable memory tracking (incompatible with GPU tracing
|
||||
#define LL_PROFILE_ALLOC(ptr, size) (void)(ptr); (void)(size);
|
||||
#define LL_PROFILE_FREE(ptr) (void)(ptr);
|
||||
|
||||
#define LL_LABEL_OBJECT_GL(type, name, length, label) glObjectLabel(type, name, length, label)
|
||||
#else
|
||||
#define LL_PROFILE_GPU_ZONE(name) (void)name;
|
||||
#define LL_PROFILE_GPU_ZONEC(name,color) (void)name;(void)color;
|
||||
#define LL_PROFILER_GPU_COLLECT
|
||||
#define LL_PROFILER_GPU_CONTEXT
|
||||
|
||||
#define LL_LABEL_OBJECT_GL(type, name, length, label)
|
||||
|
||||
#if LL_PROFILER_CONFIG > 1
|
||||
#define LL_PROFILE_ALLOC(ptr, size) TracyAlloc(ptr, size)
|
||||
#define LL_PROFILE_FREE(ptr) TracyFree(ptr)
|
||||
|
|
|
|||
|
|
@ -504,6 +504,10 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,
|
|||
unbind();
|
||||
}
|
||||
|
||||
#ifdef LL_PROFILER_ENABLE_TRACY_OPENGL
|
||||
setLabel(mName.c_str());
|
||||
#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(const char* label) {
|
||||
LL_LABEL_OBJECT_GL(GL_PROGRAM, mProgramObject, strlen(label), label);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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(const char* 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
|
||||
|
|
|
|||
|
|
@ -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,12 @@ void LLVertexBuffer::validateRange(U32 start, U32 end, U32 count, U32 indices_of
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef LL_PROFILER_ENABLE_TRACY_OPENGL
|
||||
void LLVertexBuffer::setLabel(const char* label) {
|
||||
LL_LABEL_OBJECT_GL(GL_BUFFER, mGLBuffer, strlen(label), label);
|
||||
}
|
||||
#endif
|
||||
|
||||
void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indices_offset) const
|
||||
{
|
||||
validateRange(start, end, count, indices_offset);
|
||||
|
|
@ -1068,6 +1074,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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(const char* 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
|
||||
|
|
|
|||
|
|
@ -201,6 +201,142 @@ public:
|
|||
NUM_RENDER_TYPES,
|
||||
};
|
||||
|
||||
#ifdef LL_PROFILER_ENABLE_TRACY_OPENGL
|
||||
static inline const char* lookupPassName(U32 pass)
|
||||
{
|
||||
switch (pass)
|
||||
{
|
||||
case PASS_SIMPLE:
|
||||
return "PASS_SIMPLE";
|
||||
case PASS_SIMPLE_RIGGED:
|
||||
return "PASS_SIMPLE_RIGGED";
|
||||
case PASS_GRASS:
|
||||
return "PASS_GRASS";
|
||||
case PASS_FULLBRIGHT:
|
||||
return "PASS_FULLBRIGHT";
|
||||
case PASS_FULLBRIGHT_RIGGED:
|
||||
return "PASS_FULLBRIGHT_RIGGED";
|
||||
case PASS_INVISIBLE:
|
||||
return "PASS_INVISIBLE";
|
||||
case PASS_INVISIBLE_RIGGED:
|
||||
return "PASS_INVISIBLE_RIGGED";
|
||||
case PASS_INVISI_SHINY:
|
||||
return "PASS_INVISI_SHINY";
|
||||
case PASS_INVISI_SHINY_RIGGED:
|
||||
return "PASS_INVISI_SHINY_RIGGED";
|
||||
case PASS_FULLBRIGHT_SHINY:
|
||||
return "PASS_FULLBRIGHT_SHINY";
|
||||
case PASS_FULLBRIGHT_SHINY_RIGGED:
|
||||
return "PASS_FULLBRIGHT_SHINY_RIGGED";
|
||||
case PASS_SHINY:
|
||||
return "PASS_SHINY";
|
||||
case PASS_SHINY_RIGGED:
|
||||
return "PASS_SHINY_RIGGED";
|
||||
case PASS_BUMP:
|
||||
return "PASS_BUMP";
|
||||
case PASS_BUMP_RIGGED:
|
||||
return "PASS_BUMP_RIGGED";
|
||||
case PASS_POST_BUMP:
|
||||
return "PASS_POST_BUMP";
|
||||
case PASS_POST_BUMP_RIGGED:
|
||||
return "PASS_POST_BUMP_RIGGED";
|
||||
case PASS_MATERIAL:
|
||||
return "PASS_MATERIAL";
|
||||
case PASS_MATERIAL_RIGGED:
|
||||
return "PASS_MATERIAL_RIGGED";
|
||||
case PASS_MATERIAL_ALPHA:
|
||||
return "PASS_MATERIAL_ALPHA";
|
||||
case PASS_MATERIAL_ALPHA_RIGGED:
|
||||
return "PASS_MATERIAL_ALPHA_RIGGED";
|
||||
case PASS_MATERIAL_ALPHA_MASK:
|
||||
return "PASS_MATERIAL_ALPHA_MASK";
|
||||
case PASS_MATERIAL_ALPHA_MASK_RIGGED:
|
||||
return "PASS_MATERIAL_ALPHA_MASK_RIGGED";
|
||||
case PASS_MATERIAL_ALPHA_EMISSIVE:
|
||||
return "PASS_MATERIAL_ALPHA_EMISSIVE";
|
||||
case PASS_MATERIAL_ALPHA_EMISSIVE_RIGGED:
|
||||
return "PASS_MATERIAL_ALPHA_EMISSIVE_RIGGED";
|
||||
case PASS_SPECMAP:
|
||||
return "PASS_SPECMAP";
|
||||
case PASS_SPECMAP_RIGGED:
|
||||
return "PASS_SPECMAP_RIGGED";
|
||||
case PASS_SPECMAP_BLEND:
|
||||
return "PASS_SPECMAP_BLEND";
|
||||
case PASS_SPECMAP_BLEND_RIGGED:
|
||||
return "PASS_SPECMAP_BLEND_RIGGED";
|
||||
case PASS_SPECMAP_MASK:
|
||||
return "PASS_SPECMAP_MASK";
|
||||
case PASS_SPECMAP_MASK_RIGGED:
|
||||
return "PASS_SPECMAP_MASK_RIGGED";
|
||||
case PASS_SPECMAP_EMISSIVE:
|
||||
return "PASS_SPECMAP_EMISSIVE";
|
||||
case PASS_SPECMAP_EMISSIVE_RIGGED:
|
||||
return "PASS_SPECMAP_EMISSIVE_RIGGED";
|
||||
case PASS_NORMMAP:
|
||||
return "PASS_NORMAMAP";
|
||||
case PASS_NORMMAP_RIGGED:
|
||||
return "PASS_NORMMAP_RIGGED";
|
||||
case PASS_NORMMAP_BLEND:
|
||||
return "PASS_NORMMAP_BLEND";
|
||||
case PASS_NORMMAP_BLEND_RIGGED:
|
||||
return "PASS_NORMMAP_BLEND_RIGGED";
|
||||
case PASS_NORMMAP_MASK:
|
||||
return "PASS_NORMMAP_MASK";
|
||||
case PASS_NORMMAP_MASK_RIGGED:
|
||||
return "PASS_NORMMAP_MASK_RIGGED";
|
||||
case PASS_NORMMAP_EMISSIVE:
|
||||
return "PASS_NORMMAP_EMISSIVE";
|
||||
case PASS_NORMMAP_EMISSIVE_RIGGED:
|
||||
return "PASS_NORMMAP_EMISSIVE_RIGGED";
|
||||
case PASS_NORMSPEC:
|
||||
return "PASS_NORMSPEC";
|
||||
case PASS_NORMSPEC_RIGGED:
|
||||
return "PASS_NORMSPEC_RIGGED";
|
||||
case PASS_NORMSPEC_BLEND:
|
||||
return "PASS_NORMSPEC_BLEND";
|
||||
case PASS_NORMSPEC_BLEND_RIGGED:
|
||||
return "PASS_NORMSPEC_BLEND_RIGGED";
|
||||
case PASS_NORMSPEC_MASK:
|
||||
return "PASS_NORMSPEC_MASK";
|
||||
case PASS_NORMSPEC_MASK_RIGGED:
|
||||
return "PASS_NORMSPEC_MASK_RIGGED";
|
||||
case PASS_NORMSPEC_EMISSIVE:
|
||||
return "PASS_NORMSPEC_EMISSIVE";
|
||||
case PASS_NORMSPEC_EMISSIVE_RIGGED:
|
||||
return "PASS_NORMSPEC_EMISSIVE_RIGGED";
|
||||
case PASS_GLOW:
|
||||
return "PASS_GLOW";
|
||||
case PASS_GLOW_RIGGED:
|
||||
return "PASS_GLOW_RIGGED";
|
||||
case PASS_ALPHA:
|
||||
return "PASS_ALPHA";
|
||||
case PASS_ALPHA_RIGGED:
|
||||
return "PASS_ALPHA_RIGGED";
|
||||
case PASS_ALPHA_MASK:
|
||||
return "PASS_ALPHA_MASK";
|
||||
case PASS_ALPHA_MASK_RIGGED:
|
||||
return "PASS_ALPHA_MASK_RIGGED";
|
||||
case PASS_FULLBRIGHT_ALPHA_MASK:
|
||||
return "PASS_FULLBRIGHT_ALPHA_MASK";
|
||||
case PASS_FULLBRIGHT_ALPHA_MASK_RIGGED:
|
||||
return "PASS_FULLBRIGHT_ALPHA_MASK_RIGGED";
|
||||
case PASS_ALPHA_INVISIBLE:
|
||||
return "PASS_ALPHA_INVISIBLE";
|
||||
case PASS_ALPHA_INVISIBLE_RIGGED:
|
||||
return "PASS_ALPHA_INVISIBLE_RIGGED";
|
||||
case PASS_PBR_OPAQUE:
|
||||
return "PASS_PBR_OPAQUE";
|
||||
case PASS_PBR_OPAQUE_RIGGED:
|
||||
return "PASS_PBR_OPAQUE_RIGGED";
|
||||
|
||||
default:
|
||||
return "Unknown pass";
|
||||
}
|
||||
}
|
||||
#else
|
||||
static inline const char* lookupPass(U32 pass) { return ""; }
|
||||
#endif
|
||||
|
||||
LLRenderPass(const U32 type);
|
||||
virtual ~LLRenderPass();
|
||||
/*virtual*/ LLViewerTexture* getDebugTexture() { return NULL; }
|
||||
|
|
|
|||
|
|
@ -5319,6 +5319,8 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
|
|||
return;
|
||||
}
|
||||
|
||||
LL_LABEL_VERTEX_BUFFER(facep->getVertexBuffer(), LLRenderPass::lookupPassName(type));
|
||||
|
||||
U32 passType = type;
|
||||
|
||||
bool rigged = facep->isState(LLFace::RIGGED);
|
||||
|
|
|
|||
Loading…
Reference in New Issue