dri/nv10-nv20: Add support for S3TC
authorViktor Novotný <noviktor@seznam.cz>
Tue, 1 May 2012 13:23:51 +0000 (15:23 +0200)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 2 May 2012 01:14:29 +0000 (03:14 +0200)
Signed-off-by: Viktor Novotný <noviktor@seznam.cz>
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/drivers/dri/nouveau/nv10_context.c
src/mesa/drivers/dri/nouveau/nv10_state_tex.c
src/mesa/drivers/dri/nouveau/nv20_context.c
src/mesa/drivers/dri/nouveau/nv20_state_tex.c

index 90c1545ce37240b81cd3e68d9a047554682dfc0a..a2448caaf81b0961c2d377237fcab12d6f65bc1d 100644 (file)
@@ -449,6 +449,10 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua
        ctx->Extensions.ARB_texture_env_dot3 = true;
        ctx->Extensions.NV_fog_distance = true;
        ctx->Extensions.NV_texture_rectangle = true;
+       if (ctx->Mesa_DXTn) {
+               ctx->Extensions.EXT_texture_compression_s3tc = true;
+               ctx->Extensions.S3_s3tc = true;
+       }
 
        /* GL constants. */
        ctx->Const.MaxTextureLevels = 12;
index 0254341151b5fe5d213692d704fe419371f87f7b..b467bb33142037019997985b8d1824d0f9f90657 100644 (file)
@@ -111,6 +111,16 @@ get_tex_format_pot(struct gl_texture_image *ti)
        case MESA_FORMAT_L8:
                return NV10_3D_TEX_FORMAT_FORMAT_L8;
 
+       case MESA_FORMAT_RGB_DXT1:
+       case MESA_FORMAT_RGBA_DXT1:
+               return NV10_3D_TEX_FORMAT_FORMAT_DXT1;
+
+       case MESA_FORMAT_RGBA_DXT3:
+               return NV10_3D_TEX_FORMAT_FORMAT_DXT3;
+
+       case MESA_FORMAT_RGBA_DXT5:
+               return NV10_3D_TEX_FORMAT_FORMAT_DXT5;
+
        default:
                assert(0);
        }
index c91171791ccc17aead6531c4e5ecbb20800ba635..5a36c8766d77b90637f5497c04792b79e649ad50 100644 (file)
@@ -460,6 +460,10 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua
        ctx->Extensions.ARB_texture_env_dot3 = true;
        ctx->Extensions.NV_fog_distance = true;
        ctx->Extensions.NV_texture_rectangle = true;
+       if (ctx->Mesa_DXTn) {
+               ctx->Extensions.EXT_texture_compression_s3tc = true;
+               ctx->Extensions.S3_s3tc = true;
+       }
 
        /* GL constants. */
        ctx->Const.MaxTextureCoordUnits = NV20_TEXTURE_UNITS;
index 799510daa69f1e087f5d2f0219006e9a6d29feaf..d8bfdf2e58fd6b0332992ab8f75fbfe1562bcf97 100644 (file)
@@ -108,6 +108,16 @@ get_tex_format_pot(struct gl_texture_image *ti)
        case MESA_FORMAT_L8:
                return NV20_3D_TEX_FORMAT_FORMAT_L8;
 
+       case MESA_FORMAT_RGB_DXT1:
+       case MESA_FORMAT_RGBA_DXT1:
+               return NV20_3D_TEX_FORMAT_FORMAT_DXT1;
+
+       case MESA_FORMAT_RGBA_DXT3:
+               return NV20_3D_TEX_FORMAT_FORMAT_DXT3;
+
+       case MESA_FORMAT_RGBA_DXT5:
+               return NV20_3D_TEX_FORMAT_FORMAT_DXT5;
+
        default:
                assert(0);
        }