From 115d27a02811be542b54e67e05d22ce2fa84c20a Mon Sep 17 00:00:00 2001 From: Isaac Marovitz Date: Sat, 20 Jan 2024 18:52:35 -0500 Subject: [PATCH] MTLComputePassSampleBufferAttachmentDescriptor SampleBufferAttachemnt Correction --- renderdoc/driver/metal/metal_serialise.cpp | 10 ++++++++++ renderdoc/driver/metal/metal_types.cpp | 16 ++++++++++++++++ renderdoc/driver/metal/metal_types.h | 14 ++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/renderdoc/driver/metal/metal_serialise.cpp b/renderdoc/driver/metal/metal_serialise.cpp index 8af6a98de..b72c83e7c 100644 --- a/renderdoc/driver/metal/metal_serialise.cpp +++ b/renderdoc/driver/metal/metal_serialise.cpp @@ -378,6 +378,15 @@ void DoSerialise(SerialiserType &ser, RDMTL::RenderPassDescriptor &el) SERIALISE_MEMBER(sampleBufferAttachments); }; +template +void DoSerialise(SerialiserType &ser, RDMTL::ComputePassSampleBufferAttachmentDescriptor &el) +{ + // TODO: when WrappedCounterSampleBuffer exists + // SERIALISE_MEMBER(sampleBuffer); + SERIALISE_MEMBER(startOfEncoderSampleIndex); + SERIALISE_MEMBER(endOfEncoderSampleIndex); +} + INSTANTIATE_SERIALISE_TYPE(NS::String *); INSTANTIATE_SERIALISE_TYPE(NS::Range) INSTANTIATE_SERIALISE_TYPE(MTL::TextureSwizzleChannels); @@ -404,3 +413,4 @@ INSTANTIATE_SERIALISE_TYPE(RDMTL::RenderPassColorAttachmentDescriptor); INSTANTIATE_SERIALISE_TYPE(RDMTL::RenderPassDepthAttachmentDescriptor); INSTANTIATE_SERIALISE_TYPE(RDMTL::RenderPassStencilAttachmentDescriptor); INSTANTIATE_SERIALISE_TYPE(RDMTL::RenderPassDescriptor); +INSTANTIATE_SERIALISE_TYPE(RDMTL::ComputePassSampleBufferAttachmentDescriptor); diff --git a/renderdoc/driver/metal/metal_types.cpp b/renderdoc/driver/metal/metal_types.cpp index 028dc329f..1696f4d70 100644 --- a/renderdoc/driver/metal/metal_types.cpp +++ b/renderdoc/driver/metal/metal_types.cpp @@ -665,4 +665,20 @@ RenderPassDescriptor::operator MTL::RenderPassDescriptor *() return objc; } +ComputePassSampleBufferAttachmentDescriptor::ComputePassSampleBufferAttachmentDescriptor( + MTL::ComputePassSampleBufferAttachmentDescriptor *objc) + : startOfEncoderSampleIndex(objc->startOfEncoderSampleIndex()), + endOfEncoderSampleIndex(objc->endOfEncoderSampleIndex()) +{ +} + +void ComputePassSampleBufferAttachmentDescriptor::CopyTo( + MTL::ComputePassSampleBufferAttachmentDescriptor *objc) +{ + // TODO: when WrappedMTLCounterSampleBuffer exists + // objc->setSampleBuffer(Unwrap(sampleBuffer)); + objc->setStartOfEncoderSampleIndex(startOfEncoderSampleIndex); + objc->setEndOfEncoderSampleIndex(endOfEncoderSampleIndex); +} + } // namespace RDMTL diff --git a/renderdoc/driver/metal/metal_types.h b/renderdoc/driver/metal/metal_types.h index 8de34d36b..5bbde00cc 100644 --- a/renderdoc/driver/metal/metal_types.h +++ b/renderdoc/driver/metal/metal_types.h @@ -474,6 +474,19 @@ struct RenderPassDescriptor rdcarray sampleBufferAttachments; }; +// MTLComputePassSampleBufferAttachmentDescriptor : based on the interface defined in +// Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLComputePass.h +struct ComputePassSampleBufferAttachmentDescriptor +{ + ComputePassSampleBufferAttachmentDescriptor() = default; + ComputePassSampleBufferAttachmentDescriptor(MTL::ComputePassSampleBufferAttachmentDescriptor *objc); + void CopyTo(MTL::ComputePassSampleBufferAttachmentDescriptor *objc); + // TODO: when WrappedMTLCounterSampleBuffer exists + // MTLCounterSampleBuffer *sampleBuffer = NULL; + NS::UInteger startOfEncoderSampleIndex = MTLCounterDontSample; + NS::UInteger endOfEncoderSampleIndex = MTLCounterDontSample; +}; + } // namespace RDMTL template <> @@ -511,3 +524,4 @@ RDMTL_DECLARE_REFLECTION_STRUCT(RenderPassDepthAttachmentDescriptor); RDMTL_DECLARE_REFLECTION_STRUCT(RenderPassStencilAttachmentDescriptor); RDMTL_DECLARE_REFLECTION_STRUCT(RenderPassSampleBufferAttachmentDescriptor); RDMTL_DECLARE_REFLECTION_STRUCT(RenderPassDescriptor); +RDMTL_DECLARE_REFLECTION_STRUCT(ComputePassSampleBufferAttachmentDescriptor);