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
This commit is contained in:
galop1n
2016-08-14 13:58:08 -07:00
parent 46c6d6ca59
commit 4aef0204ba
2 changed files with 110 additions and 0 deletions
+96
View File
@@ -473,6 +473,68 @@ void Serialiser::Serialise(const char *name, D3D12_COMPUTE_PIPELINE_STATE_DESC &
}
}
string ToStrHelper<false, D3D12_INDIRECT_ARGUMENT_TYPE>::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<false, D3D12_HEAP_TYPE>::Get(const D3D12_HEAP_TYPE &el)
return StringFormat::Fmt("D3D12_HEAP_TYPE<%d>", el);
}
string ToStrHelper<false, D3D12_QUERY_HEAP_TYPE>::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<false, D3D12_CPU_PAGE_PROPERTY>::Get(const D3D12_CPU_PAGE_PROPERTY &el)
{
switch(el)
+14
View File
@@ -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") \
\