diff options
author | Eric Anholt <eric@anholt.net> | 2013-04-17 19:10:29 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2013-04-29 11:41:33 -0700 |
commit | 4df1b986d3e44dc035227054000a1d0e1846ef07 (patch) | |
tree | 34c1be234a2decbc284b56a27a3eca91f10744ce | |
parent | 97217a40f97cdeae0304798b607f704deb0c3558 (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.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915/i915_texstate.c | 11 | ||||
-rwxr-xr-x | src/mesa/drivers/dri/intel/intel_extensions.c | 4 |
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; |