mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
zink: fix streamout emission for super-enhanced layouts
if we get some crazy matrix types in here then we need to ensure that we accurately unwrap them and copy the components fixes KHR-GL46.enhanced_layouts.xfb_stride Fixes:1b130c42b8("zink: implement streamout and xfb handling in ntv") Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9271> (cherry picked from commit1b25e3a701)
This commit is contained in:
parent
1b1a7711a1
commit
7704e09cd8
2 changed files with 11 additions and 5 deletions
|
|
@ -1300,7 +1300,7 @@
|
|||
"description": "zink: fix streamout emission for super-enhanced layouts",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "1b130c42b8dbed3a7cabaf47e2695e7db8429b56"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -973,12 +973,18 @@ emit_so_outputs(struct ntv_context *ctx,
|
|||
* and re-pack them into the desired output type
|
||||
*/
|
||||
for (unsigned c = 0; c < so_output.num_components; c++) {
|
||||
uint32_t member[] = { so_output.start_component + c };
|
||||
SpvId base_type = get_glsl_type(ctx, glsl_without_array(out_type));
|
||||
uint32_t member[2];
|
||||
unsigned member_idx = 0;
|
||||
if (glsl_type_is_matrix(out_type)) {
|
||||
member_idx = 1;
|
||||
member[0] = so_output.register_index;
|
||||
}
|
||||
member[member_idx] = so_output.start_component + c;
|
||||
SpvId base_type = get_glsl_basetype(ctx, glsl_get_base_type(glsl_without_array_or_matrix(out_type)));
|
||||
|
||||
if (slot == VARYING_SLOT_CLIP_DIST1)
|
||||
member[0] += 4;
|
||||
components[c] = spirv_builder_emit_composite_extract(&ctx->builder, base_type, src, member, 1);
|
||||
member[member_idx] += 4;
|
||||
components[c] = spirv_builder_emit_composite_extract(&ctx->builder, base_type, src, member, 1 + member_idx);
|
||||
}
|
||||
result = spirv_builder_emit_composite_construct(&ctx->builder, type, components, so_output.num_components);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue