summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRhys Perry <pendingchaos02@gmail.com>2020-07-24 17:11:45 +0100
committerMarge Bot <eric+marge@anholt.net>2020-08-05 09:45:54 +0000
commitda38e99edad6e9ca8ce0a3081f728384cc4e016d (patch)
tree3c5b82a5c45d74cc22381c88a7ea5a7098c46042
parent389c95a8890ebc6ee0ef174b715142885d848241 (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.txt1
-rw-r--r--src/amd/vulkan/radv_device.c12
-rw-r--r--src/amd/vulkan/radv_extensions.py1
-rw-r--r--src/amd/vulkan/radv_shader.c2
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,