From 248aca72c6f2f55ec0409ca3bdd83b054de8dee4 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 27 Oct 2022 23:35:21 -0700 Subject: [PATCH] [Impeller] Set resourceOptions/storageMode on MTLTextures created from MTLBuffers. (flutter/engine#37073) --- .../renderer/backend/metal/device_buffer_mtl.mm | 4 ++++ engine/src/flutter/testing/run_tests.py | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/engine/src/flutter/impeller/renderer/backend/metal/device_buffer_mtl.mm b/engine/src/flutter/impeller/renderer/backend/metal/device_buffer_mtl.mm index 67525dde4de..a8534c9a5da 100644 --- a/engine/src/flutter/impeller/renderer/backend/metal/device_buffer_mtl.mm +++ b/engine/src/flutter/impeller/renderer/backend/metal/device_buffer_mtl.mm @@ -40,6 +40,10 @@ std::shared_ptr DeviceBufferMTL::AsTexture( return nullptr; } + if (@available(iOS 13.0, macos 10.15, *)) { + mtl_texture_desc.resourceOptions = buffer_.resourceOptions; + } + auto texture = [buffer_ newTextureWithDescriptor:mtl_texture_desc offset:0 bytesPerRow:row_bytes]; diff --git a/engine/src/flutter/testing/run_tests.py b/engine/src/flutter/testing/run_tests.py index af11bea364f..23553c156ed 100755 --- a/engine/src/flutter/testing/run_tests.py +++ b/engine/src/flutter/testing/run_tests.py @@ -427,7 +427,18 @@ def RunCCTests(build_dir, filter, coverage, capture_core_dump): 'impeller_unittests', filter, shuffle_flags, - coverage=coverage + coverage=coverage, + extra_env={ + # See https://developer.apple.com/documentation/metal/diagnosing_metal_programming_issues_early?language=objc + 'MTL_SHADER_VALIDATION': + '1', # Enables all shader validation tests. + 'MTL_SHADER_VALIDATION_GLOBAL_MEMORY': + '1', # Validates accesses to device and constant memory. + 'MTL_SHADER_VALIDATION_THREADGROUP_MEMORY': + '1', # Validates accesses to threadgroup memory. + 'MTL_SHADER_VALIDATION_TEXTURE_USAGE': + '1', # Validates that texture references are not nil. + } )