radeon: remove unnecessary #includes of texstore.h
[mesa.git] / src / mesa / drivers / dri / r600 / r600_tex.c
index f745fe3e8a635fb35e9c225e633e1708084f3c22..0bb4e133c68666e9567793064a926a69523d02a8 100644 (file)
@@ -38,21 +38,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "main/context.h"
 #include "main/enums.h"
 #include "main/image.h"
+#include "main/mfeatures.h"
 #include "main/mipmap.h"
 #include "main/simple_list.h"
-#include "main/texstore.h"
-#include "main/teximage.h"
 #include "main/texobj.h"
 
 #include "texmem.h"
 
 #include "r600_context.h"
-#include "r700_state.h"
 #include "radeon_mipmap_tree.h"
 #include "r600_tex.h"
 
-#include "xmlpool.h"
-
 
 static unsigned int translate_wrap_mode(GLenum wrapmode)
 {
@@ -81,15 +77,15 @@ static void r600UpdateTexWrap(radeonTexObjPtr t)
 {
        struct gl_texture_object *tObj = &t->base;
 
-        SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapS),
+        SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapS),
                  SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_shift, SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_mask);
 
        if (tObj->Target != GL_TEXTURE_1D) {
-               SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapT),
+               SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapT),
                         CLAMP_Y_shift, CLAMP_Y_mask);
 
                if (tObj->Target == GL_TEXTURE_3D)
-                       SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapR),
+                       SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapR),
                                 CLAMP_Z_shift, CLAMP_Z_mask);
        }
 }
@@ -268,9 +264,9 @@ static void r600SetTexFilter(radeonTexObjPtr t, GLenum minf, GLenum magf, GLfloa
 static void r600SetTexBorderColor(radeonTexObjPtr t, const GLfloat color[4])
 {
        t->TD_PS_SAMPLER0_BORDER_ALPHA = *((uint32_t*)&(color[3]));
-       t->TD_PS_SAMPLER0_BORDER_RED = *((uint32_t*)&(color[2]));
+       t->TD_PS_SAMPLER0_BORDER_BLUE = *((uint32_t*)&(color[2]));
        t->TD_PS_SAMPLER0_BORDER_GREEN = *((uint32_t*)&(color[1]));
-       t->TD_PS_SAMPLER0_BORDER_BLUE = *((uint32_t*)&(color[0]));
+       t->TD_PS_SAMPLER0_BORDER_RED = *((uint32_t*)&(color[0]));
         SETfield(t->SQ_TEX_SAMPLER0, SQ_TEX_BORDER_COLOR_REGISTER,
                 BORDER_COLOR_TYPE_shift, BORDER_COLOR_TYPE_mask);
 }
@@ -280,7 +276,7 @@ static void r600SetTexBorderColor(radeonTexObjPtr t, const GLfloat color[4])
  * next UpdateTextureState
  */
 
-static void r600TexParameter(GLcontext * ctx, GLenum target,
+static void r600TexParameter(struct gl_context * ctx, GLenum target,
                             struct gl_texture_object *texObj,
                             GLenum pname, const GLfloat * params)
 {
@@ -295,7 +291,7 @@ static void r600TexParameter(GLcontext * ctx, GLenum target,
        case GL_TEXTURE_MIN_FILTER:
        case GL_TEXTURE_MAG_FILTER:
        case GL_TEXTURE_MAX_ANISOTROPY_EXT:
-               r600SetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy);
+               r600SetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy);
                break;
 
        case GL_TEXTURE_WRAP_S:
@@ -305,7 +301,7 @@ static void r600TexParameter(GLcontext * ctx, GLenum target,
                break;
 
        case GL_TEXTURE_BORDER_COLOR:
-               r600SetTexBorderColor(t, texObj->BorderColor.f);
+               r600SetTexBorderColor(t, texObj->Sampler.BorderColor.f);
                break;
 
        case GL_TEXTURE_BASE_LEVEL:
@@ -336,7 +332,7 @@ static void r600TexParameter(GLcontext * ctx, GLenum target,
        }
 }
 
-static void r600DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj)
+static void r600DeleteTexture(struct gl_context * ctx, struct gl_texture_object *texObj)
 {
        context_t* rmesa = R700_CONTEXT(ctx);
        radeonTexObj* t = radeon_tex_obj(texObj);
@@ -372,7 +368,7 @@ static void r600DeleteTexture(GLcontext * ctx, struct gl_texture_object *texObj)
  * allocate the default texture objects.
  * Fixup MaxAnisotropy according to user preference.
  */
-static struct gl_texture_object *r600NewTextureObject(GLcontext * ctx,
+static struct gl_texture_object *r600NewTextureObject(struct gl_context * ctx,
                                                      GLuint name,
                                                      GLenum target)
 {
@@ -385,46 +381,75 @@ static struct gl_texture_object *r600NewTextureObject(GLcontext * ctx,
                        t, _mesa_lookup_enum_by_nr(target));
 
        _mesa_initialize_texture_object(&t->base, name, target);
-       t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+       t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
 
        /* Initialize hardware state */
        r600SetTexDefaultState(t);
        r600UpdateTexWrap(t);
-       r600SetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy);
-       r600SetTexBorderColor(t, t->base.BorderColor.f);
+       r600SetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter, t->base.Sampler.MaxAnisotropy);
+       r600SetTexBorderColor(t, t->base.Sampler.BorderColor.f);
 
        return &t->base;
 }
 
-void r600InitTextureFuncs(struct dd_function_table *functions)
+unsigned r600IsFormatRenderable(gl_format mesa_format)
+{
+       switch (mesa_format) {
+       case MESA_FORMAT_RGBA8888:
+       case MESA_FORMAT_SIGNED_RGBA8888:
+       case MESA_FORMAT_RGBA8888_REV:
+       case MESA_FORMAT_SIGNED_RGBA8888_REV:
+       case MESA_FORMAT_ARGB8888:
+       case MESA_FORMAT_XRGB8888:
+       case MESA_FORMAT_ARGB8888_REV:
+       case MESA_FORMAT_XRGB8888_REV:
+       case MESA_FORMAT_RGB565:
+       case MESA_FORMAT_RGB565_REV:
+       case MESA_FORMAT_ARGB4444:
+       case MESA_FORMAT_ARGB4444_REV:
+       case MESA_FORMAT_ARGB1555:
+       case MESA_FORMAT_ARGB1555_REV:
+       case MESA_FORMAT_AL88:
+       case MESA_FORMAT_AL88_REV:
+       case MESA_FORMAT_RGB332:
+       case MESA_FORMAT_A8:
+       case MESA_FORMAT_I8:
+       case MESA_FORMAT_L8:
+       case MESA_FORMAT_RGBA_FLOAT32:
+       case MESA_FORMAT_RGBA_FLOAT16:
+       case MESA_FORMAT_ALPHA_FLOAT32:
+       case MESA_FORMAT_ALPHA_FLOAT16:
+       case MESA_FORMAT_LUMINANCE_FLOAT32:
+       case MESA_FORMAT_LUMINANCE_FLOAT16:
+       case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+       case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
+       case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */
+       case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */
+       case MESA_FORMAT_X8_Z24:
+       case MESA_FORMAT_S8_Z24:
+       case MESA_FORMAT_Z24_S8:
+       case MESA_FORMAT_Z16:
+       case MESA_FORMAT_Z32:
+       case MESA_FORMAT_SARGB8:
+       case MESA_FORMAT_SLA8:
+       case MESA_FORMAT_SL8:
+               return 1;
+       default:
+               return 0;
+       }
+}
+
+void r600InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *functions)
 {
        /* Note: we only plug in the functions we implement in the driver
         * since _mesa_init_driver_functions() was already called.
         */
-       functions->NewTextureImage = radeonNewTextureImage;
-       functions->FreeTexImageData = radeonFreeTexImageData;
-       functions->MapTexture = radeonMapTexture;
-       functions->UnmapTexture = radeonUnmapTexture;
-
-       functions->ChooseTextureFormat = radeonChooseTextureFormat_mesa;
-       functions->TexImage1D = radeonTexImage1D;
-       functions->TexImage2D = radeonTexImage2D;
-       functions->TexImage3D = radeonTexImage3D;
-       functions->TexSubImage1D = radeonTexSubImage1D;
-       functions->TexSubImage2D = radeonTexSubImage2D;
-       functions->TexSubImage3D = radeonTexSubImage3D;
-       functions->GetTexImage = radeonGetTexImage;
-       functions->GetCompressedTexImage = radeonGetCompressedTexImage;
+
+       radeon_init_common_texture_funcs(radeon, functions);
+
        functions->NewTextureObject = r600NewTextureObject;
        functions->DeleteTexture = r600DeleteTexture;
        functions->IsTextureResident = driIsTextureResident;
 
        functions->TexParameter = r600TexParameter;
-
-       functions->CompressedTexImage2D = radeonCompressedTexImage2D;
-       functions->CompressedTexSubImage2D = radeonCompressedTexSubImage2D;
-
-       functions->GenerateMipmap = radeonGenerateMipmap;
-
-       driInitTextureFormats();
 }