Add name of the batch during tracing and introduce detailed tracing if needed and one error message in the case the materialMap is detected in an fst file but not understood

This commit is contained in:
Sam Gateau 2018-09-14 20:24:22 -07:00
parent 86972cf4fb
commit 986dece4ec
3 changed files with 101 additions and 1 deletions

View file

@ -128,7 +128,11 @@ void FBXReader::consolidateFBXMaterials(const QVariantHash& mapping) {
QString materialMapString = mapping.value("materialMap").toString();
QJsonDocument materialMapDocument = QJsonDocument::fromJson(materialMapString.toUtf8());
QJsonObject materialMap = materialMapDocument.object();
if (!materialMapString.isEmpty()) {
if (materialMapDocument.isEmpty() || materialMap.isEmpty()) {
qCDebug(modelformat) << "fbx Material Map found but did not produce valid JSON:" << materialMapString;
}
}
for (QHash<QString, FBXMaterial>::iterator it = _fbxMaterials.begin(); it != _fbxMaterials.end(); it++) {
FBXMaterial& material = (*it);

View file

@ -20,6 +20,9 @@
#include "nvToolsExt.h"
#endif
// Define the GPU_BATCH_DETAILED_TRACING to get detailed tracing of the commands during the batch executions
// #define GPU_BATCH_DETAILED_TRACING
#include <GPUIdent.h>
#include "GLTexture.h"
@ -271,6 +274,8 @@ void GLBackend::renderPassDraw(const Batch& batch) {
case Batch::COMMAND_drawIndexedInstanced:
case Batch::COMMAND_multiDrawIndirect:
case Batch::COMMAND_multiDrawIndexedIndirect: {
PROFILE_RANGE(render_gpu_gl_detail, "drawcall");
// updates for draw calls
++_currentDraw;
updateInput();
@ -281,6 +286,94 @@ void GLBackend::renderPassDraw(const Batch& batch) {
(this->*(call))(batch, *offset);
break;
}
#ifdef GPU_BATCH_DETAILED_TRACING
//case Batch::COMMAND_setModelTransform:
//case Batch::COMMAND_setViewTransform:
//case Batch::COMMAND_setProjectionTransform:
case Batch::COMMAND_setProjectionJitter:
case Batch::COMMAND_setViewportTransform:
case Batch::COMMAND_setDepthRangeTransform:
{
PROFILE_RANGE(render_gpu_gl_detail, "transform");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
case Batch::COMMAND_clearFramebuffer:
{
PROFILE_RANGE(render_gpu_gl_detail, "clear");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
case Batch::COMMAND_blit:
{
PROFILE_RANGE(render_gpu_gl_detail, "blit");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
case Batch::COMMAND_setInputFormat:
case Batch::COMMAND_setInputBuffer:
case Batch::COMMAND_setIndexBuffer:
case Batch::COMMAND_setIndirectBuffer: {
PROFILE_RANGE(render_gpu_gl_detail, "input");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
case Batch::COMMAND_setStateBlendFactor:
case Batch::COMMAND_setStateScissorRect:
case Batch::COMMAND_setPipeline: {
PROFILE_RANGE(render_gpu_gl_detail, "pipeline");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
case Batch::COMMAND_setUniformBuffer:
{
PROFILE_RANGE(render_gpu_gl_detail, "ubo");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
case Batch::COMMAND_setResourceBuffer:
case Batch::COMMAND_setResourceTexture:
case Batch::COMMAND_setResourceTextureTable:
{
PROFILE_RANGE(render_gpu_gl_detail, "resource");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
case Batch::COMMAND_setResourceFramebufferSwapChainTexture:
case Batch::COMMAND_setFramebuffer:
case Batch::COMMAND_setFramebufferSwapChain:
{
PROFILE_RANGE(render_gpu_gl_detail, "framebuffer");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
case Batch::COMMAND_generateTextureMips:
{
PROFILE_RANGE(render_gpu_gl_detail, "genMipMaps");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
case Batch::COMMAND_beginQuery:
case Batch::COMMAND_endQuery:
case Batch::COMMAND_getQuery:
{
PROFILE_RANGE(render_gpu_gl_detail, "query");
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
break;
}
#endif
default: {
CommandCall call = _commandCalls[(*command)];
(this->*(call))(batch, *offset);
@ -294,6 +387,8 @@ void GLBackend::renderPassDraw(const Batch& batch) {
}
void GLBackend::render(const Batch& batch) {
PROFILE_RANGE(render_gpu_gl, batch.getName());
_transform._skybox = _stereo._skybox = batch.isSkyboxEnabled();
// Allow the batch to override the rendering stereo settings
// for things like full framebuffer copy operations (deferred lighting passes)

View file

@ -95,6 +95,7 @@ public:
~Batch();
void setName(const char* name);
const char* getName() const { return _name; }
void clear();
// Batches may need to override the context level stereo settings