radv: Implement VK_EXT_buffer_device_address.
v2: Also update the release notes. Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
This commit is contained in:
@@ -40,7 +40,7 @@ TBD.
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>GL_EXT_texture_compression_s3tc_srgb on Gallium drivers and i965 (ES extension).</li>
|
<li>GL_EXT_texture_compression_s3tc_srgb on Gallium drivers and i965 (ES extension).</li>
|
||||||
<li>VK_EXT_buffer_device_address on Intel.</li>
|
<li>VK_EXT_buffer_device_address on Intel and RADV.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>Bug fixes</h2>
|
<h2>Bug fixes</h2>
|
||||||
|
@@ -869,6 +869,14 @@ void radv_GetPhysicalDeviceFeatures2(
|
|||||||
features->memoryPriority = VK_TRUE;
|
features->memoryPriority = VK_TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT: {
|
||||||
|
VkPhysicalDeviceBufferAddressFeaturesEXT *features =
|
||||||
|
(VkPhysicalDeviceBufferAddressFeaturesEXT *)ext;
|
||||||
|
features->bufferDeviceAddress = true;
|
||||||
|
features->bufferDeviceAddressCaptureReplay = false;
|
||||||
|
features->bufferDeviceAddressMultiDevice = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1694,7 +1702,8 @@ VkResult radv_CreateDevice(
|
|||||||
* from the descriptor set anymore, so we have to use a global BO list.
|
* from the descriptor set anymore, so we have to use a global BO list.
|
||||||
*/
|
*/
|
||||||
device->use_global_bo_list =
|
device->use_global_bo_list =
|
||||||
device->enabled_extensions.EXT_descriptor_indexing;
|
device->enabled_extensions.EXT_descriptor_indexing ||
|
||||||
|
device->enabled_extensions.EXT_buffer_device_address;
|
||||||
|
|
||||||
mtx_init(&device->shader_slab_mutex, mtx_plain);
|
mtx_init(&device->shader_slab_mutex, mtx_plain);
|
||||||
list_inithead(&device->shader_slabs);
|
list_inithead(&device->shader_slabs);
|
||||||
@@ -4032,6 +4041,15 @@ void radv_DestroyBuffer(
|
|||||||
vk_free2(&device->alloc, pAllocator, buffer);
|
vk_free2(&device->alloc, pAllocator, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VkDeviceAddress radv_GetBufferDeviceAddressEXT(
|
||||||
|
VkDevice device,
|
||||||
|
const VkBufferDeviceAddressInfoEXT* pInfo)
|
||||||
|
{
|
||||||
|
RADV_FROM_HANDLE(radv_buffer, buffer, pInfo->buffer);
|
||||||
|
return radv_buffer_get_va(buffer->bo) + buffer->offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline unsigned
|
static inline unsigned
|
||||||
si_tile_mode_index(const struct radv_image *image, unsigned level, bool stencil)
|
si_tile_mode_index(const struct radv_image *image, unsigned level, bool stencil)
|
||||||
{
|
{
|
||||||
|
@@ -93,6 +93,7 @@ EXTENSIONS = [
|
|||||||
Extension('VK_KHR_display', 23, 'VK_USE_PLATFORM_DISPLAY_KHR'),
|
Extension('VK_KHR_display', 23, 'VK_USE_PLATFORM_DISPLAY_KHR'),
|
||||||
Extension('VK_EXT_direct_mode_display', 1, 'VK_USE_PLATFORM_DISPLAY_KHR'),
|
Extension('VK_EXT_direct_mode_display', 1, 'VK_USE_PLATFORM_DISPLAY_KHR'),
|
||||||
Extension('VK_EXT_acquire_xlib_display', 1, 'VK_USE_PLATFORM_XLIB_XRANDR_EXT'),
|
Extension('VK_EXT_acquire_xlib_display', 1, 'VK_USE_PLATFORM_XLIB_XRANDR_EXT'),
|
||||||
|
Extension('VK_EXT_buffer_device_address', 1, True),
|
||||||
Extension('VK_EXT_calibrated_timestamps', 1, True),
|
Extension('VK_EXT_calibrated_timestamps', 1, True),
|
||||||
Extension('VK_EXT_conditional_rendering', 1, True),
|
Extension('VK_EXT_conditional_rendering', 1, True),
|
||||||
Extension('VK_EXT_conservative_rasterization', 1, 'device->rad_info.chip_class >= GFX9'),
|
Extension('VK_EXT_conservative_rasterization', 1, 'device->rad_info.chip_class >= GFX9'),
|
||||||
|
@@ -232,6 +232,7 @@ radv_shader_compile_to_nir(struct radv_device *device,
|
|||||||
.int16 = true,
|
.int16 = true,
|
||||||
.int64 = true,
|
.int64 = true,
|
||||||
.multiview = true,
|
.multiview = true,
|
||||||
|
.physical_storage_buffer_address = true,
|
||||||
.runtime_descriptor_array = true,
|
.runtime_descriptor_array = true,
|
||||||
.shader_viewport_index_layer = true,
|
.shader_viewport_index_layer = true,
|
||||||
.stencil_export = true,
|
.stencil_export = true,
|
||||||
@@ -250,6 +251,7 @@ radv_shader_compile_to_nir(struct radv_device *device,
|
|||||||
},
|
},
|
||||||
.ubo_ptr_type = glsl_vector_type(GLSL_TYPE_UINT, 2),
|
.ubo_ptr_type = glsl_vector_type(GLSL_TYPE_UINT, 2),
|
||||||
.ssbo_ptr_type = glsl_vector_type(GLSL_TYPE_UINT, 2),
|
.ssbo_ptr_type = glsl_vector_type(GLSL_TYPE_UINT, 2),
|
||||||
|
.phys_ssbo_ptr_type = glsl_vector_type(GLSL_TYPE_UINT64, 1),
|
||||||
.push_const_ptr_type = glsl_uint_type(),
|
.push_const_ptr_type = glsl_uint_type(),
|
||||||
.shared_ptr_type = glsl_uint_type(),
|
.shared_ptr_type = glsl_uint_type(),
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user