mirror of https://github.com/xemu-project/xemu.git
nv2a: Check supported line width
* Added logic to check for the supported line width range before setting the line width to avoid errors. I also moved the glLineWidth call so that it could be after the call to get the supported line width range for the desired line type. * Moved the glLineWidth call outside the if/else * Moved the code to query line GL_SMOOTH_LINE_WIDTH_RANGE and GL_ALIASED_LINE_WIDTH_RANGE to nv2a_gl_context_init(void) so that it's just called while OpenGL is being initialized. * Removed the lineWidth local variable. It's simpler to just call glLineWidth in the if and else blocks
This commit is contained in:
parent
7f5176bc5f
commit
79441500fe
|
@ -381,6 +381,8 @@ static const SurfaceFormatInfo kelvin_surface_zeta_fixed_format_map[] = {
|
|||
{4, GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL_ATTACHMENT},
|
||||
};
|
||||
|
||||
static GLfloat supportedAliasedLineWidthRange[2] = { 0.0f, 0.0f };
|
||||
static GLfloat supportedSmoothLineWidthRange[2] = { 0.0f, 0.0f };
|
||||
|
||||
// static void pgraph_set_context_user(NV2AState *d, uint32_t val);
|
||||
static void pgraph_gl_fence(void);
|
||||
|
@ -3053,7 +3055,6 @@ DEF_METHOD(NV097, SET_BEGIN_END)
|
|||
glDisable(GL_DITHER);
|
||||
}
|
||||
|
||||
glLineWidth(pg->surface_scale_factor);
|
||||
glEnable(GL_PROGRAM_POINT_SIZE);
|
||||
|
||||
bool anti_aliasing = GET_MASK(pg->regs[NV_PGRAPH_ANTIALIASING], NV_PGRAPH_ANTIALIASING_ENABLE);
|
||||
|
@ -3062,8 +3063,10 @@ DEF_METHOD(NV097, SET_BEGIN_END)
|
|||
if (!anti_aliasing && pg->regs[NV_PGRAPH_SETUPRASTER] &
|
||||
NV_PGRAPH_SETUPRASTER_LINESMOOTHENABLE) {
|
||||
glEnable(GL_LINE_SMOOTH);
|
||||
glLineWidth(MIN(supportedSmoothLineWidthRange[1], pg->surface_scale_factor));
|
||||
} else {
|
||||
glDisable(GL_LINE_SMOOTH);
|
||||
glLineWidth(MIN(supportedAliasedLineWidthRange[1], pg->surface_scale_factor));
|
||||
}
|
||||
if (!anti_aliasing && pg->regs[NV_PGRAPH_SETUPRASTER] &
|
||||
NV_PGRAPH_SETUPRASTER_POLYSMOOTHENABLE) {
|
||||
|
@ -3910,6 +3913,9 @@ void nv2a_gl_context_init(void)
|
|||
{
|
||||
g_nv2a_context_render = glo_context_create();
|
||||
g_nv2a_context_display = glo_context_create();
|
||||
|
||||
glGetFloatv(GL_SMOOTH_LINE_WIDTH_RANGE, supportedSmoothLineWidthRange);
|
||||
glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, supportedAliasedLineWidthRange);
|
||||
}
|
||||
|
||||
void nv2a_set_surface_scale_factor(unsigned int scale)
|
||||
|
|
Loading…
Reference in New Issue