vkd3d-shader: Enable native 16-bit path for min16float DXIL.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
parent
8989360087
commit
896e6fb868
|
@ -309,6 +309,7 @@ enum vkd3d_shader_target_extension
|
|||
* but not byte address buffer. */
|
||||
VKD3D_SHADER_TARGET_EXTENSION_ASSUME_PER_COMPONENT_SSBO_ROBUSTNESS,
|
||||
VKD3D_SHADER_TARGET_EXTENSION_BARYCENTRIC_KHR,
|
||||
VKD3D_SHADER_TARGET_EXTENSION_MIN_PRECISION_IS_NATIVE_16BIT,
|
||||
VKD3D_SHADER_TARGET_EXTENSION_COUNT,
|
||||
};
|
||||
|
||||
|
|
|
@ -776,6 +776,18 @@ int vkd3d_shader_compile_dxil(const struct vkd3d_shader_code *dxbc,
|
|||
goto end;
|
||||
}
|
||||
}
|
||||
else if (compiler_args->target_extensions[i] == VKD3D_SHADER_TARGET_EXTENSION_MIN_PRECISION_IS_NATIVE_16BIT)
|
||||
{
|
||||
static const dxil_spv_option_min_precision_native_16bit helper =
|
||||
{ { DXIL_SPV_OPTION_MIN_PRECISION_NATIVE_16BIT }, DXIL_SPV_TRUE };
|
||||
|
||||
if (dxil_spv_converter_add_option(converter, &helper.base) != DXIL_SPV_SUCCESS)
|
||||
{
|
||||
ERR("dxil-spirv does not support MIN_PRECISION_NATIVE_16BIT.\n");
|
||||
ret = VKD3D_ERROR_NOT_IMPLEMENTED;
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (compiler_args->dual_source_blending)
|
||||
|
@ -1262,6 +1274,18 @@ int vkd3d_shader_compile_dxil_export(const struct vkd3d_shader_code *dxil,
|
|||
goto end;
|
||||
}
|
||||
}
|
||||
else if (compiler_args->target_extensions[i] == VKD3D_SHADER_TARGET_EXTENSION_MIN_PRECISION_IS_NATIVE_16BIT)
|
||||
{
|
||||
static const dxil_spv_option_min_precision_native_16bit helper =
|
||||
{ { DXIL_SPV_OPTION_MIN_PRECISION_NATIVE_16BIT }, DXIL_SPV_TRUE };
|
||||
|
||||
if (dxil_spv_converter_add_option(converter, &helper.base) != DXIL_SPV_SUCCESS)
|
||||
{
|
||||
ERR("dxil-spirv does not support MIN_PRECISION_NATIVE_16BIT.\n");
|
||||
ret = VKD3D_ERROR_NOT_IMPLEMENTED;
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6080,6 +6080,12 @@ static void vkd3d_init_shader_extensions(struct d3d12_device *device)
|
|||
device->vk_info.shader_extensions[device->vk_info.shader_extension_count++] =
|
||||
VKD3D_SHADER_TARGET_EXTENSION_BARYCENTRIC_KHR;
|
||||
}
|
||||
|
||||
if (device->d3d12_caps.options4.Native16BitShaderOpsSupported)
|
||||
{
|
||||
device->vk_info.shader_extensions[device->vk_info.shader_extension_count++] =
|
||||
VKD3D_SHADER_TARGET_EXTENSION_MIN_PRECISION_IS_NATIVE_16BIT;
|
||||
}
|
||||
}
|
||||
|
||||
static void vkd3d_compute_shader_interface_key(struct d3d12_device *device)
|
||||
|
|
Loading…
Reference in New Issue