From da38e99edad6e9ca8ce0a3081f728384cc4e016d Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Fri, 24 Jul 2020 17:11:45 +0100 Subject: radv/aco: enable VK_KHR_memory_model MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rhys Perry Reviewed-by: Daniel Schürmann Part-of: --- 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, -- cgit v1.2.3