Module: Mesa
Branch: master
Commit: da38e99edad6e9ca8ce0a3081f728384cc4e016d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=da38e99edad6e9ca8ce0a3081f728384cc4e016d

Author: Rhys Perry <[email protected]>
Date:   Fri Jul 24 17:11:45 2020 +0100

radv/aco: enable VK_KHR_memory_model

Signed-off-by: Rhys Perry <[email protected]>
Reviewed-by: Daniel Schürmann <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6063>

---

 docs/relnotes/new_features.txt    |  1 +
 src/amd/vulkan/radv_device.c      | 12 ++++++++++--
 src/amd/vulkan/radv_extensions.py |  1 +
 src/amd/vulkan/radv_shader.c      |  2 ++
 4 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt
index 6c93106a527..26ee559d4bf 100644
--- a/docs/relnotes/new_features.txt
+++ b/docs/relnotes/new_features.txt
@@ -24,3 +24,4 @@ RADV_DEBUG=llvm option to enable LLVM backend for RADV
 VK_EXT_image_robustness for ANV
 VK_EXT_shader_atomic_float on ANV
 VK_EXT_4444_formats on ANV and RADV.
+VK_KHR_memory_model on RADV/ACO.
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index c52fbad8f68..e572891d731 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -1041,8 +1041,8 @@ radv_get_physical_device_features_1_2(struct 
radv_physical_device *pdevice,
        f->bufferDeviceAddress = true;
        f->bufferDeviceAddressCaptureReplay = false;
        f->bufferDeviceAddressMultiDevice = false;
-       f->vulkanMemoryModel = false;
-       f->vulkanMemoryModelDeviceScope = false;
+       f->vulkanMemoryModel = !pdevice->use_llvm;
+       f->vulkanMemoryModelDeviceScope = !pdevice->use_llvm;
        f->vulkanMemoryModelAvailabilityVisibilityChains = false;
        f->shaderOutputViewportIndex = true;
        f->shaderOutputLayer = true;
@@ -1366,6 +1366,14 @@ void radv_GetPhysicalDeviceFeatures2(
                        features-> pipelineCreationCacheControl = true;
                        break;
                }
+               case 
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR: {
+                       VkPhysicalDeviceVulkanMemoryModelFeaturesKHR *features =
+                               (VkPhysicalDeviceVulkanMemoryModelFeaturesKHR 
*)ext;
+                       CORE_FEATURE(1, 2, vulkanMemoryModel);
+                       CORE_FEATURE(1, 2, vulkanMemoryModelDeviceScope);
+                       CORE_FEATURE(1, 2, 
vulkanMemoryModelAvailabilityVisibilityChains);
+                       break;
+               }
                case 
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: {
                        VkPhysicalDeviceExtendedDynamicStateFeaturesEXT 
*features =
                                
(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *) ext;
diff --git a/src/amd/vulkan/radv_extensions.py 
b/src/amd/vulkan/radv_extensions.py
index 0e683af52c6..45d24170bbb 100644
--- a/src/amd/vulkan/radv_extensions.py
+++ b/src/amd/vulkan/radv_extensions.py
@@ -110,6 +110,7 @@ EXTENSIONS = [
     Extension('VK_KHR_timeline_semaphore',                2, 
'device->rad_info.has_syncobj_wait_for_submit'),
     Extension('VK_KHR_uniform_buffer_standard_layout',    1, True),
     Extension('VK_KHR_variable_pointers',                 1, True),
+    Extension('VK_KHR_vulkan_memory_model',               3, 
'!device->use_llvm'),
     Extension('VK_KHR_wayland_surface',                   6, 
'VK_USE_PLATFORM_WAYLAND_KHR'),
     Extension('VK_KHR_xcb_surface',                       6, 
'VK_USE_PLATFORM_XCB_KHR'),
     Extension('VK_KHR_xlib_surface',                      6, 
'VK_USE_PLATFORM_XLIB_KHR'),
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index e2792608051..180cb0c9708 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -409,6 +409,8 @@ radv_shader_compile_to_nir(struct radv_device *device,
                                .tessellation = true,
                                .transform_feedback = true,
                                .variable_pointers = true,
+                               .vk_memory_model = 
!device->physical_device->use_llvm,
+                               .vk_memory_model_device_scope = 
!device->physical_device->use_llvm,
                        },
                        .ubo_addr_format = 
nir_address_format_32bit_index_offset,
                        .ssbo_addr_format = 
nir_address_format_32bit_index_offset,

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to