diff --git a/renderdoc/api/replay/control_types.h b/renderdoc/api/replay/control_types.h index 2fbebcc99..c88eaa444 100644 --- a/renderdoc/api/replay/control_types.h +++ b/renderdoc/api/replay/control_types.h @@ -76,6 +76,8 @@ struct MeshFormat float farPlane; }; +DECLARE_REFLECTION_STRUCT(MeshFormat); + class Camera; struct MeshDisplay @@ -104,6 +106,8 @@ struct MeshDisplay bool32 wireframeDraw; }; +DECLARE_REFLECTION_STRUCT(MeshDisplay); + struct TextureDisplay { ResourceId texid; @@ -129,6 +133,8 @@ struct TextureDisplay DebugOverlay overlay; }; +DECLARE_REFLECTION_STRUCT(TextureDisplay); + // some dependent structs for TextureSave struct TextureComponentMapping { @@ -136,6 +142,8 @@ struct TextureComponentMapping float whitePoint; }; +DECLARE_REFLECTION_STRUCT(TextureComponentMapping); + struct TextureSampleMapping { // if true, texture acts like an array, each slice being @@ -151,6 +159,8 @@ struct TextureSampleMapping uint32_t sampleIndex; }; +DECLARE_REFLECTION_STRUCT(TextureSampleMapping); + struct TextureSliceMapping { // select the (depth/array) slice to save. @@ -186,6 +196,8 @@ struct TextureSliceMapping // slice 0 is saved }; +DECLARE_REFLECTION_STRUCT(TextureSliceMapping); + struct TextureSave { ResourceId id; @@ -222,6 +234,8 @@ struct TextureSave int jpegQuality; }; +DECLARE_REFLECTION_STRUCT(TextureSave); + // dependent structs for TargetControlMessage struct NewCaptureData { @@ -232,22 +246,30 @@ struct NewCaptureData bool32 local; }; +DECLARE_REFLECTION_STRUCT(NewCaptureData); + struct RegisterAPIData { rdctype::str APIName; }; +DECLARE_REFLECTION_STRUCT(RegisterAPIData); + struct BusyData { rdctype::str ClientName; }; +DECLARE_REFLECTION_STRUCT(BusyData); + struct NewChildData { uint32_t PID; uint32_t ident; }; +DECLARE_REFLECTION_STRUCT(NewChildData); + struct TargetControlMessage { TargetControlMessage() {} @@ -258,3 +280,5 @@ struct TargetControlMessage BusyData Busy; NewChildData NewChild; }; + +DECLARE_REFLECTION_STRUCT(TargetControlMessage); diff --git a/renderdoc/api/replay/d3d11_pipestate.h b/renderdoc/api/replay/d3d11_pipestate.h index 6bda91f98..6bcbec5ef 100644 --- a/renderdoc/api/replay/d3d11_pipestate.h +++ b/renderdoc/api/replay/d3d11_pipestate.h @@ -364,3 +364,25 @@ struct State }; }; // namespace D3D11Pipe + +DECLARE_REFLECTION_STRUCT(D3D11Pipe::Layout); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::VB); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::IB); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::IA); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::View); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::Sampler); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::CBuffer); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::Shader); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::SOBind); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::SO); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::Viewport); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::Scissor); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::RasterizerState); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::Rasterizer); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::DepthStencilState); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::StencilOp); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::Blend); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::BlendOp); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::BlendState); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::OM); +DECLARE_REFLECTION_STRUCT(D3D11Pipe::State); diff --git a/renderdoc/api/replay/d3d12_pipestate.h b/renderdoc/api/replay/d3d12_pipestate.h index 712b23986..96f256ef8 100644 --- a/renderdoc/api/replay/d3d12_pipestate.h +++ b/renderdoc/api/replay/d3d12_pipestate.h @@ -399,3 +399,28 @@ struct State }; }; // namespace D3D12Pipe + +DECLARE_REFLECTION_STRUCT(D3D12Pipe::Layout); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::VB); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::IB); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::IA); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::View); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::Sampler); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::CBuffer); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::RegisterSpace); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::Shader); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::SOBind); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::Streamout); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::Viewport); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::Scissor); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::RasterizerState); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::Rasterizer); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::StencilOp); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::DepthStencilState); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::BlendOp); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::Blend); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::BlendState); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::OM); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::ResourceState); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::ResourceData); +DECLARE_REFLECTION_STRUCT(D3D12Pipe::State); diff --git a/renderdoc/api/replay/data_types.h b/renderdoc/api/replay/data_types.h index 6a1c3e862..8efba88f8 100644 --- a/renderdoc/api/replay/data_types.h +++ b/renderdoc/api/replay/data_types.h @@ -34,6 +34,8 @@ struct FloatVector float x, y, z, w; }; +DECLARE_REFLECTION_STRUCT(FloatVector); + struct DirectoryFile { rdctype::str filename; @@ -42,6 +44,8 @@ struct DirectoryFile uint64_t size; }; +DECLARE_REFLECTION_STRUCT(DirectoryFile); + struct ResourceFormat { ResourceFormat() @@ -81,6 +85,8 @@ struct ResourceFormat bool32 srgbCorrected; }; +DECLARE_REFLECTION_STRUCT(ResourceFormat); + struct FetchBuffer { ResourceId ID; @@ -90,6 +96,8 @@ struct FetchBuffer uint64_t length; }; +DECLARE_REFLECTION_STRUCT(FetchBuffer); + struct FetchTexture { rdctype::str name; @@ -107,6 +115,8 @@ struct FetchTexture uint64_t byteSize; }; +DECLARE_REFLECTION_STRUCT(FetchTexture); + struct FetchAPIEvent { uint32_t eventID; @@ -118,6 +128,8 @@ struct FetchAPIEvent uint64_t fileOffset; }; +DECLARE_REFLECTION_STRUCT(FetchAPIEvent); + struct DebugMessage { uint32_t eventID; @@ -128,6 +140,8 @@ struct DebugMessage rdctype::str description; }; +DECLARE_REFLECTION_STRUCT(DebugMessage); + enum BucketRecordType { BUCKET_RECORD_TYPE_LINEAR, @@ -150,6 +164,8 @@ struct FetchFrameConstantBindStats rdctype::array sizes; }; +DECLARE_REFLECTION_STRUCT(FetchFrameConstantBindStats); + struct FetchFrameSamplerBindStats { uint32_t calls; @@ -158,6 +174,8 @@ struct FetchFrameSamplerBindStats rdctype::array bindslots; }; +DECLARE_REFLECTION_STRUCT(FetchFrameSamplerBindStats); + struct FetchFrameResourceBindStats { uint32_t calls; @@ -167,6 +185,8 @@ struct FetchFrameResourceBindStats rdctype::array bindslots; }; +DECLARE_REFLECTION_STRUCT(FetchFrameResourceBindStats); + struct FetchFrameUpdateStats { enum Constants @@ -181,6 +201,8 @@ struct FetchFrameUpdateStats rdctype::array sizes; }; +DECLARE_REFLECTION_STRUCT(FetchFrameUpdateStats); + struct FetchFrameDrawStats { enum Constants @@ -195,12 +217,16 @@ struct FetchFrameDrawStats rdctype::array counts; }; +DECLARE_REFLECTION_STRUCT(FetchFrameDrawStats); + struct FetchFrameDispatchStats { uint32_t calls; uint32_t indirect; }; +DECLARE_REFLECTION_STRUCT(FetchFrameDispatchStats); + struct FetchFrameIndexBindStats { uint32_t calls; @@ -208,6 +234,8 @@ struct FetchFrameIndexBindStats uint32_t nulls; }; +DECLARE_REFLECTION_STRUCT(FetchFrameIndexBindStats); + struct FetchFrameVertexBindStats { uint32_t calls; @@ -216,6 +244,8 @@ struct FetchFrameVertexBindStats rdctype::array bindslots; }; +DECLARE_REFLECTION_STRUCT(FetchFrameVertexBindStats); + struct FetchFrameLayoutBindStats { uint32_t calls; @@ -223,6 +253,8 @@ struct FetchFrameLayoutBindStats uint32_t nulls; }; +DECLARE_REFLECTION_STRUCT(FetchFrameLayoutBindStats); + struct FetchFrameShaderStats { uint32_t calls; @@ -231,6 +263,8 @@ struct FetchFrameShaderStats uint32_t redundants; }; +DECLARE_REFLECTION_STRUCT(FetchFrameShaderStats); + struct FetchFrameBlendStats { uint32_t calls; @@ -239,6 +273,8 @@ struct FetchFrameBlendStats uint32_t redundants; }; +DECLARE_REFLECTION_STRUCT(FetchFrameBlendStats); + struct FetchFrameDepthStencilStats { uint32_t calls; @@ -247,6 +283,8 @@ struct FetchFrameDepthStencilStats uint32_t redundants; }; +DECLARE_REFLECTION_STRUCT(FetchFrameDepthStencilStats); + struct FetchFrameRasterizationStats { uint32_t calls; @@ -257,6 +295,8 @@ struct FetchFrameRasterizationStats rdctype::array rects; }; +DECLARE_REFLECTION_STRUCT(FetchFrameRasterizationStats); + struct FetchFrameOutputStats { uint32_t calls; @@ -265,6 +305,8 @@ struct FetchFrameOutputStats rdctype::array bindslots; }; +DECLARE_REFLECTION_STRUCT(FetchFrameOutputStats); + struct FetchFrameStatistics { bool32 recorded; @@ -284,6 +326,8 @@ struct FetchFrameStatistics FetchFrameOutputStats outputs; }; +DECLARE_REFLECTION_STRUCT(FetchFrameStatistics); + struct FetchFrameInfo { FetchFrameInfo() @@ -308,6 +352,8 @@ struct FetchFrameInfo rdctype::array debugMessages; }; +DECLARE_REFLECTION_STRUCT(FetchFrameInfo); + struct EventUsage { EventUsage() : eventID(0), usage(ResourceUsage::Unused) {} @@ -326,6 +372,8 @@ struct EventUsage ResourceId view; }; +DECLARE_REFLECTION_STRUCT(EventUsage); + struct FetchDrawcall { FetchDrawcall() { Reset(); } @@ -396,6 +444,8 @@ struct FetchDrawcall rdctype::array children; }; +DECLARE_REFLECTION_STRUCT(FetchDrawcall); + struct APIProperties { // the pipeline type of the actual log/capture @@ -407,6 +457,8 @@ struct APIProperties bool32 degraded; }; +DECLARE_REFLECTION_STRUCT(APIProperties); + struct CounterDescription { GPUCounter counterID; @@ -417,6 +469,8 @@ struct CounterDescription CounterUnit unit; }; +DECLARE_REFLECTION_STRUCT(CounterDescription); + union CounterValue { float f; @@ -467,6 +521,8 @@ struct CounterResult CounterValue value; }; +DECLARE_REFLECTION_STRUCT(CounterResult); + union PixelValue { float value_f[4]; @@ -482,6 +538,8 @@ struct ModificationValue int32_t stencil; }; +DECLARE_REFLECTION_STRUCT(ModificationValue); + struct PixelModification { uint32_t eventID; @@ -511,3 +569,5 @@ struct PixelModification !shaderDiscarded && !depthTestFailed && !stencilTestFailed; } }; + +DECLARE_REFLECTION_STRUCT(PixelModification); diff --git a/renderdoc/api/replay/gl_pipestate.h b/renderdoc/api/replay/gl_pipestate.h index 07888c89e..0544f86f9 100644 --- a/renderdoc/api/replay/gl_pipestate.h +++ b/renderdoc/api/replay/gl_pipestate.h @@ -436,4 +436,30 @@ struct State Hints m_Hints; }; -}; // namespace GLPipe \ No newline at end of file +}; // namespace GLPipe + +DECLARE_REFLECTION_STRUCT(GLPipe::VertexAttribute); +DECLARE_REFLECTION_STRUCT(GLPipe::VB); +DECLARE_REFLECTION_STRUCT(GLPipe::VertexInput); +DECLARE_REFLECTION_STRUCT(GLPipe::Shader); +DECLARE_REFLECTION_STRUCT(GLPipe::FixedVertexProcessing); +DECLARE_REFLECTION_STRUCT(GLPipe::Texture); +DECLARE_REFLECTION_STRUCT(GLPipe::Sampler); +DECLARE_REFLECTION_STRUCT(GLPipe::Buffer); +DECLARE_REFLECTION_STRUCT(GLPipe::ImageLoadStore); +DECLARE_REFLECTION_STRUCT(GLPipe::Feedback); +DECLARE_REFLECTION_STRUCT(GLPipe::Viewport); +DECLARE_REFLECTION_STRUCT(GLPipe::Scissor); +DECLARE_REFLECTION_STRUCT(GLPipe::RasterizerState); +DECLARE_REFLECTION_STRUCT(GLPipe::Rasterizer); +DECLARE_REFLECTION_STRUCT(GLPipe::DepthState); +DECLARE_REFLECTION_STRUCT(GLPipe::StencilOp); +DECLARE_REFLECTION_STRUCT(GLPipe::StencilState); +DECLARE_REFLECTION_STRUCT(GLPipe::Attachment); +DECLARE_REFLECTION_STRUCT(GLPipe::FBO); +DECLARE_REFLECTION_STRUCT(GLPipe::BlendOp); +DECLARE_REFLECTION_STRUCT(GLPipe::Blend); +DECLARE_REFLECTION_STRUCT(GLPipe::BlendState); +DECLARE_REFLECTION_STRUCT(GLPipe::FrameBuffer); +DECLARE_REFLECTION_STRUCT(GLPipe::Hints); +DECLARE_REFLECTION_STRUCT(GLPipe::State); diff --git a/renderdoc/api/replay/renderdoc_replay.h b/renderdoc/api/replay/renderdoc_replay.h index cc409d38a..c861e4752 100644 --- a/renderdoc/api/replay/renderdoc_replay.h +++ b/renderdoc/api/replay/renderdoc_replay.h @@ -27,6 +27,16 @@ #include +template +inline const char *TypeName(); + +#define DECLARE_REFLECTION_STRUCT(type) \ + template <> \ + inline const char *TypeName() \ + { \ + return #type; \ + } + typedef uint8_t byte; typedef uint32_t bool32; @@ -146,6 +156,8 @@ private: #endif }; +DECLARE_REFLECTION_STRUCT(ResourceId); + #include "capture_options.h" #include "control_types.h" #include "d3d11_pipestate.h" @@ -290,6 +302,8 @@ struct IReplayRenderer rdctype::array *data) = 0; }; +DECLARE_REFLECTION_STRUCT(IReplayRenderer); + // deprecated C interface, for renderdocui only extern "C" RENDERDOC_API void RENDERDOC_CC ReplayRenderer_GetAPIProperties(IReplayRenderer *rend, APIProperties *props); diff --git a/renderdoc/api/replay/shader_types.h b/renderdoc/api/replay/shader_types.h index 0c127b410..fe714c7eb 100644 --- a/renderdoc/api/replay/shader_types.h +++ b/renderdoc/api/replay/shader_types.h @@ -135,6 +135,8 @@ struct ShaderVariable rdctype::array members; }; +DECLARE_REFLECTION_STRUCT(ShaderVariable); + struct ShaderDebugState { rdctype::array registers; @@ -146,6 +148,8 @@ struct ShaderDebugState ShaderEvents flags; }; +DECLARE_REFLECTION_STRUCT(ShaderDebugState); + struct ShaderDebugTrace { rdctype::array inputs; @@ -154,6 +158,8 @@ struct ShaderDebugTrace rdctype::array states; }; +DECLARE_REFLECTION_STRUCT(ShaderDebugTrace); + struct SigParameter { SigParameter() @@ -190,6 +196,8 @@ struct SigParameter uint32_t arrayIndex; }; +DECLARE_REFLECTION_STRUCT(SigParameter); + struct ShaderConstant; struct ShaderVariableDescriptor @@ -203,6 +211,8 @@ struct ShaderVariableDescriptor rdctype::str name; }; +DECLARE_REFLECTION_STRUCT(ShaderVariableDescriptor); + struct ShaderVariableType { ShaderVariableDescriptor descriptor; @@ -210,12 +220,16 @@ struct ShaderVariableType rdctype::array members; }; +DECLARE_REFLECTION_STRUCT(ShaderVariableType); + struct ShaderRegister { uint32_t vec; uint32_t comp; }; +DECLARE_REFLECTION_STRUCT(ShaderRegister); + struct ShaderConstant { rdctype::str name; @@ -224,6 +238,8 @@ struct ShaderConstant ShaderVariableType type; }; +DECLARE_REFLECTION_STRUCT(ShaderConstant); + struct ConstantBlock { rdctype::str name; @@ -233,6 +249,8 @@ struct ConstantBlock uint32_t byteSize; }; +DECLARE_REFLECTION_STRUCT(ConstantBlock); + struct ShaderResource { bool32 IsSampler; @@ -246,6 +264,8 @@ struct ShaderResource int32_t bindPoint; }; +DECLARE_REFLECTION_STRUCT(ShaderResource); + struct ShaderDebugChunk { ShaderDebugChunk() : compileFlags(0), entryFile(0) {} @@ -258,6 +278,8 @@ struct ShaderDebugChunk int32_t entryFile; // index in above array of 'main' file with entry point }; +DECLARE_REFLECTION_STRUCT(ShaderDebugChunk); + struct ShaderReflection { ShaderDebugChunk DebugInfo; @@ -279,6 +301,8 @@ struct ShaderReflection rdctype::array Interfaces; }; +DECLARE_REFLECTION_STRUCT(ShaderReflection); + struct BindpointMap { BindpointMap() @@ -310,6 +334,8 @@ struct BindpointMap uint32_t arraySize; }; +DECLARE_REFLECTION_STRUCT(BindpointMap); + struct ShaderBindpointMapping { rdctype::array InputAttributes; @@ -317,3 +343,5 @@ struct ShaderBindpointMapping rdctype::array ReadOnlyResources; rdctype::array ReadWriteResources; }; + +DECLARE_REFLECTION_STRUCT(ShaderBindpointMapping); diff --git a/renderdoc/api/replay/vk_pipestate.h b/renderdoc/api/replay/vk_pipestate.h index 07bc8e0b2..e30188b8b 100644 --- a/renderdoc/api/replay/vk_pipestate.h +++ b/renderdoc/api/replay/vk_pipestate.h @@ -407,3 +407,36 @@ struct State }; }; // namespace VKPipe + +DECLARE_REFLECTION_STRUCT(VKPipe::BindingElement); +DECLARE_REFLECTION_STRUCT(VKPipe::DescriptorBinding); +DECLARE_REFLECTION_STRUCT(VKPipe::DescriptorSet); +DECLARE_REFLECTION_STRUCT(VKPipe::Pipeline); +DECLARE_REFLECTION_STRUCT(VKPipe::IB); +DECLARE_REFLECTION_STRUCT(VKPipe::InputAssembly); +DECLARE_REFLECTION_STRUCT(VKPipe::VertexAttribute); +DECLARE_REFLECTION_STRUCT(VKPipe::VertexBinding); +DECLARE_REFLECTION_STRUCT(VKPipe::VB); +DECLARE_REFLECTION_STRUCT(VKPipe::VertexInput); +DECLARE_REFLECTION_STRUCT(VKPipe::SpecInfo); +DECLARE_REFLECTION_STRUCT(VKPipe::Shader); +DECLARE_REFLECTION_STRUCT(VKPipe::Tessellation); +DECLARE_REFLECTION_STRUCT(VKPipe::Viewport); +DECLARE_REFLECTION_STRUCT(VKPipe::Scissor); +DECLARE_REFLECTION_STRUCT(VKPipe::ViewportScissor); +DECLARE_REFLECTION_STRUCT(VKPipe::ViewState); +DECLARE_REFLECTION_STRUCT(VKPipe::Raster); +DECLARE_REFLECTION_STRUCT(VKPipe::MultiSample); +DECLARE_REFLECTION_STRUCT(VKPipe::BlendOp); +DECLARE_REFLECTION_STRUCT(VKPipe::Blend); +DECLARE_REFLECTION_STRUCT(VKPipe::ColorBlend); +DECLARE_REFLECTION_STRUCT(VKPipe::StencilOp); +DECLARE_REFLECTION_STRUCT(VKPipe::DepthStencil); +DECLARE_REFLECTION_STRUCT(VKPipe::RenderPass); +DECLARE_REFLECTION_STRUCT(VKPipe::Attachment); +DECLARE_REFLECTION_STRUCT(VKPipe::Framebuffer); +DECLARE_REFLECTION_STRUCT(VKPipe::RenderArea); +DECLARE_REFLECTION_STRUCT(VKPipe::CurrentPass); +DECLARE_REFLECTION_STRUCT(VKPipe::ImageLayout); +DECLARE_REFLECTION_STRUCT(VKPipe::ImageData); +DECLARE_REFLECTION_STRUCT(VKPipe::State); diff --git a/renderdoc/driver/shaders/dxbc/dxbc_debug.h b/renderdoc/driver/shaders/dxbc/dxbc_debug.h index 5161512b9..183f2f0d4 100644 --- a/renderdoc/driver/shaders/dxbc/dxbc_debug.h +++ b/renderdoc/driver/shaders/dxbc/dxbc_debug.h @@ -25,7 +25,7 @@ #pragma once -#include "api/replay/shader_types.h" +#include "api/replay/renderdoc_replay.h" #include "common/common.h" #include "dxbc_disassemble.h"