Skip to content

Commit c543ca2

Browse files
committed
Set preferredStorageMode in capabilities so we don't duplicate the logic in multiple places
1 parent 6083bc2 commit c543ca2

4 files changed

Lines changed: 9 additions & 14 deletions

File tree

pxr/imaging/hgiMetal/blitCmds.mm

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,7 @@
203203

204204
mtlDesc.mipmapLevelCount = dstTexDesc.mipLevels;
205205
mtlDesc.arrayLength = dstTexDesc.layerCount;
206-
#if defined(ARCH_OS_OSX)
207-
mtlDesc.resourceOptions = MTLResourceStorageModeManaged;
208-
#else
209-
mtlDesc.resourceOptions = MTLResourceStorageModeShared;
210-
#endif
206+
mtlDesc.resourceOptions = _hgi->GetCapabilities()->preferredStorageMode;
211207
mtlDesc.sampleCount = 1;
212208
if (dstTexDesc.type == HgiTextureType3D) {
213209
mtlDesc.depth = depth;

pxr/imaging/hgiMetal/capabilities.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class HgiMetalCapabilities final : public HgiCapabilities
3232
int GetShaderVersion() const override;
3333

3434
MTLResourceOptions defaultStorageMode;
35+
MTLResourceOptions preferredStorageMode;
3536
bool hasVertexMemoryBarrier;
3637
bool useParallelEncoder;
3738
bool requiresIndirectDrawFix;

pxr/imaging/hgiMetal/capabilities.mm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@
2626
bool hasIntelGPU = false;
2727
#if defined(ARCH_OS_OSX)
2828
hasIntelGPU = [device isLowPower];
29+
if (![device hasUnifiedMemory]) {
30+
preferredStorageMode = MTLResourceStorageModeManaged;
31+
} else
2932
#endif
33+
{
34+
preferredStorageMode = MTLResourceStorageModeShared;
35+
}
3036
defaultStorageMode = MTLResourceStorageModeShared;
3137
bool unifiedMemory = false;
3238
bool barycentrics = false;

pxr/imaging/hgiMetal/texture.mm

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,7 @@
2424
MTLTextureUsage usage = MTLTextureUsageShaderRead;
2525

2626
if (desc.initialData && desc.pixelsByteSize > 0) {
27-
#if defined(ARCH_OS_OSX)
28-
id<MTLDevice> device = hgi->GetPrimaryDevice();
29-
if (![device hasUnifiedMemory]) {
30-
resourceOptions = MTLResourceStorageModeManaged;
31-
} else
32-
#endif
33-
{
34-
resourceOptions = MTLResourceStorageModeShared;
35-
}
27+
resourceOptions = hgi->GetCapabilities()->preferredStorageMode;
3628
}
3729

3830
MTLPixelFormat mtlFormat = HgiMetalConversions::GetPixelFormat(

0 commit comments

Comments
 (0)