summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2013-04-17 19:10:29 -0700
committerEric Anholt <eric@anholt.net>2013-04-29 11:41:33 -0700
commit4df1b986d3e44dc035227054000a1d0e1846ef07 (patch)
tree34c1be234a2decbc284b56a27a3eca91f10744ce
parent97217a40f97cdeae0304798b607f704deb0c3558 (diff)
i915: Add support for GL_EXT_texture_sRGB and GL_EXT_texture_sRGB_decode.
This brings the driver up to GL 2.1.
-rw-r--r--src/mesa/drivers/dri/i915/i915_context.c2
-rw-r--r--src/mesa/drivers/dri/i915/i915_texstate.c11
-rwxr-xr-xsrc/mesa/drivers/dri/intel/intel_extensions.c4
3 files changed, 15 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c
index 46fc9664221..65b50ea6700 100644
--- a/src/mesa/drivers/dri/i915/i915_context.c
+++ b/src/mesa/drivers/dri/i915/i915_context.c
@@ -104,6 +104,8 @@ intel_init_texture_formats(struct gl_context *ctx)
104 if (intel_screen->deviceID != PCI_CHIP_I830_M && 104 if (intel_screen->deviceID != PCI_CHIP_I830_M &&
105 intel_screen->deviceID != PCI_CHIP_845_G) 105 intel_screen->deviceID != PCI_CHIP_845_G)
106 ctx->TextureFormatSupported[MESA_FORMAT_XRGB8888] = true; 106 ctx->TextureFormatSupported[MESA_FORMAT_XRGB8888] = true;
107 if (intel->gen == 3)
108 ctx->TextureFormatSupported[MESA_FORMAT_SARGB8] = true;
107 ctx->TextureFormatSupported[MESA_FORMAT_ARGB4444] = true; 109 ctx->TextureFormatSupported[MESA_FORMAT_ARGB4444] = true;
108 ctx->TextureFormatSupported[MESA_FORMAT_ARGB1555] = true; 110 ctx->TextureFormatSupported[MESA_FORMAT_ARGB1555] = true;
109 ctx->TextureFormatSupported[MESA_FORMAT_RGB565] = true; 111 ctx->TextureFormatSupported[MESA_FORMAT_RGB565] = true;
diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c
index 2f3286920d5..43c802b2c08 100644
--- a/src/mesa/drivers/dri/i915/i915_texstate.c
+++ b/src/mesa/drivers/dri/i915/i915_texstate.c
@@ -56,6 +56,7 @@ translate_texture_format(gl_format mesa_format, GLenum DepthMode)
56 return MAPSURF_16BIT | MT_16BIT_ARGB1555; 56 return MAPSURF_16BIT | MT_16BIT_ARGB1555;
57 case MESA_FORMAT_ARGB4444: 57 case MESA_FORMAT_ARGB4444:
58 return MAPSURF_16BIT | MT_16BIT_ARGB4444; 58 return MAPSURF_16BIT | MT_16BIT_ARGB4444;
59 case MESA_FORMAT_SARGB8:
59 case MESA_FORMAT_ARGB8888: 60 case MESA_FORMAT_ARGB8888:
60 return MAPSURF_32BIT | MT_32BIT_ARGB8888; 61 return MAPSURF_32BIT | MT_32BIT_ARGB8888;
61 case MESA_FORMAT_XRGB8888: 62 case MESA_FORMAT_XRGB8888:
@@ -78,10 +79,14 @@ translate_texture_format(gl_format mesa_format, GLenum DepthMode)
78 return (MAPSURF_16BIT | MT_16BIT_L16); 79 return (MAPSURF_16BIT | MT_16BIT_L16);
79 case MESA_FORMAT_RGBA_DXT1: 80 case MESA_FORMAT_RGBA_DXT1:
80 case MESA_FORMAT_RGB_DXT1: 81 case MESA_FORMAT_RGB_DXT1:
82 case MESA_FORMAT_SRGB_DXT1:
83 case MESA_FORMAT_SRGBA_DXT1:
81 return (MAPSURF_COMPRESSED | MT_COMPRESS_DXT1); 84 return (MAPSURF_COMPRESSED | MT_COMPRESS_DXT1);
82 case MESA_FORMAT_RGBA_DXT3: 85 case MESA_FORMAT_RGBA_DXT3:
86 case MESA_FORMAT_SRGBA_DXT3:
83 return (MAPSURF_COMPRESSED | MT_COMPRESS_DXT2_3); 87 return (MAPSURF_COMPRESSED | MT_COMPRESS_DXT2_3);
84 case MESA_FORMAT_RGBA_DXT5: 88 case MESA_FORMAT_RGBA_DXT5:
89 case MESA_FORMAT_SRGBA_DXT5:
85 return (MAPSURF_COMPRESSED | MT_COMPRESS_DXT4_5); 90 return (MAPSURF_COMPRESSED | MT_COMPRESS_DXT4_5);
86 case MESA_FORMAT_S8_Z24: 91 case MESA_FORMAT_S8_Z24:
87 case MESA_FORMAT_X8_Z24: 92 case MESA_FORMAT_X8_Z24:
@@ -354,6 +359,12 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
354 359
355 } 360 }
356 361
362 if (sampler->sRGBDecode == GL_DECODE_EXT &&
363 (_mesa_get_srgb_format_linear(firstImage->TexFormat) !=
364 firstImage->TexFormat)) {
365 state[I915_TEXREG_SS2] |= SS2_REVERSE_GAMMA_ENABLE;
366 }
367
357 /* convert border color from float to ubyte */ 368 /* convert border color from float to ubyte */
358 CLAMPED_FLOAT_TO_UBYTE(border[0], sampler->BorderColor.f[0]); 369 CLAMPED_FLOAT_TO_UBYTE(border[0], sampler->BorderColor.f[0]);
359 CLAMPED_FLOAT_TO_UBYTE(border[1], sampler->BorderColor.f[1]); 370 CLAMPED_FLOAT_TO_UBYTE(border[1], sampler->BorderColor.f[1]);
diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c
index 46722e1cd71..18f19b8eefe 100755
--- a/src/mesa/drivers/dri/intel/intel_extensions.c
+++ b/src/mesa/drivers/dri/intel/intel_extensions.c
@@ -152,8 +152,6 @@ intelInitExtensions(struct gl_context *ctx)
152 ctx->Extensions.EXT_texture_array = true; 152 ctx->Extensions.EXT_texture_array = true;
153 ctx->Extensions.EXT_texture_integer = true; 153 ctx->Extensions.EXT_texture_integer = true;
154 ctx->Extensions.EXT_texture_snorm = true; 154 ctx->Extensions.EXT_texture_snorm = true;
155 ctx->Extensions.EXT_texture_sRGB = true;
156 ctx->Extensions.EXT_texture_sRGB_decode = true;
157 ctx->Extensions.EXT_texture_swizzle = true; 155 ctx->Extensions.EXT_texture_swizzle = true;
158 ctx->Extensions.EXT_vertex_array_bgra = true; 156 ctx->Extensions.EXT_vertex_array_bgra = true;
159 ctx->Extensions.ATI_envmap_bumpmap = true; 157 ctx->Extensions.ATI_envmap_bumpmap = true;
@@ -169,6 +167,8 @@ intelInitExtensions(struct gl_context *ctx)
169 ctx->Extensions.ARB_fragment_program = true; 167 ctx->Extensions.ARB_fragment_program = true;
170 ctx->Extensions.ARB_shadow = true; 168 ctx->Extensions.ARB_shadow = true;
171 ctx->Extensions.ARB_texture_non_power_of_two = true; 169 ctx->Extensions.ARB_texture_non_power_of_two = true;
170 ctx->Extensions.EXT_texture_sRGB = true;
171 ctx->Extensions.EXT_texture_sRGB_decode = true;
172 ctx->Extensions.EXT_shadow_funcs = true; 172 ctx->Extensions.EXT_shadow_funcs = true;
173 ctx->Extensions.EXT_stencil_two_side = true; 173 ctx->Extensions.EXT_stencil_two_side = true;
174 ctx->Extensions.ATI_separate_stencil = true; 174 ctx->Extensions.ATI_separate_stencil = true;