From 34fba7b5e726136c6eee8a318ab9a75381399c00 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 20 Apr 2021 13:17:29 -0700 Subject: Various fixes to make `model-viewer` example almost working. (#1801) * Fixing `PseudoPtr` legalization and `gfx` lifetime issues. * Fixing `model-viewer` example. This change contains various fixes to bring `model-viewer` example to fully functional. These fixes include: 1. Add `spReflectionTypeLayout_getSubObjectRangeSpaceOffset` function to return the space index for a sub object referenced through a `ParameterBlock` binding. 2. Make sure `D3D12Device` specifies column major matrix order creating a Slang session. 3. Fix `platform::Window::close()` and `platform::Application::quit()`. 4. Fix memory leak during `model-viewer''s model loading. 5. Fix command buffer recording in `model-viewer`. With these changes, model viewer can now produce an image with a gray cube. The lighting is still incorrect becuase the `gfx` shader object implementation still does not handle "pending layout" resulting from global existential parameters. * Fix d3d12 root signature creation. * Use row-major matrix layout in model-viewer --- tools/gfx/vulkan/render-vk.cpp | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) (limited to 'tools/gfx/vulkan/render-vk.cpp') diff --git a/tools/gfx/vulkan/render-vk.cpp b/tools/gfx/vulkan/render-vk.cpp index 2ce51790a..315c8d7ce 100644 --- a/tools/gfx/vulkan/render-vk.cpp +++ b/tools/gfx/vulkan/render-vk.cpp @@ -153,16 +153,8 @@ public: const VulkanApi* m_api; }; - class InputLayoutImpl : public IInputLayout, public ComObject + class InputLayoutImpl : public InputLayoutBase { - public: - SLANG_COM_OBJECT_IUNKNOWN_ALL - IInputLayout* getInterface(const Guid& guid) - { - if (guid == GfxGUID::IID_ISlangUnknown || guid == GfxGUID::IID_IInputLayout) - return static_cast(this); - return nullptr; - } public: List m_vertexDescs; int m_vertexSize; @@ -310,19 +302,8 @@ public: VkDeviceSize size; }; - class FramebufferLayoutImpl - : public IFramebufferLayout - , public ComObject + class FramebufferLayoutImpl : public FramebufferLayoutBase { - public: - SLANG_COM_OBJECT_IUNKNOWN_ALL - IFramebufferLayout* getInterface(const Guid& guid) - { - if (guid == GfxGUID::IID_ISlangUnknown || guid == GfxGUID::IID_IFramebufferLayout) - return static_cast(this); - return nullptr; - } - public: VkRenderPass m_renderPass; RefPtr m_renderer; -- cgit v1.2.3