nv2a: Support line and poly anti-aliasing

This commit is contained in:
Matt Borgerson 2020-12-01 20:47:18 -07:00 committed by mborgerson
parent e063fc37e7
commit a34cab69dd
2 changed files with 26 additions and 0 deletions

View File

@ -467,6 +467,8 @@
# define NV_PGRAPH_SETUPRASTER_POFFSETPOINTENABLE (1 << 6)
# define NV_PGRAPH_SETUPRASTER_POFFSETLINEENABLE (1 << 7)
# define NV_PGRAPH_SETUPRASTER_POFFSETFILLENABLE (1 << 8)
# define NV_PGRAPH_SETUPRASTER_LINESMOOTHENABLE (1 << 10)
# define NV_PGRAPH_SETUPRASTER_POLYSMOOTHENABLE (1 << 11)
# define NV_PGRAPH_SETUPRASTER_CULLCTRL 0x00600000
# define NV_PGRAPH_SETUPRASTER_CULLCTRL_FRONT 1
# define NV_PGRAPH_SETUPRASTER_CULLCTRL_BACK 2
@ -852,6 +854,8 @@
# define NV097_SET_DEPTH_TEST_ENABLE 0x0000030C
# define NV097_SET_DITHER_ENABLE 0x00000310
# define NV097_SET_LIGHTING_ENABLE 0x00000314
# define NV097_SET_LINE_SMOOTH_ENABLE 0x00000320
# define NV097_SET_POLY_SMOOTH_ENABLE 0x00000324
# define NV097_SET_SKIN_MODE 0x00000328
# define NV097_SET_SKIN_MODE_OFF 0
# define NV097_SET_SKIN_MODE_2G 1

View File

@ -1087,6 +1087,14 @@ void pgraph_method(NV2AState *d,
SET_MASK(pg->regs[NV_PGRAPH_CSV0_C], NV_PGRAPH_CSV0_C_LIGHTING,
parameter);
break;
case NV097_SET_LINE_SMOOTH_ENABLE:
SET_MASK(pg->regs[NV_PGRAPH_SETUPRASTER],
NV_PGRAPH_SETUPRASTER_LINESMOOTHENABLE, parameter);
break;
case NV097_SET_POLY_SMOOTH_ENABLE:
SET_MASK(pg->regs[NV_PGRAPH_SETUPRASTER],
NV_PGRAPH_SETUPRASTER_POLYSMOOTHENABLE, parameter);
break;
case NV097_SET_SKIN_MODE:
SET_MASK(pg->regs[NV_PGRAPH_CSV0_D], NV_PGRAPH_CSV0_D_SKIN,
parameter);
@ -2149,6 +2157,20 @@ void pgraph_method(NV2AState *d,
glDisable(GL_DITHER);
}
/* Edge Antialiasing */
if (pg->regs[NV_PGRAPH_SETUPRASTER] &
NV_PGRAPH_SETUPRASTER_LINESMOOTHENABLE) {
glEnable(GL_LINE_SMOOTH);
} else {
glDisable(GL_LINE_SMOOTH);
}
if (pg->regs[NV_PGRAPH_SETUPRASTER] &
NV_PGRAPH_SETUPRASTER_POLYSMOOTHENABLE) {
glEnable(GL_POLYGON_SMOOTH);
} else {
glDisable(GL_POLYGON_SMOOTH);
}
//glDisableVertexAttribArray(NV2A_VERTEX_ATTR_DIFFUSE);
//glVertexAttrib4f(NV2A_VERTEX_ATTR_DIFFUSE, 1.0, 1.0, 1.0, 1.0);