From ef85b49e919f218132aa2c00543579f9a48cd5a7 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Sat, 12 Mar 2022 05:43:32 +0000 Subject: [PATCH] Add CaptureState& to WrappedMTLObject constructor --- renderdoc/driver/metal/metal_device.cpp | 2 +- renderdoc/driver/metal/metal_device.h | 9 ++++++++- renderdoc/driver/metal/metal_resources.h | 14 ++++++++++++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/metal/metal_device.cpp b/renderdoc/driver/metal/metal_device.cpp index cc02871bd..633232dad 100644 --- a/renderdoc/driver/metal/metal_device.cpp +++ b/renderdoc/driver/metal/metal_device.cpp @@ -25,7 +25,7 @@ #include "metal_device.h" WrappedMTLDevice::WrappedMTLDevice(MTL::Device *realMTLDevice, ResourceId objId) - : WrappedMTLObject(realMTLDevice, objId, this) + : WrappedMTLObject(realMTLDevice, objId, this, GetStateRef()) { wrappedObjC = AllocateObjCWrapper(this); m_WrappedMTLDevice = this; diff --git a/renderdoc/driver/metal/metal_device.h b/renderdoc/driver/metal/metal_device.h index 956a01345..d14d30105 100644 --- a/renderdoc/driver/metal/metal_device.h +++ b/renderdoc/driver/metal/metal_device.h @@ -24,7 +24,7 @@ #pragma once -#include "metal_resources.h" +#include "metal_common.h" class WrappedMTLDevice : public WrappedMTLObject { @@ -33,5 +33,12 @@ public: ~WrappedMTLDevice() {} static MTL::Device *MTLCreateSystemDefaultDevice(MTL::Device *realMTLDevice); + CaptureState &GetStateRef() { return m_State; } + enum + { + TypeEnum = eResDevice + }; + private: + CaptureState m_State; }; diff --git a/renderdoc/driver/metal/metal_resources.h b/renderdoc/driver/metal/metal_resources.h index bf21214c2..61a8339f9 100644 --- a/renderdoc/driver/metal/metal_resources.h +++ b/renderdoc/driver/metal/metal_resources.h @@ -42,8 +42,17 @@ DECLARE_REFLECTION_ENUM(MetalResourceType); struct WrappedMTLObject { WrappedMTLObject() = delete; - WrappedMTLObject(void *mtlObject, ResourceId objId, WrappedMTLDevice *wrappedMTLDevice) - : wrappedObjC(NULL), real(mtlObject), id(objId), m_WrappedMTLDevice(wrappedMTLDevice) + WrappedMTLObject(WrappedMTLDevice *wrappedMTLDevice, CaptureState &captureState) + : wrappedObjC(NULL), real(NULL), m_WrappedMTLDevice(wrappedMTLDevice), m_State(captureState) + { + } + WrappedMTLObject(void *mtlObject, ResourceId objId, WrappedMTLDevice *wrappedMTLDevice, + CaptureState &captureState) + : wrappedObjC(NULL), + real(mtlObject), + id(objId), + m_WrappedMTLDevice(wrappedMTLDevice), + m_State(captureState) { } ~WrappedMTLObject() = default; @@ -52,6 +61,7 @@ struct WrappedMTLObject void *real; ResourceId id; WrappedMTLDevice *m_WrappedMTLDevice; + CaptureState &m_State; }; template