summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-01-04 11:24:11 -0800
committerGitHub <noreply@github.com>2022-01-04 11:24:11 -0800
commit43b6f5c36cbe2529d93df0e44e319a330487ed0d (patch)
treebb9399d71a505c007327080285ce2583d12bc576 /tools
parent9d6c7763334908c78027199a0cb1ca3b9841ebab (diff)
gfx: Fix root shader object implementation in debug layer. (#2059)
* gfx: Fix root shader object implementation in debug layer. * Fix. Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: Theresa Foley <tfoleyNV@users.noreply.github.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/gfx/debug-layer.cpp20
-rw-r--r--tools/gfx/debug-layer.h13
-rw-r--r--tools/platform/gui.cpp4
3 files changed, 32 insertions, 5 deletions
diff --git a/tools/gfx/debug-layer.cpp b/tools/gfx/debug-layer.cpp
index 97504017e..80c04bd1f 100644
--- a/tools/gfx/debug-layer.cpp
+++ b/tools/gfx/debug-layer.cpp
@@ -652,17 +652,26 @@ Result DebugDevice::createMutableShaderObject(
}
Result DebugDevice::createMutableRootShaderObject(
- IShaderProgram* program, IShaderObject** outObject)
+ IShaderProgram* program, IShaderObject** outRootObject)
{
SLANG_GFX_API_FUNC;
- return baseObject->createMutableRootShaderObject(program, outObject);
+ RefPtr<DebugShaderObject> outObject = new DebugShaderObject();
+ auto result = baseObject->createMutableRootShaderObject(
+ getInnerObj(program), outObject->baseObject.writeRef());
+ if (SLANG_FAILED(result))
+ return result;
+ outObject->m_device = this;
+ outObject->m_slangType = nullptr;
+ outObject->m_rootComponentType = getDebugObj(program)->m_slangProgram;
+ returnComPtr(outRootObject, outObject);
+ return result;
}
Result DebugDevice::createProgram(const IShaderProgram::Desc& desc, IShaderProgram** outProgram)
{
SLANG_GFX_API_FUNC;
- RefPtr<DebugShaderProgram> outObject = new DebugShaderProgram();
+ RefPtr<DebugShaderProgram> outObject = new DebugShaderProgram(desc);
auto result = baseObject->createProgram(desc, outObject->baseObject.writeRef());
if (SLANG_FAILED(result))
return result;
@@ -1836,4 +1845,9 @@ Result DebugFence::setCurrentValue(uint64_t value)
return baseObject->setCurrentValue(value);
}
+DebugShaderProgram::DebugShaderProgram(const IShaderProgram::Desc& desc)
+{
+ m_slangProgram = desc.slangProgram;
+}
+
} // namespace gfx
diff --git a/tools/gfx/debug-layer.h b/tools/gfx/debug-layer.h
index 35410530e..c5482da87 100644
--- a/tools/gfx/debug-layer.h
+++ b/tools/gfx/debug-layer.h
@@ -293,9 +293,18 @@ public:
setConstantBufferOverride(IBufferResource* constantBuffer) override;
public:
+ // Type name of an ordinary shader object.
Slang::String m_typeName;
+
+ // The slang Type of an ordinary shader object. This is null for root objects.
slang::TypeReflection* m_slangType = nullptr;
+
+ // The slang program from which a root shader object is created, this is null for ordinary
+ // objects.
+ Slang::ComPtr<slang::IComponentType> m_rootComponentType;
+
DebugDevice* m_device;
+
Slang::List<Slang::RefPtr<DebugShaderObject>> m_entryPoints;
Slang::Dictionary<ShaderOffsetKey, Slang::RefPtr<DebugShaderObject>> m_objects;
Slang::Dictionary<ShaderOffsetKey, Slang::RefPtr<DebugResourceView>> m_resources;
@@ -626,6 +635,10 @@ public:
public:
IShaderProgram* getInterface(const Slang::Guid& guid);
+ DebugShaderProgram(const IShaderProgram::Desc& desc);
+
+public:
+ Slang::ComPtr<slang::IComponentType> m_slangProgram;
};
class DebugTransientResourceHeap : public DebugObject<ITransientResourceHeap>
diff --git a/tools/platform/gui.cpp b/tools/platform/gui.cpp
index 31671c424..5b72bd087 100644
--- a/tools/platform/gui.cpp
+++ b/tools/platform/gui.cpp
@@ -292,8 +292,8 @@ void GUI::endFrame(ITransientResourceHeap* transientHeap, IFramebuffer* framebuf
indexBuffer, sizeof(ImDrawIdx) == 2 ? Format::R16_UINT : Format::R32_UINT);
renderEncoder->setPrimitiveTopology(PrimitiveTopology::TriangleList);
- UInt vertexOffset = 0;
- UInt indexOffset = 0;
+ uint32_t vertexOffset = 0;
+ uint32_t indexOffset = 0;
ImVec2 pos = draw_data->DisplayPos;
for(int ii = 0; ii < commandListCount; ++ii)
{