diff options
author | Rhys Perry <pendingchaos02@gmail.com> | 2020-07-24 17:11:45 +0100 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2020-08-05 09:45:54 +0000 |
commit | da38e99edad6e9ca8ce0a3081f728384cc4e016d (patch) | |
tree | 3c5b82a5c45d74cc22381c88a7ea5a7098c46042 | |
parent | 389c95a8890ebc6ee0ef174b715142885d848241 (diff) |
radv/aco: enable VK_KHR_memory_model
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6063>
-rw-r--r-- | docs/relnotes/new_features.txt | 1 | ||||
-rw-r--r-- | src/amd/vulkan/radv_device.c | 12 | ||||
-rw-r--r-- | src/amd/vulkan/radv_extensions.py | 1 | ||||
-rw-r--r-- | 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, |