You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-02 16:48:55 +00:00
Check for Typed UAV Load Additional Formats capability when creating D3D12 device.
This commit is contained in:
@@ -6238,7 +6238,7 @@ uint64_t RenderingDeviceDriverD3D12::api_trait_get(ApiTrait p_trait) {
|
|||||||
bool RenderingDeviceDriverD3D12::has_feature(Features p_feature) {
|
bool RenderingDeviceDriverD3D12::has_feature(Features p_feature) {
|
||||||
switch (p_feature) {
|
switch (p_feature) {
|
||||||
case SUPPORTS_HALF_FLOAT:
|
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:
|
case SUPPORTS_FRAGMENT_SHADER_WITH_ONLY_SIDE_EFFECTS:
|
||||||
return true;
|
return true;
|
||||||
case SUPPORTS_BUFFER_DEVICE_ADDRESS:
|
case SUPPORTS_BUFFER_DEVICE_ADDRESS:
|
||||||
@@ -6468,7 +6468,6 @@ Error RenderingDeviceDriverD3D12::_check_capabilities() {
|
|||||||
subgroup_capabilities.wave_ops_supported = false;
|
subgroup_capabilities.wave_ops_supported = false;
|
||||||
shader_capabilities.shader_model = (D3D_SHADER_MODEL)0;
|
shader_capabilities.shader_model = (D3D_SHADER_MODEL)0;
|
||||||
shader_capabilities.native_16bit_ops = false;
|
shader_capabilities.native_16bit_ops = false;
|
||||||
storage_buffer_capabilities.storage_buffer_16_bit_access_is_supported = false;
|
|
||||||
format_capabilities.relaxed_casting_supported = false;
|
format_capabilities.relaxed_casting_supported = false;
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -6509,9 +6508,8 @@ Error RenderingDeviceDriverD3D12::_check_capabilities() {
|
|||||||
|
|
||||||
D3D12_FEATURE_DATA_D3D12_OPTIONS options = {};
|
D3D12_FEATURE_DATA_D3D12_OPTIONS options = {};
|
||||||
res = device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &options, sizeof(options));
|
res = device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &options, sizeof(options));
|
||||||
if (SUCCEEDED(res)) {
|
ERR_FAIL_COND_V_MSG(!SUCCEEDED(res), ERR_UNAVAILABLE, "CheckFeatureSupport failed with error " + vformat("0x%08ux", (uint64_t)res) + ".");
|
||||||
storage_buffer_capabilities.storage_buffer_16_bit_access_is_supported = options.TypedUAVLoadAdditionalFormats;
|
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 = {};
|
D3D12_FEATURE_DATA_D3D12_OPTIONS1 options1 = {};
|
||||||
res = device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1, &options1, sizeof(options1));
|
res = device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1, &options1, sizeof(options1));
|
||||||
|
|||||||
@@ -109,10 +109,6 @@ class RenderingDeviceDriverD3D12 : public RenderingDeviceDriver {
|
|||||||
bool native_16bit_ops = false;
|
bool native_16bit_ops = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StorageBufferCapabilities {
|
|
||||||
bool storage_buffer_16_bit_access_is_supported = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct FormatCapabilities {
|
struct FormatCapabilities {
|
||||||
bool relaxed_casting_supported = false;
|
bool relaxed_casting_supported = false;
|
||||||
};
|
};
|
||||||
@@ -138,7 +134,6 @@ class RenderingDeviceDriverD3D12 : public RenderingDeviceDriver {
|
|||||||
FragmentShadingRateCapabilities fsr_capabilities;
|
FragmentShadingRateCapabilities fsr_capabilities;
|
||||||
FragmentDensityMapCapabilities fdm_capabilities;
|
FragmentDensityMapCapabilities fdm_capabilities;
|
||||||
ShaderCapabilities shader_capabilities;
|
ShaderCapabilities shader_capabilities;
|
||||||
StorageBufferCapabilities storage_buffer_capabilities;
|
|
||||||
FormatCapabilities format_capabilities;
|
FormatCapabilities format_capabilities;
|
||||||
BarrierCapabilities barrier_capabilities;
|
BarrierCapabilities barrier_capabilities;
|
||||||
MiscFeaturesSupport misc_features_support;
|
MiscFeaturesSupport misc_features_support;
|
||||||
|
|||||||
Reference in New Issue
Block a user