Added internal debug names for index/vertex buffers, shaders, and textures.

This commit is contained in:
Бранимир Караџић 2019-01-22 14:45:33 -08:00
parent 207be77452
commit a0c2907c22
7 changed files with 95 additions and 17 deletions

View File

@ -124,7 +124,7 @@ static bgfx::ShaderHandle loadShader(bx::FileReaderI* _reader, const char* _name
bx::strCat(filePath, BX_COUNTOF(filePath), ".bin");
bgfx::ShaderHandle handle = bgfx::createShader(loadMem(_reader, filePath) );
bgfx::setName(handle, filePath);
bgfx::setName(handle, _name);
return handle;
}

View File

@ -297,6 +297,21 @@ namespace bgfx
PlatformData g_platformData;
bool g_platformDataChangedSinceReset = false;
const char* getTypeName(Handle _handle)
{
switch (_handle.type)
{
case Handle::IndexBuffer: return "IB";
case Handle::Shader: return "S";
case Handle::Texture: return "T";
case Handle::VertexBuffer: return "VB";
default: break;
}
BX_CHECK(false, "You should not be here.");
return "?";
}
void AllocatorStub::checkLeaks()
{
#if BGFX_CONFIG_MEMORY_TRACKING

View File

@ -282,8 +282,10 @@ namespace bgfx
{
enum Enum
{
IndexBuffer,
Shader,
Texture,
VertexBuffer,
Count
};
@ -292,17 +294,21 @@ namespace bgfx
uint16_t idx;
};
inline Handle convert(ShaderHandle _handle)
{
Handle handle = { Handle::Shader, _handle.idx };
return handle;
#define CONVERT_HANDLE(_name) \
inline Handle convert(_name##Handle _handle) \
{ \
Handle handle = { Handle::_name, _handle.idx }; \
return handle; \
}
inline Handle convert(TextureHandle _handle)
{
Handle handle = { Handle::Texture, _handle.idx };
return handle;
}
CONVERT_HANDLE(IndexBuffer);
CONVERT_HANDLE(Shader);
CONVERT_HANDLE(Texture);
CONVERT_HANDLE(VertexBuffer);
#undef CONVERT_HANDLE
const char* getTypeName(Handle _handle);
inline bool isValid(const VertexDecl& _decl)
{
@ -2948,6 +2954,8 @@ namespace bgfx
cmdbuf.write(handle);
cmdbuf.write(_mem);
cmdbuf.write(_flags);
setDebugName(convert(handle) );
}
else
{
@ -2966,7 +2974,7 @@ namespace bgfx
IndexBuffer& ref = m_indexBuffers[_handle.idx];
ref.m_name.set(_name);
// setName(convert(_handle), _name);
setName(convert(_handle), _name);
}
BGFX_API_FUNC(void destroyIndexBuffer(IndexBufferHandle _handle) )
@ -3032,6 +3040,8 @@ namespace bgfx
cmdbuf.write(declHandle);
cmdbuf.write(_flags);
setDebugName(convert(handle) );
return handle;
}
@ -3050,7 +3060,7 @@ namespace bgfx
VertexBuffer& ref = m_vertexBuffers[_handle.idx];
ref.m_name.set(_name);
// setName(convert(_handle), _name);
setName(convert(_handle), _name);
}
BGFX_API_FUNC(void destroyVertexBuffer(VertexBufferHandle _handle) )
@ -3142,6 +3152,8 @@ namespace bgfx
cmdbuf.write(size);
cmdbuf.write(_flags);
setDebugName(convert(indexBufferHandle), "Dynamic Index Buffer");
ptr = uint64_t(indexBufferHandle.idx) << 32;
}
else
@ -3325,6 +3337,8 @@ namespace bgfx
cmdbuf.write(size);
cmdbuf.write(_flags);
setDebugName(convert(vertexBufferHandle), "Dynamic Vertex Buffer");
ptr = uint64_t(vertexBufferHandle.idx)<<32;
}
else
@ -3485,6 +3499,8 @@ namespace bgfx
tib->data = (uint8_t *)tib + BX_ALIGN_16(sizeof(TransientIndexBuffer) );
tib->size = _size;
tib->handle = handle;
setDebugName(convert(handle), "Transient Index Buffer");
}
return tib;
@ -3547,6 +3563,8 @@ namespace bgfx
tvb->stride = stride;
tvb->handle = handle;
tvb->decl = declHandle;
setDebugName(convert(handle), "Transient Vertex Buffer");
}
return tvb;
@ -3778,6 +3796,8 @@ namespace bgfx
cmdbuf.write(handle);
cmdbuf.write(_mem);
setDebugName(convert(handle) );
return handle;
}
@ -3802,12 +3822,21 @@ namespace bgfx
void setName(Handle _handle, const bx::StringView& _name)
{
char tmp[1024];
uint16_t len = 1+(uint16_t)bx::snprintf(tmp, BX_COUNTOF(tmp), "%sH %d: %.*s", getTypeName(_handle), _handle.idx, _name.getLength(), _name.getPtr() );
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::SetName);
cmdbuf.write(_handle);
uint16_t len = uint16_t(_name.getLength()+1);
cmdbuf.write(len);
cmdbuf.write(_name.getPtr(), len-1);
cmdbuf.write('\0');
cmdbuf.write(tmp, len);
}
void setDebugName(Handle _handle, const bx::StringView& _name = "")
{
if (BX_ENABLED(BGFX_CONFIG_DEBUG) )
{
setName(_handle, _name);
}
}
BGFX_API_FUNC(void setName(ShaderHandle _handle, const bx::StringView& _name) )
@ -4088,6 +4117,8 @@ namespace bgfx
cmdbuf.write(_flags);
cmdbuf.write(_skip);
setDebugName(convert(handle) );
return handle;
}

View File

@ -2001,6 +2001,10 @@ namespace bgfx { namespace d3d11
{
switch (_handle.type)
{
case Handle::IndexBuffer:
setDebugObjectName(m_indexBuffers[_handle.idx].m_ptr, "%s", _name);
break;
case Handle::Shader:
setDebugObjectName(m_shaders[_handle.idx].m_ptr, "%s", _name);
break;
@ -2009,6 +2013,10 @@ namespace bgfx { namespace d3d11
setDebugObjectName(m_textures[_handle.idx].m_ptr, "%s", _name);
break;
case Handle::VertexBuffer:
setDebugObjectName(m_vertexBuffers[_handle.idx].m_ptr, "%s", _name);
break;
default:
BX_CHECK(false, "Invalid handle type?! %d", _handle.type);
break;

View File

@ -1876,6 +1876,10 @@ namespace bgfx { namespace d3d12
{
switch (_handle.type)
{
case Handle::IndexBuffer:
setDebugObjectName(m_indexBuffers[_handle.idx].m_ptr, "%s", _name);
break;
case Handle::Shader:
// setDebugObjectName(m_shaders[_handle.idx].m_ptr, "%s", _name);
break;
@ -1884,6 +1888,10 @@ namespace bgfx { namespace d3d12
setDebugObjectName(m_textures[_handle.idx].m_ptr, "%s", _name);
break;
case Handle::VertexBuffer:
setDebugObjectName(m_vertexBuffers[_handle.idx].m_ptr, "%s", _name);
break;
default:
BX_CHECK(false, "Invalid handle type?! %d", _handle.type);
break;

View File

@ -2985,6 +2985,10 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
{
switch (_handle.type)
{
case Handle::IndexBuffer:
GL_CHECK(glObjectLabel(GL_BUFFER, m_indexBuffers[_handle.idx].m_id, -1, _name) );
break;
case Handle::Shader:
GL_CHECK(glObjectLabel(GL_SHADER, m_shaders[_handle.idx].m_id, -1, _name) );
break;
@ -2993,6 +2997,10 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
GL_CHECK(glObjectLabel(GL_TEXTURE, m_textures[_handle.idx].m_id, -1, _name) );
break;
case Handle::VertexBuffer:
GL_CHECK(glObjectLabel(GL_BUFFER, m_vertexBuffers[_handle.idx].m_id, -1, _name) );
break;
default:
BX_CHECK(false, "Invalid handle type?! %d", _handle.type);
break;

View File

@ -1019,6 +1019,10 @@ namespace bgfx { namespace mtl
{
switch (_handle.type)
{
case Handle::IndexBuffer:
// m_indexBuffers[_handle.idx].m_ptr.setLabel(_name);
break;
case Handle::Shader:
m_shaders[_handle.idx].m_function.setLabel(_name);
break;
@ -1027,6 +1031,10 @@ namespace bgfx { namespace mtl
m_textures[_handle.idx].m_ptr.setLabel(_name);
break;
case Handle::VertexBuffer:
// m_vertexBuffers[_handle.idx].m_ptr.setLabel(_name);
break;
default:
BX_CHECK(false, "Invalid handle type?! %d", _handle.type);
break;
@ -2135,7 +2143,7 @@ namespace bgfx { namespace mtl
ComputePipelineReflection reflection = NULL;
pso->m_cps = m_device.newComputePipelineStateWithFunction(program.m_vsh->m_function, MTLPipelineOptionBufferTypeInfo, &reflection);
processArguments(pso, reflection.arguments, NULL);
for (uint32_t ii = 0; ii < 3; ++ii)
{
pso->m_numThreads[ii] = program.m_vsh->m_numThreads[ii];
@ -2378,7 +2386,7 @@ namespace bgfx { namespace mtl
bx::read(&reader, m_numThreads[ii]);
}
}
uint32_t shaderSize;
bx::read(&reader, shaderSize);