From 4aef0204ba18ffaa2498a907b2c66e69be808133 Mon Sep 17 00:00:00 2001 From: galop1n Date: Sun, 14 Aug 2016 13:58:08 -0700 Subject: [PATCH] Add serialize methods for more d3d types Add new d3d12 chunks (unused by that commit) D3D12_INDIRECT_ARGUMENT_TYPE D3D12_INDIRECT_ARGUMENT_DESC D3D12_HEAP_DESC D3D12_QUERY_HEAP_TYPE D3D12_QUERY_HEAP_DESC D3D12_COMMAND_SIGNATURE_DESC D3D12_INDIRECT_ARGUMENT_DESC --- renderdoc/driver/d3d12/d3d12_common.cpp | 96 +++++++++++++++++++++++++ renderdoc/driver/d3d12/d3d12_common.h | 14 ++++ 2 files changed, 110 insertions(+) diff --git a/renderdoc/driver/d3d12/d3d12_common.cpp b/renderdoc/driver/d3d12/d3d12_common.cpp index 4221cc83d..9501975ab 100644 --- a/renderdoc/driver/d3d12/d3d12_common.cpp +++ b/renderdoc/driver/d3d12/d3d12_common.cpp @@ -473,6 +473,68 @@ void Serialiser::Serialise(const char *name, D3D12_COMPUTE_PIPELINE_STATE_DESC & } } +string ToStrHelper::Get(const D3D12_INDIRECT_ARGUMENT_TYPE &el) +{ + switch(el) + { + TOSTR_CASE_STRINGIZE(D3D12_INDIRECT_ARGUMENT_TYPE_DRAW) + TOSTR_CASE_STRINGIZE(D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED) + TOSTR_CASE_STRINGIZE(D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH) + TOSTR_CASE_STRINGIZE(D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW) + TOSTR_CASE_STRINGIZE(D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW) + TOSTR_CASE_STRINGIZE(D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT) + TOSTR_CASE_STRINGIZE(D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW) + TOSTR_CASE_STRINGIZE(D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW) + TOSTR_CASE_STRINGIZE(D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW) + default: break; + } + + return StringFormat::Fmt("D3D12_INDIRECT_ARGUMENT_TYPE<%d>", el); +} + +template <> +void Serialiser::Serialise(const char *name, D3D12_INDIRECT_ARGUMENT_DESC &el) +{ + ScopedContext scope(this, name, "D3D12_INDIRECT_ARGUMENT_DESC", 0, true); + + Serialise("Type", el.Type); + switch(el.Type) + { + case D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW: + Serialise("Slot", el.VertexBuffer.Slot); + break; + case D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT: + Serialise("RootParameterIndex", el.Constant.RootParameterIndex); + Serialise("DestOffsetIn32BitValues", el.Constant.DestOffsetIn32BitValues); + Serialise("Num32BitValuesToSet", el.Constant.Num32BitValuesToSet); + break; + case D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW: + Serialise("RootParameterIndex", el.ConstantBufferView.RootParameterIndex); + break; + case D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW: + Serialise("RootParameterIndex", el.ShaderResourceView.RootParameterIndex); + break; + case D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW: + Serialise("RootParameterIndex", el.UnorderedAccessView.RootParameterIndex); + break; + default: + // all other commands have no additional attributes + break; + } +} + +template <> +void Serialiser::Serialise(const char *name, D3D12_COMMAND_SIGNATURE_DESC &el) +{ + ScopedContext scope(this, name, "D3D12_COMMAND_SIGNATURE_DESC", 0, true); + + Serialise("ByteStride", el.ByteStride); + Serialise("NodeMask", el.NodeMask); + + SerialiseComplexArray("pArgumentDescs", (D3D12_INDIRECT_ARGUMENT_DESC *&)el.pArgumentDescs, + el.NumArgumentDescs); +} + template <> void Serialiser::Serialise(const char *name, D3D12_VERTEX_BUFFER_VIEW &el) { @@ -797,6 +859,26 @@ void Serialiser::Serialise(const char *name, D3D12_RESOURCE_BARRIER &el) } } +template <> +void Serialiser::Serialise(const char *name, D3D12_HEAP_DESC &el) +{ + ScopedContext scope(this, name, "D3D12_HEAP_DESC", 0, true); + + Serialise("SizeInBytes", el.SizeInBytes); + Serialise("Properties", el.Properties); + Serialise("Alignment", el.Alignment); + Serialise("Flags", el.Flags); +} + +template <> +void Serialiser::Serialise(const char *name, D3D12_QUERY_HEAP_DESC &el) +{ + ScopedContext scope(this, name, "D3D12_QUERY_HEAP_DESC", 0, true); + + Serialise("Type", el.Type); + Serialise("Count", el.Count); + Serialise("NodeMask", el.NodeMask); +} template <> void Serialiser::Serialise(const char *name, D3D12_HEAP_PROPERTIES &el) { @@ -926,6 +1008,20 @@ string ToStrHelper::Get(const D3D12_HEAP_TYPE &el) return StringFormat::Fmt("D3D12_HEAP_TYPE<%d>", el); } +string ToStrHelper::Get(const D3D12_QUERY_HEAP_TYPE &el) +{ + switch(el) + { + TOSTR_CASE_STRINGIZE(D3D12_QUERY_HEAP_TYPE_OCCLUSION) + TOSTR_CASE_STRINGIZE(D3D12_QUERY_HEAP_TYPE_TIMESTAMP) + TOSTR_CASE_STRINGIZE(D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS) + TOSTR_CASE_STRINGIZE(D3D12_QUERY_HEAP_TYPE_SO_STATISTICS) + default: break; + } + + return StringFormat::Fmt("D3D12_QUERY_HEAP_TYPE<%d>", el); +} + string ToStrHelper::Get(const D3D12_CPU_PAGE_PROPERTY &el) { switch(el) diff --git a/renderdoc/driver/d3d12/d3d12_common.h b/renderdoc/driver/d3d12/d3d12_common.h index 994aabc61..b70c28603 100644 --- a/renderdoc/driver/d3d12/d3d12_common.h +++ b/renderdoc/driver/d3d12/d3d12_common.h @@ -175,6 +175,10 @@ void Serialiser::Serialise(const char *name, D3D12_VERTEX_BUFFER_VIEW &el); template <> void Serialiser::Serialise(const char *name, D3D12_RESOURCE_BARRIER &el); template <> +void Serialiser::Serialise(const char *name, D3D12_HEAP_DESC &el); +template <> +void Serialiser::Serialise(const char *name, D3D12_QUERY_HEAP_DESC &el); +template <> void Serialiser::Serialise(const char *name, D3D12_HEAP_PROPERTIES &el); template <> void Serialiser::Serialise(const char *name, D3D12_DESCRIPTOR_HEAP_DESC &el); @@ -192,6 +196,10 @@ template <> void Serialiser::Serialise(const char *name, D3D12_UNORDERED_ACCESS_VIEW_DESC &el); template <> void Serialiser::Serialise(const char *name, D3D12_CLEAR_VALUE &el); +template <> +void Serialiser::Serialise(const char *name, D3D12_COMMAND_SIGNATURE_DESC &el); +template <> +void Serialiser::Serialise(const char *name, D3D12_INDIRECT_ARGUMENT_DESC &el); struct D3D12Descriptor; template <> @@ -226,8 +234,14 @@ void Serialiser::Serialise(const char *name, D3D12Descriptor &el); D3D12_CHUNK_MACRO(CREATE_COMPUTE_PIPE, "ID3D12Device::CreateComputePipeline") \ D3D12_CHUNK_MACRO(CREATE_DESCRIPTOR_HEAP, "ID3D12Device::CreateDescriptorHeap") \ D3D12_CHUNK_MACRO(CREATE_ROOT_SIG, "ID3D12Device::CreateRootSignature") \ + D3D12_CHUNK_MACRO(CREATE_COMMAND_SIGNATURE, "ID3D12Device::CreateCommandSignature") \ + \ + D3D12_CHUNK_MACRO(CREATE_HEAP, "ID3D12Device::CreateHeap") \ + D3D12_CHUNK_MACRO(CREATE_QUERY_HEAP, "ID3D12Device::CreateQueryHeap") \ \ D3D12_CHUNK_MACRO(CREATE_COMMITTED_RESOURCE, "ID3D12Device::CreateCommittedResource") \ + D3D12_CHUNK_MACRO(CREATE_PLACED_RESOURCE, "ID3D12Device::CreatePlacedResource") \ + D3D12_CHUNK_MACRO(CREATE_RESERVED_RESOURCE, "ID3D12Device::CreateReservedResource") \ \ D3D12_CHUNK_MACRO(CREATE_FENCE, "ID3D12Device::CreateFence") \ \