diff --git a/renderdoc/driver/d3d12/d3d12_device.cpp b/renderdoc/driver/d3d12/d3d12_device.cpp index 452be68ff..933c822d3 100644 --- a/renderdoc/driver/d3d12/d3d12_device.cpp +++ b/renderdoc/driver/d3d12/d3d12_device.cpp @@ -1110,6 +1110,12 @@ HRESULT WrappedID3D12Device::QueryInterface(REFIID riid, void **ppvObject) *ppvObject = (INVAPID3DDevice *)&m_WrappedNVAPI; return S_OK; } + else if(riid == __uuidof(IAGSD3DDevice)) + { + // don't addref, this is an internal interface so we just don't addref at all + *ppvObject = (IAGSD3DDevice *)&m_WrappedAGS; + return S_OK; + } else if(riid == __uuidof(ID3D12DebugDevice)) { // we queryinterface for this at startup, so if it's present we can diff --git a/renderdoc/driver/ihv/amd/ags_wrapper.cpp b/renderdoc/driver/ihv/amd/ags_wrapper.cpp index 93d5c029f..ecd325b0e 100644 --- a/renderdoc/driver/ihv/amd/ags_wrapper.cpp +++ b/renderdoc/driver/ihv/amd/ags_wrapper.cpp @@ -192,7 +192,7 @@ public: // this doesn't catch the case where some intrinsics are used on replay that are newer. We don't // store that fine-grained information about which intrinsics are used. if(device12) - return extensionsSupported11.intrinsics16; + return extensionsSupported12.intrinsics16; else if(device11) return extensionsSupported11.intrinsics16; else diff --git a/renderdoc/driver/ihv/amd/amd_hooks.cpp b/renderdoc/driver/ihv/amd/amd_hooks.cpp index b3b0febc0..d07159eb1 100644 --- a/renderdoc/driver/ihv/amd/amd_hooks.cpp +++ b/renderdoc/driver/ihv/amd/amd_hooks.cpp @@ -317,6 +317,9 @@ private: // de-refcount our device. returnedParams->pDevice->AddRef(); + if(ppDevice) + *ppDevice = returnedParams->pDevice; + return S_OK; }, creationParams->pAdapter, creationParams->FeatureLevel, __uuidof(ID3D12Device),