From 08d07ddc0dd5ab0cf4a4176ab4e7724fa9f28bd9 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Sun, 21 Aug 2022 12:40:54 +0100 Subject: [PATCH] Set MTL::TextureUsageShaderRead during capture To be consistent with replay created textures set MTL::TextureUsageShaderRead on textures created during capture. This override is not serialized. PR Feedback --- renderdoc/driver/metal/metal_device.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/renderdoc/driver/metal/metal_device.cpp b/renderdoc/driver/metal/metal_device.cpp index ac65b9b68..d0230a643 100644 --- a/renderdoc/driver/metal/metal_device.cpp +++ b/renderdoc/driver/metal/metal_device.cpp @@ -652,6 +652,12 @@ WrappedMTLTexture *WrappedMTLDevice::Common_NewTexture(RDMTL::TextureDescriptor { MTL::Texture *realMTLTexture; MTL::TextureDescriptor *realDescriptor(descriptor); + // Ensure the created textures can be read by a shader + // Metal driver will treat TextureUsageUnknown as all options + MTL::TextureUsage usage = realDescriptor->usage(); + if(usage != MTL::TextureUsageUnknown) + realDescriptor->setUsage((MTL::TextureUsage)(usage | MTL::TextureUsageShaderRead)); + SERIALISE_TIME_CALL(realMTLTexture = !ioSurfaceTexture ? Unwrap(this)->newTexture(realDescriptor) : Unwrap(this)->newTexture( realDescriptor, iosurface, plane));