|
513 | 513 | portabilityFeatures->imageViewFormatReinterpretation = true;
|
514 | 514 | portabilityFeatures->imageViewFormatSwizzle = (_metalFeatures.nativeTextureSwizzle ||
|
515 | 515 | getMVKConfig().fullImageViewSwizzle);
|
516 |
| - portabilityFeatures->imageView2DOn3DImage = getMVKConfig().useMTLHeap; |
| 516 | + portabilityFeatures->imageView2DOn3DImage = _metalFeatures.placementHeaps; |
517 | 517 | portabilityFeatures->multisampleArrayImage = _metalFeatures.multisampleArrayTextures;
|
518 | 518 | portabilityFeatures->mutableComparisonSamplers = _metalFeatures.depthSampleCompare;
|
519 | 519 | portabilityFeatures->pointPolygons = false;
|
|
611 | 611 | break;
|
612 | 612 | }
|
613 | 613 | case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT: {
|
614 |
| - if (getMVKConfig().useMTLHeap) { |
615 |
| - auto* extFeatures = (VkPhysicalDeviceImage2DViewOf3DFeaturesEXT*)next; |
616 |
| - extFeatures->image2DViewOf3D = true; |
617 |
| - extFeatures->sampler2DViewOf3D = true; |
618 |
| - } |
| 614 | + auto* extFeatures = (VkPhysicalDeviceImage2DViewOf3DFeaturesEXT*)next; |
| 615 | + extFeatures->image2DViewOf3D = _metalFeatures.placementHeaps; |
| 616 | + extFeatures->sampler2DViewOf3D = _metalFeatures.placementHeaps; |
619 | 617 | break;
|
620 | 618 | }
|
621 | 619 | case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT: {
|
|
2244 | 2242 | break;
|
2245 | 2243 | }
|
2246 | 2244 |
|
| 2245 | + // AMD support for MTLHeap is buggy. |
| 2246 | + auto cfgUseMTLHeap = getMVKConfig().useMTLHeap; |
| 2247 | + bool useMTLHeap = (_properties.vendorID == kAMDVendorId |
| 2248 | + ? cfgUseMTLHeap == MVK_CONFIG_USE_MTLHEAP_ALWAYS |
| 2249 | + : cfgUseMTLHeap != MVK_CONFIG_USE_MTLHEAP_NEVER); |
| 2250 | + |
2247 | 2251 | #if MVK_TVOS
|
2248 | 2252 | _metalFeatures.mslVersionEnum = MTLLanguageVersion2_0;
|
2249 | 2253 | _metalFeatures.mtlBufferAlignment = 64;
|
|
2282 | 2286 |
|
2283 | 2287 | if ( mvkOSVersionIsAtLeast(13.0) ) {
|
2284 | 2288 | _metalFeatures.mslVersionEnum = MTLLanguageVersion2_2;
|
2285 |
| - _metalFeatures.placementHeaps = getMVKConfig().useMTLHeap; |
| 2289 | + _metalFeatures.placementHeaps = useMTLHeap; |
2286 | 2290 | _metalFeatures.nativeTextureSwizzle = true;
|
2287 | 2291 | if (supportsMTLGPUFamily(Apple3)) {
|
2288 | 2292 | _metalFeatures.native3DCompressedTextures = true;
|
|
2384 | 2388 |
|
2385 | 2389 | if ( mvkOSVersionIsAtLeast(13.0) ) {
|
2386 | 2390 | _metalFeatures.mslVersionEnum = MTLLanguageVersion2_2;
|
2387 |
| - _metalFeatures.placementHeaps = getMVKConfig().useMTLHeap; |
| 2391 | + _metalFeatures.placementHeaps = useMTLHeap; |
2388 | 2392 | _metalFeatures.nativeTextureSwizzle = true;
|
2389 | 2393 |
|
2390 | 2394 | if (supportsMTLGPUFamily(Apple3)) {
|
|
2495 | 2499 | }
|
2496 | 2500 | if (supportsMTLGPUFamily(Mac2)) {
|
2497 | 2501 | _metalFeatures.nativeTextureSwizzle = true;
|
2498 |
| - _metalFeatures.placementHeaps = getMVKConfig().useMTLHeap; |
| 2502 | + _metalFeatures.placementHeaps = useMTLHeap; |
2499 | 2503 | _metalFeatures.renderWithoutAttachments = true;
|
2500 | 2504 | }
|
2501 | 2505 | }
|
@@ -3623,7 +3627,7 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope
|
3623 | 3627 | if (!_metalFeatures.arrayOfTextures || !_metalFeatures.arrayOfSamplers) {
|
3624 | 3628 | pWritableExtns->vk_EXT_descriptor_indexing.enabled = false;
|
3625 | 3629 | }
|
3626 |
| - if (!getMVKConfig().useMTLHeap) { |
| 3630 | + if (!_metalFeatures.placementHeaps) { |
3627 | 3631 | pWritableExtns->vk_EXT_image_2d_view_of_3d.enabled = false;
|
3628 | 3632 | }
|
3629 | 3633 |
|
|
0 commit comments