mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
Fix the RGB order of the specular color emit, and turn GL_EXT_secondary_color
back on. Tested using seccolor modified to use the blue channel instead of green, since green stays in the same place across RGB/BGR mistakes. Also hook in UpdateSpecular on COLOR_EXT change, which might have resulted in missing statechanges before.
This commit is contained in:
parent
f8a5898ca0
commit
5f79025e0d
3 changed files with 6 additions and 17 deletions
|
|
@ -68,8 +68,9 @@ int R128_DEBUG = 0;
|
|||
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_EXT_fog_coord
|
||||
#define need_GL_EXT_blend_minmax
|
||||
#define need_GL_EXT_fog_coord
|
||||
#define need_GL_EXT_secondary_color
|
||||
#include "extension_helper.h"
|
||||
|
||||
const struct dri_extension card_extensions[] =
|
||||
|
|
@ -82,6 +83,7 @@ const struct dri_extension card_extensions[] =
|
|||
{ "GL_EXT_blend_subtract", GL_EXT_blend_minmax_functions },
|
||||
{ "GL_EXT_fog_coord", GL_EXT_fog_coord_functions },
|
||||
{ "GL_EXT_texture_edge_clamp", NULL },
|
||||
{ "GL_EXT_secondary_color", GL_EXT_secondary_color_functions },
|
||||
{ "GL_MESA_ycbcr_texture", NULL },
|
||||
{ "GL_NV_blend_square", NULL },
|
||||
{ "GL_SGIS_generate_mipmap", NULL },
|
||||
|
|
|
|||
|
|
@ -545,34 +545,20 @@ static void updateSpecularLighting( GLcontext *ctx )
|
|||
r128ContextPtr rmesa = R128_CONTEXT(ctx);
|
||||
GLuint t = rmesa->setup.tex_cntl_c;
|
||||
|
||||
if ( ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR &&
|
||||
ctx->Light.Enabled) {
|
||||
/* XXX separate specular color just doesn't seem to work as it should.
|
||||
* For now, we fall back to s/w rendering whenever separate specular
|
||||
* is enabled.
|
||||
*/
|
||||
#if 0
|
||||
if ( NEED_SECONDARY_COLOR( ctx ) ) {
|
||||
if (ctx->Light.ShadeModel == GL_FLAT) {
|
||||
/* R128 can't do flat-shaded separate specular */
|
||||
t &= ~R128_SPEC_LIGHT_ENABLE;
|
||||
FALLBACK( rmesa, R128_FALLBACK_SEP_SPECULAR, GL_TRUE );
|
||||
/*printf("%s fallback sep spec\n", __FUNCTION__);*/
|
||||
}
|
||||
else {
|
||||
t |= R128_SPEC_LIGHT_ENABLE;
|
||||
FALLBACK( rmesa, R128_FALLBACK_SEP_SPECULAR, GL_FALSE );
|
||||
/*printf("%s enable sep spec\n", __FUNCTION__);*/
|
||||
}
|
||||
#else
|
||||
t &= ~R128_SPEC_LIGHT_ENABLE;
|
||||
FALLBACK( rmesa, R128_FALLBACK_SEP_SPECULAR, GL_TRUE );
|
||||
/*printf("%s fallback sep spec\n", __FUNCTION__);*/
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
t &= ~R128_SPEC_LIGHT_ENABLE;
|
||||
FALLBACK( rmesa, R128_FALLBACK_SEP_SPECULAR, GL_FALSE );
|
||||
/*printf("%s disable sep spec\n", __FUNCTION__);*/
|
||||
}
|
||||
|
||||
if ( rmesa->setup.tex_cntl_c != t ) {
|
||||
|
|
@ -855,6 +841,7 @@ static void r128DDEnable( GLcontext *ctx, GLenum cap, GLboolean state )
|
|||
break;
|
||||
|
||||
case GL_LIGHTING:
|
||||
case GL_COLOR_SUM_EXT:
|
||||
updateSpecularLighting(ctx);
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -595,7 +595,7 @@ static void r128RenderStart( GLcontext *ctx )
|
|||
#if MESA_LITTLE_ENDIAN
|
||||
if ( index & _TNL_BIT_COLOR1) {
|
||||
rmesa->specoffset = offset;
|
||||
EMIT_ATTR( _TNL_ATTRIB_COLOR1, EMIT_3UB_3F_RGB,
|
||||
EMIT_ATTR( _TNL_ATTRIB_COLOR1, EMIT_3UB_3F_BGR,
|
||||
R128_CCE_VC_FRMT_SPEC_FRGB, 3 );
|
||||
} else
|
||||
EMIT_PAD( 3 );
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue