Merge branch 'master' of https://github.com/xenia-project/xenia into canary_experimental

This commit is contained in:
Gliniak
2025-08-15 15:37:50 +02:00
78 changed files with 3438 additions and 2888 deletions

View File

@@ -38,27 +38,34 @@ SpirvShaderTranslator::Features::Features(bool all)
demote_to_helper_invocation(all) {}
SpirvShaderTranslator::Features::Features(
const ui::vulkan::VulkanProvider::DeviceInfo& device_info)
: max_storage_buffer_range(device_info.maxStorageBufferRange),
full_draw_index_uint32(device_info.fullDrawIndexUint32),
const ui::vulkan::VulkanDevice* const vulkan_device)
: max_storage_buffer_range(
vulkan_device->properties().maxStorageBufferRange),
full_draw_index_uint32(vulkan_device->properties().fullDrawIndexUint32),
vertex_pipeline_stores_and_atomics(
device_info.vertexPipelineStoresAndAtomics),
fragment_stores_and_atomics(device_info.fragmentStoresAndAtomics),
clip_distance(device_info.shaderClipDistance),
cull_distance(device_info.shaderCullDistance),
image_view_format_swizzle(device_info.imageViewFormatSwizzle),
vulkan_device->properties().vertexPipelineStoresAndAtomics),
fragment_stores_and_atomics(
vulkan_device->properties().fragmentStoresAndAtomics),
clip_distance(vulkan_device->properties().shaderClipDistance),
cull_distance(vulkan_device->properties().shaderCullDistance),
image_view_format_swizzle(
vulkan_device->properties().imageViewFormatSwizzle),
signed_zero_inf_nan_preserve_float32(
device_info.shaderSignedZeroInfNanPreserveFloat32),
denorm_flush_to_zero_float32(device_info.shaderDenormFlushToZeroFloat32),
rounding_mode_rte_float32(device_info.shaderRoundingModeRTEFloat32),
vulkan_device->properties().shaderSignedZeroInfNanPreserveFloat32),
denorm_flush_to_zero_float32(
vulkan_device->properties().shaderDenormFlushToZeroFloat32),
rounding_mode_rte_float32(
vulkan_device->properties().shaderRoundingModeRTEFloat32),
fragment_shader_sample_interlock(
device_info.fragmentShaderSampleInterlock),
demote_to_helper_invocation(device_info.shaderDemoteToHelperInvocation) {
if (device_info.apiVersion >= VK_MAKE_API_VERSION(0, 1, 2, 0)) {
vulkan_device->properties().fragmentShaderSampleInterlock),
demote_to_helper_invocation(
vulkan_device->properties().shaderDemoteToHelperInvocation) {
const uint32_t vulkan_api_version = vulkan_device->properties().apiVersion;
if (vulkan_api_version >= VK_MAKE_API_VERSION(0, 1, 2, 0)) {
spirv_version = spv::Spv_1_5;
} else if (device_info.ext_1_2_VK_KHR_spirv_1_4) {
} else if (vulkan_device->extensions().ext_1_2_KHR_spirv_1_4) {
spirv_version = spv::Spv_1_4;
} else if (device_info.apiVersion >= VK_MAKE_API_VERSION(0, 1, 1, 0)) {
} else if (vulkan_api_version >= VK_MAKE_API_VERSION(0, 1, 1, 0)) {
spirv_version = spv::Spv_1_3;
} else {
spirv_version = spv::Spv_1_0;