mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
r300: properly handle GL_POINT in glPolygonMode
Until now the polygon mode was completely turned of when you used GL_POINT. For me it looked buggy to completely disable the polygon mode for FrontMode and BackMode if any of these was GL_POINT.
This commit is contained in:
parent
60c0f09abb
commit
00bc91ac64
1 changed files with 10 additions and 5 deletions
|
|
@ -571,12 +571,16 @@ static void r300SetStencilState(GLcontext * ctx, GLboolean state)
|
|||
static void r300UpdatePolygonMode(GLcontext * ctx)
|
||||
{
|
||||
r300ContextPtr r300 = R300_CONTEXT(ctx);
|
||||
uint32_t hw_mode = 0;
|
||||
uint32_t hw_mode = GA_POLY_MODE_DISABLE;
|
||||
|
||||
/* Only do something if a polygon mode is wanted, default is GL_FILL */
|
||||
if (ctx->Polygon.FrontMode != GL_FILL ||
|
||||
ctx->Polygon.BackMode != GL_FILL) {
|
||||
GLenum f, b;
|
||||
|
||||
/* Handle GL_CW (clock wise and GL_CCW (counter clock wise)
|
||||
* correctly by selecting the correct front and back face
|
||||
*/
|
||||
if (ctx->Polygon.FrontFace == GL_CCW) {
|
||||
f = ctx->Polygon.FrontMode;
|
||||
b = ctx->Polygon.BackMode;
|
||||
|
|
@ -585,14 +589,15 @@ static void r300UpdatePolygonMode(GLcontext * ctx)
|
|||
b = ctx->Polygon.FrontMode;
|
||||
}
|
||||
|
||||
/* Enable polygon mode */
|
||||
hw_mode |= GA_POLY_MODE_DUAL;
|
||||
|
||||
switch (f) {
|
||||
case GL_LINE:
|
||||
hw_mode |= GA_POLY_MODE_FRONT_PTYPE_LINE;
|
||||
break;
|
||||
case GL_POINT: /* TODO: noops, find out why */
|
||||
hw_mode |= GA_POLY_MODE_DISABLE;
|
||||
case GL_POINT:
|
||||
hw_mode |= GA_POLY_MODE_FRONT_PTYPE_POINT;
|
||||
break;
|
||||
case GL_FILL:
|
||||
hw_mode |= GA_POLY_MODE_FRONT_PTYPE_TRI;
|
||||
|
|
@ -603,8 +608,8 @@ static void r300UpdatePolygonMode(GLcontext * ctx)
|
|||
case GL_LINE:
|
||||
hw_mode |= GA_POLY_MODE_BACK_PTYPE_LINE;
|
||||
break;
|
||||
case GL_POINT: /* TODO: noops, find out why */
|
||||
hw_mode |= GA_POLY_MODE_DISABLE;
|
||||
case GL_POINT:
|
||||
hw_mode |= GA_POLY_MODE_BACK_PTYPE_POINT;
|
||||
break;
|
||||
case GL_FILL:
|
||||
hw_mode |= GA_POLY_MODE_BACK_PTYPE_TRI;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue