mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-12 21:10:42 +00:00
Add serialization for state object desc
Co-authored-by: Nate, High <nate.high@amd.com>
This commit is contained in:
@@ -815,6 +815,12 @@ DECLARE_REFLECTION_ENUM(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE);
|
||||
DECLARE_REFLECTION_ENUM(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS);
|
||||
DECLARE_REFLECTION_ENUM(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE);
|
||||
DECLARE_REFLECTION_ENUM(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE);
|
||||
DECLARE_REFLECTION_ENUM(D3D12_STATE_OBJECT_TYPE);
|
||||
DECLARE_REFLECTION_ENUM(D3D12_STATE_SUBOBJECT_TYPE);
|
||||
DECLARE_REFLECTION_ENUM(D3D12_STATE_OBJECT_FLAGS);
|
||||
DECLARE_REFLECTION_ENUM(D3D12_EXPORT_FLAGS);
|
||||
DECLARE_REFLECTION_ENUM(D3D12_HIT_GROUP_TYPE);
|
||||
DECLARE_REFLECTION_ENUM(D3D12_RAYTRACING_PIPELINE_FLAGS);
|
||||
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_RESOURCE_DESC);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_COMMAND_QUEUE_DESC);
|
||||
@@ -941,6 +947,21 @@ DECLARE_REFLECTION_STRUCT(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_STATE_OBJECT_DESC);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_STATE_SUBOBJECT);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_STATE_OBJECT_CONFIG);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_GLOBAL_ROOT_SIGNATURE);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_LOCAL_ROOT_SIGNATURE);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_NODE_MASK);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_DXIL_LIBRARY_DESC);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_EXISTING_COLLECTION_DESC);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_RAYTRACING_SHADER_CONFIG);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_RAYTRACING_PIPELINE_CONFIG);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_HIT_GROUP_DESC);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_RAYTRACING_PIPELINE_CONFIG1);
|
||||
DECLARE_REFLECTION_STRUCT(D3D12_EXPORT_DESC);
|
||||
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_DISCARD_REGION);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_GRAPHICS_PIPELINE_STATE_DESC);
|
||||
@@ -951,6 +972,13 @@ DECLARE_DESERIALISE_TYPE(D3D12_RENDER_PASS_RENDER_TARGET_DESC);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_RENDER_PASS_DEPTH_STENCIL_DESC);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_BARRIER_GROUP);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_STATE_OBJECT_DESC);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_DXIL_LIBRARY_DESC);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_EXISTING_COLLECTION_DESC);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_HIT_GROUP_DESC);
|
||||
DECLARE_DESERIALISE_TYPE(D3D12_EXPORT_DESC);
|
||||
|
||||
enum class D3D12Chunk : uint32_t
|
||||
{
|
||||
|
||||
@@ -49,6 +49,7 @@ enum D3D12ResourceType
|
||||
Resource_PipelineLibrary,
|
||||
Resource_ProtectedResourceSession,
|
||||
Resource_ShaderCacheSession,
|
||||
Resource_StateObject
|
||||
};
|
||||
|
||||
DECLARE_REFLECTION_ENUM(D3D12ResourceType);
|
||||
|
||||
@@ -27,6 +27,18 @@
|
||||
#include "d3d12_common.h"
|
||||
#include "d3d12_resources.h"
|
||||
|
||||
wchar_t *AllocateWideCharArray(rdcstr src)
|
||||
{
|
||||
if(src.empty())
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
rdcwstr wstr = StringFormat::UTF82Wide(src);
|
||||
wchar_t *dest = new wchar_t[wstr.length() + 1];
|
||||
wcscpy_s(dest, wstr.length() + 1, wstr.c_str());
|
||||
return dest;
|
||||
}
|
||||
|
||||
// some helper enums with custom stringise to handle special cases
|
||||
enum D3D12ResourceBarrierSubresource
|
||||
{
|
||||
@@ -1973,6 +1985,410 @@ void DoSerialise(SerialiserType &ser, D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SR
|
||||
SERIALISE_MEMBER_TYPED(D3D12BufferLocation, Location);
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_STATE_OBJECT_DESC &el)
|
||||
{
|
||||
SERIALISE_MEMBER(Type);
|
||||
SERIALISE_MEMBER(NumSubobjects);
|
||||
|
||||
if(ser.IsReading())
|
||||
{
|
||||
el.pSubobjects = new D3D12_STATE_SUBOBJECT[el.NumSubobjects];
|
||||
}
|
||||
|
||||
ser.SetStructArg((uintptr_t)el.pSubobjects);
|
||||
ser.Serialise("pSubobjects"_lit, el.pSubobjects, el.NumSubobjects);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const D3D12_STATE_OBJECT_DESC &el)
|
||||
{
|
||||
for(size_t i = 0; i < el.NumSubobjects; i++)
|
||||
{
|
||||
if(el.pSubobjects[i].pDesc != NULL)
|
||||
{
|
||||
switch(el.pSubobjects[i].Type)
|
||||
{
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG:
|
||||
{
|
||||
D3D12_STATE_OBJECT_CONFIG *temp = (D3D12_STATE_OBJECT_CONFIG *)el.pSubobjects[i].pDesc;
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE:
|
||||
{
|
||||
D3D12_GLOBAL_ROOT_SIGNATURE *temp = (D3D12_GLOBAL_ROOT_SIGNATURE *)el.pSubobjects[i].pDesc;
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE:
|
||||
{
|
||||
D3D12_LOCAL_ROOT_SIGNATURE *temp = (D3D12_LOCAL_ROOT_SIGNATURE *)el.pSubobjects[i].pDesc;
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK:
|
||||
{
|
||||
D3D12_NODE_MASK *temp = (D3D12_NODE_MASK *)el.pSubobjects[i].pDesc;
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY:
|
||||
{
|
||||
D3D12_DXIL_LIBRARY_DESC *temp = (D3D12_DXIL_LIBRARY_DESC *)el.pSubobjects[i].pDesc;
|
||||
Deserialise(*temp);
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION:
|
||||
{
|
||||
D3D12_EXISTING_COLLECTION_DESC *temp =
|
||||
(D3D12_EXISTING_COLLECTION_DESC *)el.pSubobjects[i].pDesc;
|
||||
Deserialise(*temp);
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION:
|
||||
{
|
||||
D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION *temp =
|
||||
(D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION *)el.pSubobjects[i].pDesc;
|
||||
Deserialise(*temp);
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION:
|
||||
{
|
||||
D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION *temp =
|
||||
(D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION *)el.pSubobjects[i].pDesc;
|
||||
Deserialise(*temp);
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG:
|
||||
{
|
||||
D3D12_RAYTRACING_SHADER_CONFIG *temp =
|
||||
(D3D12_RAYTRACING_SHADER_CONFIG *)el.pSubobjects[i].pDesc;
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG:
|
||||
{
|
||||
D3D12_RAYTRACING_PIPELINE_CONFIG *temp =
|
||||
(D3D12_RAYTRACING_PIPELINE_CONFIG *)el.pSubobjects[i].pDesc;
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP:
|
||||
{
|
||||
D3D12_HIT_GROUP_DESC *temp = (D3D12_HIT_GROUP_DESC *)el.pSubobjects[i].pDesc;
|
||||
Deserialise(*temp);
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1:
|
||||
{
|
||||
D3D12_RAYTRACING_PIPELINE_CONFIG1 *temp =
|
||||
(D3D12_RAYTRACING_PIPELINE_CONFIG1 *)el.pSubobjects[i].pDesc;
|
||||
delete temp;
|
||||
break;
|
||||
}
|
||||
default: RDCERR("Unsupported state sub-object type"); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delete[] el.pSubobjects;
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_STATE_SUBOBJECT &el)
|
||||
{
|
||||
SERIALISE_MEMBER(Type);
|
||||
|
||||
switch(el.Type)
|
||||
{
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_STATE_OBJECT_CONFIG *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_GLOBAL_ROOT_SIGNATURE *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_LOCAL_ROOT_SIGNATURE *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_NODE_MASK *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_DXIL_LIBRARY_DESC *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_EXISTING_COLLECTION_DESC *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_RAYTRACING_SHADER_CONFIG *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_RAYTRACING_PIPELINE_CONFIG *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_HIT_GROUP_DESC *&)el.pDesc);
|
||||
break;
|
||||
case D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1:
|
||||
ser.SerialiseNullable("pDesc"_lit, (D3D12_RAYTRACING_PIPELINE_CONFIG1 *&)el.pDesc);
|
||||
break;
|
||||
default: RDCERR("Unsupported state sub-object type"); break;
|
||||
}
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_STATE_OBJECT_CONFIG &el)
|
||||
{
|
||||
SERIALISE_MEMBER(Flags);
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_GLOBAL_ROOT_SIGNATURE &el)
|
||||
{
|
||||
SERIALISE_MEMBER(pGlobalRootSignature);
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_LOCAL_ROOT_SIGNATURE &el)
|
||||
{
|
||||
SERIALISE_MEMBER(pLocalRootSignature);
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_NODE_MASK &el)
|
||||
{
|
||||
SERIALISE_MEMBER(NodeMask);
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_DXIL_LIBRARY_DESC &el)
|
||||
{
|
||||
SERIALISE_MEMBER(DXILLibrary);
|
||||
SERIALISE_MEMBER(NumExports);
|
||||
SERIALISE_MEMBER_ARRAY(pExports, NumExports);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const D3D12_DXIL_LIBRARY_DESC &el)
|
||||
{
|
||||
FreeAlignedBuffer((byte *)(el.DXILLibrary.pShaderBytecode));
|
||||
for(size_t i = 0; i < el.NumExports; i++)
|
||||
{
|
||||
Deserialise(el.pExports[i]);
|
||||
}
|
||||
delete[] el.pExports;
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_EXISTING_COLLECTION_DESC &el)
|
||||
{
|
||||
// AMD TODO
|
||||
RDCERR("D3D12_EXISTING_COLLECTION_DESC serialization is not handled");
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const D3D12_EXISTING_COLLECTION_DESC &el)
|
||||
{
|
||||
// AMD TODO
|
||||
RDCERR("D3D12_EXISTING_COLLECTION_DESC de-serialization is not handled");
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION &el)
|
||||
{
|
||||
uint64_t subobjectToAssociateIndex;
|
||||
rdcarray<rdcstr> exports;
|
||||
|
||||
if(ser.IsWriting())
|
||||
{
|
||||
subobjectToAssociateIndex =
|
||||
el.pSubobjectToAssociate - (D3D12_STATE_SUBOBJECT *)ser.GetStructArg();
|
||||
|
||||
exports.resize(el.NumExports);
|
||||
for(size_t i = 0; i < el.NumExports; i++)
|
||||
{
|
||||
exports[i] = StringFormat::Wide2UTF8(el.pExports[i]);
|
||||
}
|
||||
}
|
||||
|
||||
SERIALISE_ELEMENT(subobjectToAssociateIndex).Named("pSubobjectToAssociate");
|
||||
SERIALISE_MEMBER(NumExports);
|
||||
SERIALISE_ELEMENT(exports).Named("pExports");
|
||||
|
||||
if(ser.IsReading())
|
||||
{
|
||||
#if ENABLED(RDOC_WIN32)
|
||||
RDCASSERT(subobjectToAssociateIndex == (uintptr_t)subobjectToAssociateIndex);
|
||||
#endif
|
||||
el.pSubobjectToAssociate =
|
||||
(D3D12_STATE_SUBOBJECT *)ser.GetStructArg() + subobjectToAssociateIndex;
|
||||
|
||||
el.pExports = new LPCWSTR[el.NumExports];
|
||||
for(size_t i = 0; i < el.NumExports; i++)
|
||||
{
|
||||
el.pExports[i] = AllocateWideCharArray(exports[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION &el)
|
||||
{
|
||||
for(size_t i = 0; i < el.NumExports; i++)
|
||||
{
|
||||
delete[] el.pExports[i];
|
||||
}
|
||||
delete[] el.pExports;
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION &el)
|
||||
{
|
||||
rdcstr subobjectToAssociate;
|
||||
rdcarray<rdcstr> exports;
|
||||
|
||||
if(ser.IsWriting())
|
||||
{
|
||||
subobjectToAssociate =
|
||||
el.SubobjectToAssociate ? StringFormat::Wide2UTF8(el.SubobjectToAssociate) : "";
|
||||
|
||||
exports.resize(el.NumExports);
|
||||
for(size_t i = 0; i < el.NumExports; i++)
|
||||
{
|
||||
exports[i] = StringFormat::Wide2UTF8(el.pExports[i]);
|
||||
}
|
||||
}
|
||||
|
||||
SERIALISE_ELEMENT(subobjectToAssociate).Named("SubobjectToAssociate");
|
||||
SERIALISE_MEMBER(NumExports);
|
||||
SERIALISE_ELEMENT(exports).Named("pExports");
|
||||
|
||||
if(ser.IsReading())
|
||||
{
|
||||
el.SubobjectToAssociate = AllocateWideCharArray(subobjectToAssociate);
|
||||
|
||||
el.pExports = new LPCWSTR[el.NumExports];
|
||||
for(size_t i = 0; i < el.NumExports; i++)
|
||||
{
|
||||
el.pExports[i] = AllocateWideCharArray(exports[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION &el)
|
||||
{
|
||||
delete[] el.SubobjectToAssociate;
|
||||
for(size_t i = 0; i < el.NumExports; i++)
|
||||
{
|
||||
delete[] el.pExports[i];
|
||||
}
|
||||
delete[] el.pExports;
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_RAYTRACING_SHADER_CONFIG &el)
|
||||
{
|
||||
SERIALISE_MEMBER(MaxPayloadSizeInBytes);
|
||||
SERIALISE_MEMBER(MaxAttributeSizeInBytes);
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_RAYTRACING_PIPELINE_CONFIG &el)
|
||||
{
|
||||
SERIALISE_MEMBER(MaxTraceRecursionDepth);
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_HIT_GROUP_DESC &el)
|
||||
{
|
||||
rdcstr hitGroupExport;
|
||||
rdcstr anyHitShaderImport;
|
||||
rdcstr closestHitShaderImport;
|
||||
rdcstr intersectionShaderImport;
|
||||
|
||||
if(ser.IsWriting())
|
||||
{
|
||||
hitGroupExport = el.HitGroupExport ? StringFormat::Wide2UTF8(el.HitGroupExport) : "";
|
||||
anyHitShaderImport = el.AnyHitShaderImport ? StringFormat::Wide2UTF8(el.AnyHitShaderImport) : "";
|
||||
closestHitShaderImport =
|
||||
el.ClosestHitShaderImport ? StringFormat::Wide2UTF8(el.ClosestHitShaderImport) : "";
|
||||
intersectionShaderImport =
|
||||
el.IntersectionShaderImport ? StringFormat::Wide2UTF8(el.IntersectionShaderImport) : "";
|
||||
}
|
||||
|
||||
SERIALISE_ELEMENT(hitGroupExport).Named("HitGroupExport");
|
||||
SERIALISE_MEMBER(Type);
|
||||
SERIALISE_ELEMENT(anyHitShaderImport).Named("AnyHitShaderImport");
|
||||
SERIALISE_ELEMENT(closestHitShaderImport).Named("ClosestHitShaderImport");
|
||||
SERIALISE_ELEMENT(intersectionShaderImport).Named("IntersectionShaderImport");
|
||||
|
||||
if(ser.IsReading())
|
||||
{
|
||||
el.HitGroupExport = AllocateWideCharArray(hitGroupExport);
|
||||
el.AnyHitShaderImport = AllocateWideCharArray(anyHitShaderImport);
|
||||
el.ClosestHitShaderImport = AllocateWideCharArray(closestHitShaderImport);
|
||||
el.IntersectionShaderImport = AllocateWideCharArray(intersectionShaderImport);
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const D3D12_HIT_GROUP_DESC &el)
|
||||
{
|
||||
delete[] el.HitGroupExport;
|
||||
delete[] el.AnyHitShaderImport;
|
||||
delete[] el.ClosestHitShaderImport;
|
||||
delete[] el.IntersectionShaderImport;
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_RAYTRACING_PIPELINE_CONFIG1 &el)
|
||||
{
|
||||
SERIALISE_MEMBER(MaxTraceRecursionDepth);
|
||||
SERIALISE_MEMBER(Flags);
|
||||
}
|
||||
|
||||
template <class SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12_EXPORT_DESC &el)
|
||||
{
|
||||
rdcstr name;
|
||||
rdcstr exportToRename;
|
||||
|
||||
if(ser.IsWriting())
|
||||
{
|
||||
name = el.Name ? StringFormat::Wide2UTF8(el.Name) : "";
|
||||
exportToRename = el.ExportToRename ? StringFormat::Wide2UTF8(el.ExportToRename) : "";
|
||||
}
|
||||
|
||||
SERIALISE_ELEMENT(name).Named("Name");
|
||||
SERIALISE_ELEMENT(exportToRename).Named("ExportToRename");
|
||||
SERIALISE_MEMBER(Flags);
|
||||
|
||||
if(ser.IsReading())
|
||||
{
|
||||
el.Name = AllocateWideCharArray(name);
|
||||
el.ExportToRename = AllocateWideCharArray(exportToRename);
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const D3D12_EXPORT_DESC &el)
|
||||
{
|
||||
delete[] el.Name;
|
||||
delete[] el.ExportToRename;
|
||||
}
|
||||
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12RootSignature);
|
||||
INSTANTIATE_SERIALISE_TYPE(PortableHandle);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_CPU_DESCRIPTOR_HANDLE);
|
||||
@@ -2042,3 +2458,18 @@ INSTANTIATE_SERIALISE_TYPE(D3D12_RAYTRACING_GEOMETRY_AABBS_DESC);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_STATE_OBJECT_DESC);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_STATE_SUBOBJECT);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_STATE_OBJECT_CONFIG);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_GLOBAL_ROOT_SIGNATURE);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_LOCAL_ROOT_SIGNATURE);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_NODE_MASK);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_DXIL_LIBRARY_DESC);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_EXISTING_COLLECTION_DESC);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_RAYTRACING_SHADER_CONFIG);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_RAYTRACING_PIPELINE_CONFIG);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_HIT_GROUP_DESC);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_RAYTRACING_PIPELINE_CONFIG1);
|
||||
INSTANTIATE_SERIALISE_TYPE(D3D12_EXPORT_DESC);
|
||||
@@ -1546,3 +1546,82 @@ rdcstr DoStringise(const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE &el)
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const D3D12_STATE_SUBOBJECT_TYPE &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(D3D12_STATE_SUBOBJECT_TYPE);
|
||||
{
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1);
|
||||
STRINGISE_ENUM(D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const D3D12_STATE_OBJECT_FLAGS &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(D3D12_STATE_OBJECT_FLAGS);
|
||||
{
|
||||
STRINGISE_ENUM(D3D12_STATE_OBJECT_FLAG_NONE);
|
||||
STRINGISE_ENUM(D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS);
|
||||
STRINGISE_ENUM(D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS);
|
||||
STRINGISE_ENUM(D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const D3D12_EXPORT_FLAGS &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(D3D12_EXPORT_FLAGS);
|
||||
{
|
||||
STRINGISE_ENUM(D3D12_EXPORT_FLAG_NONE);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const D3D12_HIT_GROUP_TYPE &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(D3D12_HIT_GROUP_TYPE);
|
||||
{
|
||||
STRINGISE_ENUM(D3D12_HIT_GROUP_TYPE_TRIANGLES);
|
||||
STRINGISE_ENUM(D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const D3D12_RAYTRACING_PIPELINE_FLAGS &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(D3D12_RAYTRACING_PIPELINE_FLAGS);
|
||||
{
|
||||
STRINGISE_ENUM(D3D12_RAYTRACING_PIPELINE_FLAG_NONE);
|
||||
STRINGISE_ENUM(D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES);
|
||||
STRINGISE_ENUM(D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const D3D12_STATE_OBJECT_TYPE &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(D3D12_STATE_OBJECT_TYPE);
|
||||
{
|
||||
STRINGISE_ENUM(D3D12_STATE_OBJECT_TYPE_COLLECTION);
|
||||
STRINGISE_ENUM(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
Reference in New Issue
Block a user