asahi: Identify multisampling fields of shared layout

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19871>
This commit is contained in:
Alyssa Rosenzweig
2022-11-07 20:01:40 -05:00
committed by Marge Bot
parent 5a20c90508
commit 363ffa779d
2 changed files with 19 additions and 16 deletions
+4 -3
View File
@@ -531,9 +531,10 @@
<struct name="USC Shared" size="4">
<field name="Tag" size="8" start="0" type="USC Control" default="Shared"/>
<field name="Uses shared memory" size="1" start="8" type="bool"/>
<field name="Shared layout" size="6" start="10" type="Shared layout"/>
<field name="Pixel stride in 8 bytes" size="4" start="20" type="uint"/>
<field name="Shared memory per threadgroup in 256 bytes" size="8" start="24" type="uint"/>
<field name="Layout" size="6" start="10" type="Shared layout"/>
<field name="Sample count" size="2" start="16" type="uint" default="1" modifier="log2"/>
<field name="Sample stride in 8 bytes" size="4" start="20" type="uint"/>
<field name="Bytes per threadgroup" size="8" start="24" type="uint" modifier="groups(256)"/>
</struct>
<struct name="USC Shader" size="6">
+15 -13
View File
@@ -1346,11 +1346,12 @@ agx_build_pipeline(struct agx_batch *batch, struct agx_compiled_shader *cs, enum
agx_usc_pack(&b, SHARED, cfg) {
if (stage == PIPE_SHADER_FRAGMENT) {
cfg.uses_shared_memory = true;
cfg.shared_layout = AGX_SHARED_LAYOUT_32X32;
cfg.pixel_stride_in_8_bytes = 1;
cfg.shared_memory_per_threadgroup_in_256_bytes = 32;
cfg.layout = AGX_SHARED_LAYOUT_32X32;
cfg.sample_stride_in_8_bytes = 1;
cfg.bytes_per_threadgroup = 8 * 32 * 32;
cfg.sample_count = 1;
} else {
cfg.shared_layout = AGX_SHARED_LAYOUT_VERTEX_COMPUTE;
cfg.layout = AGX_SHARED_LAYOUT_VERTEX_COMPUTE;
}
}
@@ -1400,9 +1401,9 @@ agx_build_clear_pipeline(struct agx_batch *batch, uint32_t code, uint64_t clear_
agx_usc_pack(&b, SHARED, cfg) {
cfg.uses_shared_memory = true;
cfg.shared_layout = AGX_SHARED_LAYOUT_32X32;
cfg.pixel_stride_in_8_bytes = 1;
cfg.shared_memory_per_threadgroup_in_256_bytes = 32;
cfg.layout = AGX_SHARED_LAYOUT_32X32;
cfg.sample_stride_in_8_bytes = 1;
cfg.bytes_per_threadgroup = 32 * 256;
}
agx_usc_pack(&b, SHADER, cfg) {
@@ -1482,9 +1483,10 @@ agx_build_reload_pipeline(struct agx_batch *batch, uint32_t code, struct pipe_su
agx_usc_pack(&b, SHARED, cfg) {
cfg.uses_shared_memory = true;
cfg.shared_layout = AGX_SHARED_LAYOUT_32X32;
cfg.pixel_stride_in_8_bytes = 1;
cfg.shared_memory_per_threadgroup_in_256_bytes = 32;
cfg.layout = AGX_SHARED_LAYOUT_32X32;
cfg.sample_stride_in_8_bytes = 1;
cfg.sample_count = 1;
cfg.bytes_per_threadgroup = 8 * 32 * 32;
}
agx_usc_pack(&b, SHADER, cfg) {
@@ -1520,9 +1522,9 @@ agx_build_store_pipeline(struct agx_batch *batch, uint32_t code,
agx_usc_pack(&b, SHARED, cfg) {
cfg.uses_shared_memory = true;
cfg.shared_layout = AGX_SHARED_LAYOUT_32X32;
cfg.pixel_stride_in_8_bytes = 1;
cfg.shared_memory_per_threadgroup_in_256_bytes = 32;
cfg.layout = AGX_SHARED_LAYOUT_32X32;
cfg.sample_stride_in_8_bytes = 1;
cfg.bytes_per_threadgroup = 32 * 256;
}
agx_usc_pack(&b, SHADER, cfg) cfg.code = code;