Browse Source

Fix previously un-noticed issue with flat-shaded points.

tags/jump_and_click
Keith Whitwell 21 years ago
parent
commit
4ccee80190

+ 1
- 0
src/mesa/drivers/dri/unichrome/via_context.c View File

@@ -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:

+ 0
- 1
src/mesa/drivers/dri/unichrome/via_context.h View File

@@ -168,7 +168,6 @@ struct via_context_t {

/* Hardware register
*/
GLuint regCmdA;
GLuint regCmdA_End;
GLuint regCmdB;


+ 0
- 16
src/mesa/drivers/dri/unichrome/via_state.c View File

@@ -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);


+ 17
- 13
src/mesa/drivers/dri/unichrome/via_tris.c View File

@@ -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…
Cancel
Save