mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 18:30:09 +01:00
i965: Handle unwritten PSIZ/VIEWPORT/LAYER outputs in vec4 shaders.
This can occur if the shader is capturing some of the values from the VUE header for transform feedback, but the shader hasn't written all of them. Reviewed-by: Juan A. Suarez Romero <jasuarez@igalia.com>
This commit is contained in:
parent
3bec992e36
commit
c9fbe772ba
1 changed files with 3 additions and 3 deletions
|
|
@ -1245,7 +1245,7 @@ vec4_visitor::emit_psiz_and_flags(dst_reg reg)
|
|||
emit(MOV(retype(reg, BRW_REGISTER_TYPE_UD), brw_imm_ud(0u)));
|
||||
} else {
|
||||
emit(MOV(retype(reg, BRW_REGISTER_TYPE_D), brw_imm_d(0)));
|
||||
if (prog_data->vue_map.slots_valid & VARYING_BIT_PSIZ) {
|
||||
if (output_reg[VARYING_SLOT_PSIZ][0].file != BAD_FILE) {
|
||||
dst_reg reg_w = reg;
|
||||
reg_w.writemask = WRITEMASK_W;
|
||||
src_reg reg_as_src = src_reg(output_reg[VARYING_SLOT_PSIZ][0]);
|
||||
|
|
@ -1253,14 +1253,14 @@ vec4_visitor::emit_psiz_and_flags(dst_reg reg)
|
|||
reg_as_src.swizzle = brw_swizzle_for_size(1);
|
||||
emit(MOV(reg_w, reg_as_src));
|
||||
}
|
||||
if (prog_data->vue_map.slots_valid & VARYING_BIT_LAYER) {
|
||||
if (output_reg[VARYING_SLOT_LAYER][0].file != BAD_FILE) {
|
||||
dst_reg reg_y = reg;
|
||||
reg_y.writemask = WRITEMASK_Y;
|
||||
reg_y.type = BRW_REGISTER_TYPE_D;
|
||||
output_reg[VARYING_SLOT_LAYER][0].type = reg_y.type;
|
||||
emit(MOV(reg_y, src_reg(output_reg[VARYING_SLOT_LAYER][0])));
|
||||
}
|
||||
if (prog_data->vue_map.slots_valid & VARYING_BIT_VIEWPORT) {
|
||||
if (output_reg[VARYING_SLOT_VIEWPORT][0].file != BAD_FILE) {
|
||||
dst_reg reg_z = reg;
|
||||
reg_z.writemask = WRITEMASK_Z;
|
||||
reg_z.type = BRW_REGISTER_TYPE_D;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue