diff --git a/renderdoc/driver/d3d11/d3d11_device.h b/renderdoc/driver/d3d11/d3d11_device.h index a7fe09e5e..4437e0e2d 100644 --- a/renderdoc/driver/d3d11/d3d11_device.h +++ b/renderdoc/driver/d3d11/d3d11_device.h @@ -606,6 +606,8 @@ private: rdcarray m_CapturedFrames; rdcarray m_Actions; + void MaskResourceMiscFlags(UINT &MiscFlags); + public: ALLOCATE_WITH_WRAPPED_POOL(WrappedID3D11Device); diff --git a/renderdoc/driver/d3d11/d3d11_device3_wrap.cpp b/renderdoc/driver/d3d11/d3d11_device3_wrap.cpp index ea360c227..64fc4263b 100644 --- a/renderdoc/driver/d3d11/d3d11_device3_wrap.cpp +++ b/renderdoc/driver/d3d11/d3d11_device3_wrap.cpp @@ -72,9 +72,7 @@ bool WrappedID3D11Device::Serialise_CreateTexture2D1(SerialiserType &ser, TextureDisplayType dispType = DispTypeForTexture(Descriptor); // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); if(m_pDevice3) { @@ -212,9 +210,7 @@ bool WrappedID3D11Device::Serialise_CreateTexture3D1(SerialiserType &ser, TextureDisplayType dispType = DispTypeForTexture(Descriptor); // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); if(m_pDevice3) { diff --git a/renderdoc/driver/d3d11/d3d11_device_wrap.cpp b/renderdoc/driver/d3d11/d3d11_device_wrap.cpp index daee0b70f..60f4e6b75 100644 --- a/renderdoc/driver/d3d11/d3d11_device_wrap.cpp +++ b/renderdoc/driver/d3d11/d3d11_device_wrap.cpp @@ -28,6 +28,16 @@ #include "d3d11_debug.h" #include "d3d11_resources.h" +void WrappedID3D11Device::MaskResourceMiscFlags(UINT &MiscFlags) +{ + MiscFlags &= + ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | + D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE | + D3D11_RESOURCE_MISC_RESTRICTED_CONTENT | D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE | + D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER | D3D11_RESOURCE_MISC_GUARDED | + D3D11_RESOURCE_MISC_HW_PROTECTED); +} + template bool WrappedID3D11Device::Serialise_CreateBuffer(SerialiserType &ser, const D3D11_BUFFER_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, @@ -99,9 +109,7 @@ bool WrappedID3D11Device::Serialise_CreateBuffer(SerialiserType &ser, const D3D1 HRESULT hr = S_OK; // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); D3D11_SUBRESOURCE_DATA data; data.pSysMem = InitialData; @@ -408,9 +416,7 @@ bool WrappedID3D11Device::Serialise_CreateTexture1D(SerialiserType &ser, TextureDisplayType dispType = DispTypeForTexture(Descriptor); // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); if(pInitialData != NULL) hr = m_pDevice->CreateTexture1D(&Descriptor, &descs[0], &ret); @@ -550,9 +556,7 @@ bool WrappedID3D11Device::Serialise_CreateTexture2D(SerialiserType &ser, APIProps.YUVTextures |= IsYUVFormat(Descriptor.Format); // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); if(pInitialData != NULL) hr = m_pDevice->CreateTexture2D(&Descriptor, &descs[0], &ret); @@ -689,9 +693,7 @@ bool WrappedID3D11Device::Serialise_CreateTexture3D(SerialiserType &ser, APIProps.YUVTextures |= IsYUVFormat(Descriptor.Format); // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); if(pInitialData != NULL) hr = m_pDevice->CreateTexture3D(&Descriptor, &descs[0], &ret); @@ -3422,9 +3424,7 @@ bool WrappedID3D11Device::Serialise_OpenSharedResource(SerialiserType &ser, HAND HRESULT hr = S_OK; // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); D3D11_SUBRESOURCE_DATA data; data.pSysMem = BufferContents; @@ -3502,9 +3502,7 @@ bool WrappedID3D11Device::Serialise_OpenSharedResource(SerialiserType &ser, HAND TextureDisplayType dispType = DispTypeForTexture(Descriptor); // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); hr = m_pDevice->CreateTexture1D(&Descriptor, NULL, &ret); @@ -3548,9 +3546,7 @@ bool WrappedID3D11Device::Serialise_OpenSharedResource(SerialiserType &ser, HAND TextureDisplayType dispType = DispTypeForTexture(Descriptor); // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); hr = m_pDevice->CreateTexture2D(&Descriptor, NULL, &ret); @@ -3594,9 +3590,7 @@ bool WrappedID3D11Device::Serialise_OpenSharedResource(SerialiserType &ser, HAND TextureDisplayType dispType = DispTypeForTexture(Descriptor); // unset flags that are unimportant/problematic in replay - Descriptor.MiscFlags &= - ~(D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | - D3D11_RESOURCE_MISC_GDI_COMPATIBLE | D3D11_RESOURCE_MISC_SHARED_NTHANDLE); + MaskResourceMiscFlags(Descriptor.MiscFlags); hr = m_pDevice->CreateTexture3D(&Descriptor, NULL, &ret);