Vulkan: StorageImageExtendedFormats support

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