mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 19:58:09 +02:00
asahi: rework cf binding xml
for flat shading of fans. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
This commit is contained in:
parent
2fec6bf951
commit
403a20a9f2
3 changed files with 28 additions and 12 deletions
|
|
@ -139,4 +139,21 @@ agx_pack_line_width(float line_width)
|
|||
return MIN2(line_width_fixed, 0xFF);
|
||||
}
|
||||
|
||||
static enum agx_shade_model
|
||||
agx_translate_shade_model(struct agx_varyings_fs *fs, unsigned binding,
|
||||
bool first_provoking_vertex)
|
||||
{
|
||||
if (fs->bindings[binding].smooth) {
|
||||
if (fs->bindings[binding].perspective)
|
||||
return AGX_SHADE_MODEL_PERSPECTIVE;
|
||||
else
|
||||
return AGX_SHADE_MODEL_LINEAR;
|
||||
} else {
|
||||
if (!first_provoking_vertex)
|
||||
return AGX_SHADE_MODEL_FLAT_VERTEX_2;
|
||||
else
|
||||
return AGX_SHADE_MODEL_FLAT_VERTEX_0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -165,7 +165,9 @@
|
|||
<enum name="Shade model">
|
||||
<value name="Flat vertex 0" value="0"/>
|
||||
<value name="Flat vertex 2" value="2"/>
|
||||
<value name="Gouraud" value="3"/>
|
||||
<value name="Linear" value="3"/>
|
||||
<value name="Flat vertex 1" value="6"/>
|
||||
<value name="Perspective" value="7"/>
|
||||
</enum>
|
||||
|
||||
<enum name="Coefficient source">
|
||||
|
|
@ -179,8 +181,7 @@
|
|||
|
||||
<struct name="CF binding" size="4">
|
||||
<field name="Components" size="2" start="0" type="uint" modifier="minus(1)"/>
|
||||
<field name="Shade model" size="2" start="2" type="Shade model"/>
|
||||
<field name="Perspective" size="1" start="4" type="bool"/>
|
||||
<field name="Shade model" size="3" start="2" type="Shade model"/>
|
||||
<field name="Source" size="3" start="5" type="Coefficient source"/>
|
||||
<field name="Base slot" size="8" start="8" type="uint"/>
|
||||
<field name="Base coefficient register" size="8" start="16" type="uint"/>
|
||||
|
|
|
|||
|
|
@ -1559,12 +1559,8 @@ agx_link_varyings_vs_fs(struct agx_pool *pool, struct agx_varyings_vs *vs,
|
|||
agx_pack(bindings + i, CF_BINDING, cfg) {
|
||||
cfg.base_coefficient_register = fs->bindings[i].cf_base;
|
||||
cfg.components = fs->bindings[i].count;
|
||||
cfg.perspective = fs->bindings[i].perspective;
|
||||
|
||||
cfg.shade_model = fs->bindings[i].smooth ? AGX_SHADE_MODEL_GOURAUD
|
||||
: first_provoking_vertex
|
||||
? AGX_SHADE_MODEL_FLAT_VERTEX_0
|
||||
: AGX_SHADE_MODEL_FLAT_VERTEX_2;
|
||||
cfg.shade_model =
|
||||
agx_translate_shade_model(fs, i, first_provoking_vertex);
|
||||
|
||||
if (fs->bindings[i].slot == VARYING_SLOT_PNTC) {
|
||||
assert(fs->bindings[i].offset == 0);
|
||||
|
|
@ -1580,10 +1576,12 @@ agx_link_varyings_vs_fs(struct agx_pool *pool, struct agx_varyings_vs *vs,
|
|||
}
|
||||
|
||||
if (fs->bindings[i].slot == VARYING_SLOT_POS) {
|
||||
if (fs->bindings[i].offset == 2)
|
||||
if (fs->bindings[i].offset == 2) {
|
||||
cfg.source = AGX_COEFFICIENT_SOURCE_FRAGCOORD_Z;
|
||||
else
|
||||
assert(!cfg.perspective && "W must not be perspective divided");
|
||||
} else {
|
||||
assert(!fs->bindings[i].perspective &&
|
||||
"W must not be perspective divided");
|
||||
}
|
||||
}
|
||||
|
||||
assert(cfg.base_coefficient_register + cfg.components <= fs->nr_cf &&
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue