Merge branch 'master' of https://github.com/xenia-project/xenia into canary_experimental
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user