|
|
@@ -6245,7 +6245,7 @@ uint64_t RenderingDeviceDriverD3D12::api_trait_get(ApiTrait p_trait) {
|
|
|
bool RenderingDeviceDriverD3D12::has_feature(Features p_feature) {
|
|
|
switch (p_feature) {
|
|
|
case SUPPORTS_HALF_FLOAT:
|
|
|
- return shader_capabilities.native_16bit_ops && storage_buffer_capabilities.storage_buffer_16_bit_access_is_supported;
|
|
|
+ return shader_capabilities.native_16bit_ops;
|
|
|
case SUPPORTS_FRAGMENT_SHADER_WITH_ONLY_SIDE_EFFECTS:
|
|
|
return true;
|
|
|
case SUPPORTS_BUFFER_DEVICE_ADDRESS:
|
|
|
@@ -6475,7 +6475,6 @@ Error RenderingDeviceDriverD3D12::_check_capabilities() {
|
|
|
subgroup_capabilities.wave_ops_supported = false;
|
|
|
shader_capabilities.shader_model = (D3D_SHADER_MODEL)0;
|
|
|
shader_capabilities.native_16bit_ops = false;
|
|
|
- storage_buffer_capabilities.storage_buffer_16_bit_access_is_supported = false;
|
|
|
format_capabilities.relaxed_casting_supported = false;
|
|
|
|
|
|
{
|
|
|
@@ -6516,9 +6515,8 @@ Error RenderingDeviceDriverD3D12::_check_capabilities() {
|
|
|
|
|
|
D3D12_FEATURE_DATA_D3D12_OPTIONS options = {};
|
|
|
res = device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &options, sizeof(options));
|
|
|
- if (SUCCEEDED(res)) {
|
|
|
- storage_buffer_capabilities.storage_buffer_16_bit_access_is_supported = options.TypedUAVLoadAdditionalFormats;
|
|
|
- }
|
|
|
+ ERR_FAIL_COND_V_MSG(!SUCCEEDED(res), ERR_UNAVAILABLE, "CheckFeatureSupport failed with error " + vformat("0x%08ux", (uint64_t)res) + ".");
|
|
|
+ ERR_FAIL_COND_V_MSG(!options.TypedUAVLoadAdditionalFormats, ERR_UNAVAILABLE, "No support for Typed UAV Load Additional Formats has been found.");
|
|
|
|
|
|
D3D12_FEATURE_DATA_D3D12_OPTIONS1 options1 = {};
|
|
|
res = device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1, &options1, sizeof(options1));
|