Vulkan: StorageImageExtendedFormats support

(cherry picked from commit caed40d99a)
This commit is contained in:
sunshineinabox
2026-02-28 14:22:22 -06:00
committed by KeatonTheBot
parent ad0e2c0dea
commit e96823c9a0
5 changed files with 17 additions and 2 deletions
@@ -55,6 +55,11 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
context.AddCapability(Capability.ImageQuery);
context.AddCapability(Capability.SampledBuffer);
if (parameters.HostCapabilities.StorageImageExtendedFormats)
{
context.AddCapability(Capability.StorageImageExtendedFormats);
}
if (parameters.HostCapabilities.SupportsShaderFloat64)
{
context.AddCapability(Capability.Float64);
@@ -184,6 +184,11 @@ namespace Ryujinx.Graphics.Shader
return false;
}
bool QueryStorageImageExtendedFormats()
{
return true;
}
/// <summary>
/// Queries host about the presence of the FrontFacing built-in variable bug.
/// </summary>
@@ -11,6 +11,7 @@ namespace Ryujinx.Graphics.Shader.Translation
public readonly bool SupportsShaderFloat64;
public readonly bool SupportsTextureShadowLod;
public readonly bool SupportsViewportMask;
public readonly bool StorageImageExtendedFormats;
public HostCapabilities(
bool reducedPrecision,
@@ -21,7 +22,8 @@ namespace Ryujinx.Graphics.Shader.Translation
bool supportsShaderBarrierDivergence,
bool supportsShaderFloat64,
bool supportsTextureShadowLod,
bool supportsViewportMask)
bool supportsViewportMask,
bool storageImageExtendedFormats)
{
ReducedPrecision = reducedPrecision;
SupportsFragmentShaderInterlock = supportsFragmentShaderInterlock;
@@ -32,6 +34,7 @@ namespace Ryujinx.Graphics.Shader.Translation
SupportsShaderFloat64 = supportsShaderFloat64;
SupportsTextureShadowLod = supportsTextureShadowLod;
SupportsViewportMask = supportsViewportMask;
StorageImageExtendedFormats = storageImageExtendedFormats;
}
}
}
@@ -365,7 +365,8 @@ namespace Ryujinx.Graphics.Shader.Translation
GpuAccessor.QueryHostSupportsShaderBarrierDivergence(),
GpuAccessor.QueryHostSupportsShaderFloat64(),
GpuAccessor.QueryHostSupportsTextureShadowLod(),
GpuAccessor.QueryHostSupportsViewportMask());
GpuAccessor.QueryHostSupportsViewportMask(),
GpuAccessor.QueryStorageImageExtendedFormats());
var parameters = new CodeGenParameters(attributeUsage, definitions, resourceManager.Properties, hostCapabilities, GpuAccessor, Options.TargetApi);
@@ -497,6 +497,7 @@ namespace Ryujinx.Graphics.Vulkan
VertexPipelineStoresAndAtomics = supportedFeatures.VertexPipelineStoresAndAtomics,
RobustBufferAccess = useRobustBufferAccess,
SampleRateShading = supportedFeatures.SampleRateShading,
ShaderStorageImageExtendedFormats = supportedFeatures.ShaderStorageImageExtendedFormats,
};
void* pExtendedFeatures = null;