mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 06:20:19 +01:00
i915: separate the fog term from the specular color term.
Previously fog parameter and specular color are packed into the same dword. Note specular color should be packed in BGRA for device, so if fog parameter and specular color all are present, fog parameter will dirty the alpha term of specular color. This fixes rendering issue when playing 'Yo Frankie' on 915/945.
This commit is contained in:
parent
15b2e0d138
commit
129b6bc4e3
1 changed files with 3 additions and 19 deletions
|
|
@ -1105,30 +1105,14 @@ i915ValidateFragmentProgram(struct i915_context *i915)
|
|||
EMIT_ATTR(_TNL_ATTRIB_COLOR0, EMIT_4UB_4F_BGRA, S4_VFMT_COLOR, 4);
|
||||
}
|
||||
|
||||
if ((inputsRead & (FRAG_BIT_COL1 | FRAG_BIT_FOGC)) ||
|
||||
i915->vertex_fog != I915_FOG_NONE) {
|
||||
|
||||
if (inputsRead & FRAG_BIT_COL1) {
|
||||
intel->specoffset = offset / 4;
|
||||
EMIT_ATTR(_TNL_ATTRIB_COLOR1, EMIT_3UB_3F_BGR, S4_VFMT_SPEC_FOG, 3);
|
||||
}
|
||||
else
|
||||
EMIT_PAD(3);
|
||||
|
||||
if ((inputsRead & FRAG_BIT_FOGC) || i915->vertex_fog != I915_FOG_NONE)
|
||||
EMIT_ATTR(_TNL_ATTRIB_FOG, EMIT_1UB_1F, S4_VFMT_SPEC_FOG, 1);
|
||||
else
|
||||
EMIT_PAD(1);
|
||||
if (inputsRead & FRAG_BIT_COL1) {
|
||||
intel->specoffset = offset / 4;
|
||||
EMIT_ATTR(_TNL_ATTRIB_COLOR1, EMIT_4UB_4F_BGRA, S4_VFMT_SPEC_FOG, 4);
|
||||
}
|
||||
|
||||
/* XXX this was disabled, but enabling this code helped fix the Glean
|
||||
* tfragprog1 fog tests.
|
||||
*/
|
||||
#if 1
|
||||
if ((inputsRead & FRAG_BIT_FOGC) || i915->vertex_fog != I915_FOG_NONE) {
|
||||
EMIT_ATTR(_TNL_ATTRIB_FOG, EMIT_1F, S4_VFMT_FOG_PARAM, 4);
|
||||
}
|
||||
#endif
|
||||
|
||||
for (i = 0; i < p->ctx->Const.MaxTextureCoordUnits; i++) {
|
||||
if (inputsRead & FRAG_BIT_TEX(i)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue