mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 13:28:06 +02:00
Fix previously un-noticed issue with flat-shaded points.
This commit is contained in:
parent
faf96a157d
commit
4ccee80190
4 changed files with 18 additions and 30 deletions
|
|
@ -469,6 +469,7 @@ viaCreateContext(const __GLcontextModes *mesaVis,
|
|||
vmesa->texHeap = mmInit(0, viaScreen->textureSize);
|
||||
vmesa->renderIndex = ~0;
|
||||
vmesa->setupIndex = ~0;
|
||||
vmesa->hwPrimitive = GL_POLYGON+1;
|
||||
|
||||
/* KW: Hardwire this. Was previously set bogusly in
|
||||
* viaCreateBuffer. Needs work before PBUFFER can be used:
|
||||
|
|
|
|||
|
|
@ -168,7 +168,6 @@ struct via_context_t {
|
|||
|
||||
/* Hardware register
|
||||
*/
|
||||
GLuint regCmdA;
|
||||
GLuint regCmdA_End;
|
||||
GLuint regCmdB;
|
||||
|
||||
|
|
|
|||
|
|
@ -780,7 +780,6 @@ void viaInitState(GLcontext *ctx)
|
|||
{
|
||||
viaContextPtr vmesa = VIA_CONTEXT(ctx);
|
||||
|
||||
vmesa->regCmdA = HC_ACMD_HCmdA;
|
||||
vmesa->regCmdB = HC_ACMD_HCmdB;
|
||||
vmesa->regEnable = HC_HenCW_MASK;
|
||||
|
||||
|
|
@ -1355,18 +1354,6 @@ static void viaChooseDepthState(GLcontext *ctx)
|
|||
}
|
||||
}
|
||||
|
||||
static void viaChooseLightState(GLcontext *ctx)
|
||||
{
|
||||
viaContextPtr vmesa = VIA_CONTEXT(ctx);
|
||||
|
||||
if (ctx->Light.ShadeModel == GL_SMOOTH) {
|
||||
vmesa->regCmdA |= HC_HShading_Gouraud;
|
||||
}
|
||||
else {
|
||||
vmesa->regCmdA &= ~HC_HShading_Gouraud;
|
||||
}
|
||||
}
|
||||
|
||||
static void viaChooseLineState(GLcontext *ctx)
|
||||
{
|
||||
viaContextPtr vmesa = VIA_CONTEXT(ctx);
|
||||
|
|
@ -1559,9 +1546,6 @@ void viaValidateState( GLcontext *ctx )
|
|||
if (vmesa->newState & _NEW_FOG)
|
||||
viaChooseFogState(ctx);
|
||||
|
||||
if (vmesa->newState & _NEW_LIGHT)
|
||||
viaChooseLightState(ctx);
|
||||
|
||||
if (vmesa->newState & _NEW_LINE)
|
||||
viaChooseLineState(ctx);
|
||||
|
||||
|
|
|
|||
|
|
@ -837,10 +837,7 @@ static void viaRenderStart(GLcontext *ctx)
|
|||
|
||||
static void viaRenderFinish(GLcontext *ctx)
|
||||
{
|
||||
if (VIA_CONTEXT(ctx)->renderIndex & VIA_FALLBACK_BIT)
|
||||
_swrast_flush(ctx);
|
||||
else
|
||||
VIA_FINISH_PRIM(VIA_CONTEXT(ctx));
|
||||
VIA_FINISH_PRIM(VIA_CONTEXT(ctx));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -870,42 +867,46 @@ void viaRasterPrimitive(GLcontext *ctx,
|
|||
viaEmitState(vmesa);
|
||||
}
|
||||
|
||||
vmesa->regCmdA_End = HC_ACMD_HCmdA;
|
||||
|
||||
if (ctx->Light.ShadeModel == GL_SMOOTH) {
|
||||
vmesa->regCmdA_End |= HC_HShading_Gouraud;
|
||||
}
|
||||
|
||||
regCmdB = vmesa->regCmdB;
|
||||
|
||||
switch (hwprim) {
|
||||
case GL_POINTS:
|
||||
vmesa->regCmdA_End = vmesa->regCmdA | HC_HPMType_Point | HC_HVCycle_Full;
|
||||
if (ctx->Light.ShadeModel == GL_FLAT)
|
||||
vmesa->regCmdA_End |= HC_HShading_FlatA;
|
||||
vmesa->regCmdA_End |= HC_HPMType_Point | HC_HVCycle_Full;
|
||||
vmesa->regCmdA_End |= HC_HShading_Gouraud; /* always Gouraud shade points?!? */
|
||||
break;
|
||||
case GL_LINES:
|
||||
vmesa->regCmdA_End = vmesa->regCmdA | HC_HPMType_Line | HC_HVCycle_Full;
|
||||
vmesa->regCmdA_End |= HC_HPMType_Line | HC_HVCycle_Full;
|
||||
if (ctx->Light.ShadeModel == GL_FLAT)
|
||||
vmesa->regCmdA_End |= HC_HShading_FlatB;
|
||||
break;
|
||||
case GL_LINE_LOOP:
|
||||
case GL_LINE_STRIP:
|
||||
vmesa->regCmdA_End = vmesa->regCmdA | HC_HPMType_Line | HC_HVCycle_AFP |
|
||||
vmesa->regCmdA_End |= HC_HPMType_Line | HC_HVCycle_AFP |
|
||||
HC_HVCycle_AB | HC_HVCycle_NewB;
|
||||
regCmdB |= HC_HVCycle_AB | HC_HVCycle_NewB | HC_HLPrst_MASK;
|
||||
if (ctx->Light.ShadeModel == GL_FLAT)
|
||||
vmesa->regCmdA_End |= HC_HShading_FlatB;
|
||||
break;
|
||||
case GL_TRIANGLES:
|
||||
vmesa->regCmdA_End = vmesa->regCmdA | HC_HPMType_Tri | HC_HVCycle_Full;
|
||||
vmesa->regCmdA_End |= HC_HPMType_Tri | HC_HVCycle_Full;
|
||||
if (ctx->Light.ShadeModel == GL_FLAT)
|
||||
vmesa->regCmdA_End |= HC_HShading_FlatC;
|
||||
break;
|
||||
case GL_TRIANGLE_STRIP:
|
||||
vmesa->regCmdA_End = vmesa->regCmdA | HC_HPMType_Tri | HC_HVCycle_AFP |
|
||||
vmesa->regCmdA_End |= HC_HPMType_Tri | HC_HVCycle_AFP |
|
||||
HC_HVCycle_AC | HC_HVCycle_BB | HC_HVCycle_NewC;
|
||||
regCmdB |= HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
|
||||
if (ctx->Light.ShadeModel == GL_FLAT)
|
||||
vmesa->regCmdA_End |= HC_HShading_FlatB;
|
||||
break;
|
||||
case GL_TRIANGLE_FAN:
|
||||
vmesa->regCmdA_End = vmesa->regCmdA | HC_HPMType_Tri | HC_HVCycle_AFP |
|
||||
vmesa->regCmdA_End |= HC_HPMType_Tri | HC_HVCycle_AFP |
|
||||
HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
|
||||
regCmdB |= HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
|
||||
if (ctx->Light.ShadeModel == GL_FLAT)
|
||||
|
|
@ -918,7 +919,7 @@ void viaRasterPrimitive(GLcontext *ctx,
|
|||
abort();
|
||||
return;
|
||||
case GL_POLYGON:
|
||||
vmesa->regCmdA_End = vmesa->regCmdA | HC_HPMType_Tri | HC_HVCycle_AFP |
|
||||
vmesa->regCmdA_End |= HC_HPMType_Tri | HC_HVCycle_AFP |
|
||||
HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
|
||||
regCmdB |= HC_HVCycle_AA | HC_HVCycle_BC | HC_HVCycle_NewC;
|
||||
if (ctx->Light.ShadeModel == GL_FLAT)
|
||||
|
|
@ -963,6 +964,9 @@ void viaRasterPrimitive(GLcontext *ctx,
|
|||
vmesa->hwPrimitive = hwprim;
|
||||
vmesa->dmaLastPrim = vmesa->dmaLow;
|
||||
}
|
||||
else {
|
||||
assert(!vmesa->newEmitState);
|
||||
}
|
||||
}
|
||||
|
||||
/* Callback for mesa:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue