diff options
| author | Alex Deucher <alexdeucher@gmail.com> | 2009-09-04 18:45:09 -0400 | 
|---|---|---|
| committer | Alex Deucher <alexdeucher@gmail.com> | 2009-09-04 18:46:16 -0400 | 
| commit | 9ab19a39001ab5b6afa71a4d1f16714e6907b67c (patch) | |
| tree | 9949cd0cdfe4194fed026f07c170a442b278ecaf /src/mesa/drivers/dri | |
| parent | 60ca65c0165874bb18f1f89951da0281ee235cb3 (diff) | |
r600: add support for EXT_texture_sRGB
Diffstat (limited to 'src/mesa/drivers/dri')
| -rw-r--r-- | src/mesa/drivers/dri/r600/r600_context.c | 1 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/r600/r600_texstate.c | 43 | 
2 files changed, 44 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index 7a5bcd9ac2..07a7bcf11f 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -130,6 +130,7 @@ const struct dri_extension card_extensions[] = {    {"GL_EXT_texture_lod_bias",		NULL},    {"GL_EXT_texture_mirror_clamp",	NULL},    {"GL_EXT_texture_rectangle",		NULL}, +  {"GL_EXT_texture_sRGB",               NULL},    {"GL_ATI_separate_stencil",		GL_ATI_separate_stencil_functions},    {"GL_ATI_texture_env_combine3",	NULL},    {"GL_ATI_texture_mirror_once",	NULL}, diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c b/src/mesa/drivers/dri/r600/r600_texstate.c index 49b603b65e..fff6e74386 100644 --- a/src/mesa/drivers/dri/r600/r600_texstate.c +++ b/src/mesa/drivers/dri/r600/r600_texstate.c @@ -531,6 +531,49 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, GLuint mesa_fo  			return GL_FALSE;  		}  		break; +	/* EXT_texture_sRGB */ +	case MESA_FORMAT_SRGBA8: +		SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, +			 SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); + +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +		SETbit(t->SQ_TEX_RESOURCE4, SQ_TEX_RESOURCE_WORD4_0__FORCE_DEGAMMA_bit); +		break; +	case MESA_FORMAT_SLA8: +		SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8, +			 SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); + +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +		SETbit(t->SQ_TEX_RESOURCE4, SQ_TEX_RESOURCE_WORD4_0__FORCE_DEGAMMA_bit); +		break; +	case MESA_FORMAT_SL8: /* X, X, X, ONE */ +		SETfield(t->SQ_TEX_RESOURCE1, FMT_8, +			 SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); + +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); +		SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, +			 SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +		SETbit(t->SQ_TEX_RESOURCE4, SQ_TEX_RESOURCE_WORD4_0__FORCE_DEGAMMA_bit); +		break;  	default:  		/* Not supported format */  		return GL_FALSE;  | 
