compiler: Mark clip/cull distance arrays as compact before lowering.
nir_lower_clip_cull_distance_arrays() marks the combined clip/cull distance array as compact. However, when translating in from GLSL or SPIR-V, we were not marking the original float[] arrays as compact. We should do so. That way, we can detect these corner cases properly. Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
3327c93510
commit
ef99f4c8d1
|
@ -353,6 +353,12 @@ nir_visitor::visit(ir_variable *ir)
|
||||||
ir->data.location == VARYING_SLOT_TESS_LEVEL_OUTER)) {
|
ir->data.location == VARYING_SLOT_TESS_LEVEL_OUTER)) {
|
||||||
var->data.compact = ir->type->without_array()->is_scalar();
|
var->data.compact = ir->type->without_array()->is_scalar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (shader->info.stage > MESA_SHADER_VERTEX &&
|
||||||
|
ir->data.location >= VARYING_SLOT_CLIP_DIST0 &&
|
||||||
|
ir->data.location <= VARYING_SLOT_CULL_DIST1) {
|
||||||
|
var->data.compact = ir->type->without_array()->is_scalar();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -363,6 +369,12 @@ nir_visitor::visit(ir_variable *ir)
|
||||||
ir->data.location == VARYING_SLOT_TESS_LEVEL_OUTER)) {
|
ir->data.location == VARYING_SLOT_TESS_LEVEL_OUTER)) {
|
||||||
var->data.compact = ir->type->without_array()->is_scalar();
|
var->data.compact = ir->type->without_array()->is_scalar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (shader->info.stage <= MESA_SHADER_GEOMETRY &&
|
||||||
|
ir->data.location >= VARYING_SLOT_CLIP_DIST0 &&
|
||||||
|
ir->data.location <= VARYING_SLOT_CULL_DIST1) {
|
||||||
|
var->data.compact = ir->type->without_array()->is_scalar();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ir_var_uniform:
|
case ir_var_uniform:
|
||||||
|
|
|
@ -1444,6 +1444,8 @@ apply_var_decoration(struct vtn_builder *b,
|
||||||
switch (builtin) {
|
switch (builtin) {
|
||||||
case SpvBuiltInTessLevelOuter:
|
case SpvBuiltInTessLevelOuter:
|
||||||
case SpvBuiltInTessLevelInner:
|
case SpvBuiltInTessLevelInner:
|
||||||
|
case SpvBuiltInClipDistance:
|
||||||
|
case SpvBuiltInCullDistance:
|
||||||
var_data->compact = true;
|
var_data->compact = true;
|
||||||
break;
|
break;
|
||||||
case SpvBuiltInFragCoord:
|
case SpvBuiltInFragCoord:
|
||||||
|
|
Loading…
Reference in New Issue