From: Josh Simmons Date: Sun, 17 Nov 2024 21:38:24 +0000 (+0100) Subject: shark-shaders: Use readonly qualifier on readonly buffers X-Git-Url: https://git.nega.tv//gitweb.cgi?a=commitdiff_plain;h=28d699c90f85fe09a67138946138fee0b247a1f9;p=josh%2Fnarcissus shark-shaders: Use readonly qualifier on readonly buffers Radv emits vector loads for these buffers if we don't apply readonly. So this way we ensure scalar loads for everything in the rasterize shader. --- diff --git a/title/shark-shaders/shaders/draw_2d.h b/title/shark-shaders/shaders/draw_2d.h index bcef539..05ce1e2 100644 --- a/title/shark-shaders/shaders/draw_2d.h +++ b/title/shark-shaders/shaders/draw_2d.h @@ -65,23 +65,23 @@ CmdGlyph decode_glyph(Cmd cmd) { return glyph; } -layout(buffer_reference, std430, buffer_reference_align = 16) readonly buffer CommandRef -{ +layout(buffer_reference, std430, buffer_reference_align = 16) readonly buffer CommandRef { Cmd values[]; }; -layout(buffer_reference, std430, buffer_reference_align = 16) readonly buffer ScissorRef -{ +layout(buffer_reference, std430, buffer_reference_align = 16) readonly buffer ScissorRef { Scissor values[]; }; -layout(buffer_reference, std430, buffer_reference_align = 16) readonly buffer GlyphRef -{ +layout(buffer_reference, std430, buffer_reference_align = 16) readonly buffer GlyphRef { Glyph values[]; }; -layout(buffer_reference, std430, buffer_reference_align = 4) buffer CoarseRef -{ +layout(buffer_reference, std430, buffer_reference_align = 4) buffer CoarseRef { + uint values[]; +}; + +layout(buffer_reference, std430, buffer_reference_align = 4) readonly buffer CoarseReadRef { uint values[]; }; @@ -89,7 +89,15 @@ layout(buffer_reference, std430, buffer_reference_align = 4) buffer FineRef { uint values[]; }; -layout(buffer_reference, std430, buffer_reference_align = 4) buffer TileRef { +layout(buffer_reference, std430, buffer_reference_align = 4) readonly buffer FineReadRef { + uint values[]; +}; + +layout(buffer_reference, std430, buffer_reference_align = 16) buffer TileRef { + Tile values[]; +}; + +layout(buffer_reference, std430, buffer_reference_align = 16) readonly buffer TileReadRef { Tile values[]; }; diff --git a/title/shark-shaders/shaders/draw_2d_bin_3_resolve.comp b/title/shark-shaders/shaders/draw_2d_bin_3_resolve.comp index 46427d4..5a8f389 100644 --- a/title/shark-shaders/shaders/draw_2d_bin_3_resolve.comp +++ b/title/shark-shaders/shaders/draw_2d_bin_3_resolve.comp @@ -20,7 +20,7 @@ struct ResolveConstants { CommandRef draw_buffer; ScissorRef scissor_buffer; GlyphRef glyph_buffer; - CoarseRef coarse_buffer; + CoarseReadRef coarse_buffer; FineRef fine_buffer; TileRef tile_buffer; }; diff --git a/title/shark-shaders/shaders/draw_2d_rasterize.comp b/title/shark-shaders/shaders/draw_2d_rasterize.comp index 3e9c1c4..a88124e 100644 --- a/title/shark-shaders/shaders/draw_2d_rasterize.comp +++ b/title/shark-shaders/shaders/draw_2d_rasterize.comp @@ -21,9 +21,9 @@ struct RasterizeConstants { CommandRef draw_buffer; ScissorRef scissor_buffer; GlyphRef glyph_buffer; - CoarseRef coarse_buffer; - FineRef fine_buffer; - TileRef tile_buffer; + CoarseReadRef coarse_buffer; + FineReadRef fine_buffer; + TileReadRef tile_buffer; }; layout(std430, push_constant) uniform RasterizeConstantsBlock {