diff --git a/renderdoc/driver/d3d11/d3d11_common.cpp b/renderdoc/driver/d3d11/d3d11_common.cpp index 1d814132c..d63eb88ca 100644 --- a/renderdoc/driver/d3d11/d3d11_common.cpp +++ b/renderdoc/driver/d3d11/d3d11_common.cpp @@ -1157,6 +1157,53 @@ void Serialiser::Serialise(const char *name, D3D11_RENDER_TARGET_VIEW_DESC &el) } } +template <> +void Serialiser::Serialise(const char *name, D3D11_RENDER_TARGET_VIEW_DESC1 &el) +{ + ScopedContext scope(this, name, "D3D11_RENDER_TARGET_VIEW_DESC1", 0, true); + Serialise("Format", el.Format); + Serialise("ViewDimension", el.ViewDimension); + + switch(el.ViewDimension) + { + case D3D11_RTV_DIMENSION_BUFFER: + Serialise("Buffer.FirstElement", el.Buffer.FirstElement); + Serialise("Buffer.NumElements", el.Buffer.NumElements); + break; + case D3D11_RTV_DIMENSION_TEXTURE1D: + Serialise("Texture1D.MipSlice", el.Texture1D.MipSlice); + break; + case D3D11_RTV_DIMENSION_TEXTURE1DARRAY: + Serialise("Texture1DArray.MipSlice", el.Texture1DArray.MipSlice); + Serialise("Texture1DArray.ArraySize", el.Texture1DArray.ArraySize); + Serialise("Texture1DArray.FirstArraySlice", el.Texture1DArray.FirstArraySlice); + break; + case D3D11_RTV_DIMENSION_TEXTURE2D: + Serialise("Texture2D.MipSlice", el.Texture2D.MipSlice); + Serialise("Texture2D.PlaneSlice", el.Texture2D.PlaneSlice); + break; + case D3D11_RTV_DIMENSION_TEXTURE2DARRAY: + Serialise("Texture2DArray.MipSlice", el.Texture2DArray.MipSlice); + Serialise("Texture2DArray.ArraySize", el.Texture2DArray.ArraySize); + Serialise("Texture2DArray.FirstArraySlice", el.Texture2DArray.FirstArraySlice); + Serialise("Texture2DArray.PlaneSlice", el.Texture2DArray.PlaneSlice); + break; + case D3D11_RTV_DIMENSION_TEXTURE2DMS: + // el.Texture2DMS.UnusedField_NothingToDefine + break; + case D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY: + Serialise("Texture2DMSArray.ArraySize", el.Texture2DMSArray.ArraySize); + Serialise("Texture2DMSArray.FirstArraySlice", el.Texture2DMSArray.FirstArraySlice); + break; + case D3D11_RTV_DIMENSION_TEXTURE3D: + Serialise("Texture3D.MipSlice", el.Texture3D.MipSlice); + Serialise("Texture3D.FirstWSlice", el.Texture3D.FirstWSlice); + Serialise("Texture3D.WSize", el.Texture3D.WSize); + break; + default: RDCERR("Unrecognised RTV Dimension %d", el.ViewDimension); break; + } +} + template <> void Serialiser::Serialise(const char *name, D3D11_UNORDERED_ACCESS_VIEW_DESC &el) { @@ -1196,6 +1243,47 @@ void Serialiser::Serialise(const char *name, D3D11_UNORDERED_ACCESS_VIEW_DESC &e } } +template <> +void Serialiser::Serialise(const char *name, D3D11_UNORDERED_ACCESS_VIEW_DESC1 &el) +{ + ScopedContext scope(this, name, "D3D11_UNORDERED_ACCESS_VIEW_DESC1", 0, true); + Serialise("Format", el.Format); + Serialise("ViewDimension", el.ViewDimension); + + switch(el.ViewDimension) + { + case D3D11_UAV_DIMENSION_BUFFER: + Serialise("Buffer.FirstElement", el.Buffer.FirstElement); + Serialise("Buffer.NumElements", el.Buffer.NumElements); + Serialise("Buffer.Flags", el.Buffer.Flags); + break; + case D3D11_UAV_DIMENSION_TEXTURE1D: + Serialise("Texture1D.MipSlice", el.Texture1D.MipSlice); + break; + case D3D11_UAV_DIMENSION_TEXTURE1DARRAY: + Serialise("Texture1DArray.MipSlice", el.Texture1DArray.MipSlice); + Serialise("Texture1DArray.ArraySize", el.Texture1DArray.ArraySize); + Serialise("Texture1DArray.FirstArraySlice", el.Texture1DArray.FirstArraySlice); + break; + case D3D11_UAV_DIMENSION_TEXTURE2D: + Serialise("Texture2D.MipSlice", el.Texture2D.MipSlice); + Serialise("Texture2D.PlaneSlice", el.Texture2D.PlaneSlice); + break; + case D3D11_UAV_DIMENSION_TEXTURE2DARRAY: + Serialise("Texture2DArray.MipSlice", el.Texture2DArray.MipSlice); + Serialise("Texture2DArray.ArraySize", el.Texture2DArray.ArraySize); + Serialise("Texture2DArray.FirstArraySlice", el.Texture2DArray.FirstArraySlice); + Serialise("Texture2DArray.PlaneSlice", el.Texture2DArray.PlaneSlice); + break; + case D3D11_UAV_DIMENSION_TEXTURE3D: + Serialise("Texture3D.MipSlice", el.Texture3D.MipSlice); + Serialise("Texture3D.FirstWSlice", el.Texture3D.FirstWSlice); + Serialise("Texture3D.WSize", el.Texture3D.WSize); + break; + default: RDCERR("Unrecognised RTV Dimension %d", el.ViewDimension); break; + } +} + template <> void Serialiser::Serialise(const char *name, D3D11_DEPTH_STENCIL_VIEW_DESC &el) { diff --git a/renderdoc/driver/d3d11/d3d11_common.h b/renderdoc/driver/d3d11/d3d11_common.h index 6b777665c..e9f066c76 100644 --- a/renderdoc/driver/d3d11/d3d11_common.h +++ b/renderdoc/driver/d3d11/d3d11_common.h @@ -146,10 +146,14 @@ void Serialiser::Serialise(const char *name, D3D11_SHADER_RESOURCE_VIEW_DESC &el template <> void Serialiser::Serialise(const char *name, D3D11_RENDER_TARGET_VIEW_DESC &el); template <> +void Serialiser::Serialise(const char *name, D3D11_RENDER_TARGET_VIEW_DESC1 &el); +template <> void Serialiser::Serialise(const char *name, D3D11_DEPTH_STENCIL_VIEW_DESC &el); template <> void Serialiser::Serialise(const char *name, D3D11_UNORDERED_ACCESS_VIEW_DESC &el); template <> +void Serialiser::Serialise(const char *name, D3D11_UNORDERED_ACCESS_VIEW_DESC1 &el); +template <> void Serialiser::Serialise(const char *name, D3D11_BLEND_DESC &el); template <> void Serialiser::Serialise(const char *name, D3D11_DEPTH_STENCIL_DESC &el);