dri/nouveau: Kill a bunch of ternary operators.
[mesa.git] / src / mesa / drivers / dri / sis / sis_tex.c
index e2b7e93b807657f41569fc5dba723af589703702..bb4896d9bdfa4f309faf498bcaedd48f55d77786 100644 (file)
@@ -22,24 +22,20 @@ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86$ */
 
 /*
  * Authors:
  *    Eric Anholt <anholt@FreeBSD.org>
  */
 
+#include "swrast/swrast.h"
+#include "main/imports.h"
+#include "main/texstore.h"
+#include "main/texobj.h"
+
 #include "sis_context.h"
 #include "sis_alloc.h"
 #include "sis_tex.h"
-
-#include "swrast/swrast.h"
-#include "imports.h"
-#include "texformat.h"
-#include "texstore.h"
-#include "teximage.h"
-#include "texobj.h"
-
 #include "xmlpool.h"
 
 #define ALIGN(value, align) (GLubyte *)((long)(value + align - 1) & ~(align - 1))
@@ -66,7 +62,7 @@ sisAllocTexImage( sisContextPtr smesa, sisTexObjPtr t, int level,
 
    if (t->format == 0) {
       t->format = image->_BaseFormat;
-      switch (image->TexFormat->MesaFormat)
+      switch (image->TexFormat)
       {
       case MESA_FORMAT_ARGB8888:
          t->hwformat = TEXEL_ARGB_8888_32;
@@ -96,19 +92,18 @@ sisAllocTexImage( sisContextPtr smesa, sisTexObjPtr t, int level,
          t->hwformat = TEXEL_AL88;
          break;
       case MESA_FORMAT_YCBCR:
-         t->hwformat = TEXEL_YVU422;   /* Doesn't work?  Extension disabled */
+         t->hwformat = TEXEL_YUV422;
          break;
       case MESA_FORMAT_YCBCR_REV:
-         t->hwformat = TEXEL_YUV422;   /* Doesn't work?  Extension disabled */
+         t->hwformat = TEXEL_VUY422;
          break;
       default:
-         sis_fatal_error("Bad texture format 0x%x.\n",
-                        image->TexFormat->MesaFormat);
+         sis_fatal_error("Bad texture format 0x%x.\n", image->TexFormat);
       }
    }
    assert(t->format == image->_BaseFormat);
 
-   texel_size = image->TexFormat->TexelBytes;
+   texel_size = _mesa_get_format_bytes(image->TexFormat);
    size = image->Width * image->Height * texel_size + TEXTURE_HW_PLUS;
 
    addr = sisAllocFB( smesa, size, &t->image[level].handle );
@@ -130,6 +125,8 @@ sisAllocTexImage( sisContextPtr smesa, sisTexObjPtr t, int level,
 static void
 sisFreeTexImage( sisContextPtr smesa, sisTexObjPtr t, int level )
 {
+   assert(level >= 0);
+   assert(level < SIS_MAX_TEXTURE_LEVELS);
    if (t->image[level].Data == NULL)
       return;
 
@@ -155,7 +152,7 @@ sisFreeTexImage( sisContextPtr smesa, sisTexObjPtr t, int level )
 }
 
 static void 
-sisTexEnv( GLcontext *ctx, GLenum target, GLenum pname, const GLfloat *param )
+sisTexEnv( struct gl_context *ctx, GLenum target, GLenum pname, const GLfloat *param )
 {
   sisContextPtr smesa = SIS_CONTEXT(ctx);
 
@@ -163,7 +160,7 @@ sisTexEnv( GLcontext *ctx, GLenum target, GLenum pname, const GLfloat *param )
 }
 
 static void
-sisTexParameter( GLcontext *ctx, GLenum target,
+sisTexParameter( struct gl_context *ctx, GLenum target,
                  struct gl_texture_object *texObj, GLenum pname,
                  const GLfloat *params )
 {
@@ -173,7 +170,7 @@ sisTexParameter( GLcontext *ctx, GLenum target,
 }
 
 static void
-sisBindTexture( GLcontext *ctx, GLenum target,
+sisBindTexture( struct gl_context *ctx, GLenum target,
                 struct gl_texture_object *texObj )
 {
    sisContextPtr smesa = SIS_CONTEXT(ctx);
@@ -197,7 +194,7 @@ sisBindTexture( GLcontext *ctx, GLenum target,
 }
 
 static void
-sisDeleteTexture( GLcontext * ctx, struct gl_texture_object *texObj )
+sisDeleteTexture( struct gl_context * ctx, struct gl_texture_object *texObj )
 {
    sisContextPtr smesa = SIS_CONTEXT(ctx);
    sisTexObjPtr t;
@@ -213,7 +210,7 @@ sisDeleteTexture( GLcontext * ctx, struct gl_texture_object *texObj )
        */
       return;
    }
-   for (i = 0; i < MAX_TEXTURE_LEVELS; i++) {
+   for (i = 0; i < SIS_MAX_TEXTURE_LEVELS; i++) {
       sisFreeTexImage( smesa, t, i );
    }
 
@@ -223,14 +220,14 @@ sisDeleteTexture( GLcontext * ctx, struct gl_texture_object *texObj )
    _mesa_delete_texture_object(ctx, texObj);
 }
 
-static GLboolean sisIsTextureResident( GLcontext * ctx,
+static GLboolean sisIsTextureResident( struct gl_context * ctx,
                                         struct gl_texture_object *texObj )
 {
   return (texObj->DriverData != NULL);
 }
 
-static const struct gl_texture_format *
-sisChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
+static gl_format
+sisChooseTextureFormat( struct gl_context *ctx, GLint internalFormat,
                          GLenum format, GLenum type )
 {
    sisContextPtr smesa = SIS_CONTEXT(ctx);
@@ -247,15 +244,15 @@ sisChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
       switch ( type ) {
       case GL_UNSIGNED_INT_10_10_10_2:
       case GL_UNSIGNED_INT_2_10_10_10_REV:
-        return do32bpt ? &_mesa_texformat_argb8888 : &_mesa_texformat_argb1555;
+        return do32bpt ? MESA_FORMAT_ARGB8888 : MESA_FORMAT_ARGB1555;
       case GL_UNSIGNED_SHORT_4_4_4_4:
       case GL_UNSIGNED_SHORT_4_4_4_4_REV:
-        return &_mesa_texformat_argb4444;
+        return MESA_FORMAT_ARGB4444;
       case GL_UNSIGNED_SHORT_5_5_5_1:
       case GL_UNSIGNED_SHORT_1_5_5_5_REV:
-        return &_mesa_texformat_argb1555;
+        return MESA_FORMAT_ARGB1555;
       default:
-         return do32bpt ? &_mesa_texformat_argb8888 : &_mesa_texformat_argb4444;
+         return do32bpt ? MESA_FORMAT_ARGB8888 : MESA_FORMAT_ARGB4444;
       }
 
    case 3:
@@ -264,46 +261,46 @@ sisChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
       switch ( type ) {
       case GL_UNSIGNED_SHORT_4_4_4_4:
       case GL_UNSIGNED_SHORT_4_4_4_4_REV:
-        return &_mesa_texformat_argb4444;
+        return MESA_FORMAT_ARGB4444;
       case GL_UNSIGNED_SHORT_5_5_5_1:
       case GL_UNSIGNED_SHORT_1_5_5_5_REV:
-        return &_mesa_texformat_argb1555;
+        return MESA_FORMAT_ARGB1555;
       case GL_UNSIGNED_SHORT_5_6_5:
       case GL_UNSIGNED_SHORT_5_6_5_REV:
-        return &_mesa_texformat_rgb565;
+        return MESA_FORMAT_RGB565;
       default:
-         return do32bpt ? &_mesa_texformat_argb8888 : &_mesa_texformat_rgb565;
+         return do32bpt ? MESA_FORMAT_ARGB8888 : MESA_FORMAT_RGB565;
       }
 
    case GL_RGBA8:
    case GL_RGBA12:
    case GL_RGBA16:
       return !force16bpt ?
-         &_mesa_texformat_argb8888 : &_mesa_texformat_argb4444;
+         MESA_FORMAT_ARGB8888 : MESA_FORMAT_ARGB4444;
 
    case GL_RGB10_A2:
       return !force16bpt ?
-         &_mesa_texformat_argb8888 : &_mesa_texformat_argb1555;
+         MESA_FORMAT_ARGB8888 : MESA_FORMAT_ARGB1555;
 
    case GL_RGBA4:
    case GL_RGBA2:
-      return &_mesa_texformat_argb4444;
+      return MESA_FORMAT_ARGB4444;
 
    case GL_RGB5_A1:
-      return &_mesa_texformat_argb1555;
+      return MESA_FORMAT_ARGB1555;
 
    case GL_RGB8:
    case GL_RGB10:
    case GL_RGB12:
    case GL_RGB16:
-      return !force16bpt ? &_mesa_texformat_argb8888 : &_mesa_texformat_rgb565;
+      return !force16bpt ? MESA_FORMAT_ARGB8888 : MESA_FORMAT_RGB565;
 
    case GL_RGB5:
    case GL_RGB4:
-      return &_mesa_texformat_rgb565;
+      return MESA_FORMAT_RGB565;
 
    case GL_R3_G3_B2:
-      return &_mesa_texformat_rgb332;
+      return MESA_FORMAT_RGB332;
 
    case GL_ALPHA:
    case GL_ALPHA4:             /* FIXME: This could use its own texstore */
@@ -311,7 +308,7 @@ sisChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
    case GL_ALPHA12:
    case GL_ALPHA16:
    case GL_COMPRESSED_ALPHA:
-      return &_mesa_texformat_a8;
+      return MESA_FORMAT_A8;
 
    case 1:
    case GL_LUMINANCE:
@@ -320,7 +317,7 @@ sisChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
    case GL_LUMINANCE12:
    case GL_LUMINANCE16:
    case GL_COMPRESSED_LUMINANCE:
-      return &_mesa_texformat_l8;
+      return MESA_FORMAT_L8;
 
    case 2:
    case GL_LUMINANCE_ALPHA:
@@ -331,7 +328,7 @@ sisChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
    case GL_LUMINANCE12_ALPHA12:
    case GL_LUMINANCE16_ALPHA16:
    case GL_COMPRESSED_LUMINANCE_ALPHA:
-      return &_mesa_texformat_al88;
+      return MESA_FORMAT_AL88;
 
    case GL_INTENSITY:
    case GL_INTENSITY4:
@@ -339,23 +336,23 @@ sisChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
    case GL_INTENSITY12:
    case GL_INTENSITY16:
    case GL_COMPRESSED_INTENSITY:
-      return &_mesa_texformat_i8;
+      return MESA_FORMAT_I8;
 
    case GL_YCBCR_MESA:
       if (type == GL_UNSIGNED_SHORT_8_8_APPLE ||
           type == GL_UNSIGNED_BYTE)
-         return &_mesa_texformat_ycbcr;
+         return MESA_FORMAT_YCBCR;
       else
-         return &_mesa_texformat_ycbcr_rev;
+         return MESA_FORMAT_YCBCR_REV;
 
    default:
       _mesa_problem(ctx, "unexpected format in sisDDChooseTextureFormat: %d",
          internalFormat);
-      return NULL;
+      return MESA_FORMAT_NONE;
    }
 }
 
-static void sisTexImage1D( GLcontext *ctx, GLenum target, GLint level,
+static void sisTexImage1D( struct gl_context *ctx, GLenum target, GLint level,
                             GLint internalFormat,
                             GLint width, GLint border,
                             GLenum format, GLenum type, const GLvoid *pixels,
@@ -380,6 +377,7 @@ static void sisTexImage1D( GLcontext *ctx, GLenum target, GLint level,
    sisAllocTexImage(smesa, t, level, texImage);
 
    /* Upload the texture */
+   WaitEngIdle(smesa);
    memcpy(t->image[level].Data, texImage->Data, t->image[level].size);
    
    if (smesa->PrevTexFormat[ctx->Texture.CurrentUnit] != t->format)
@@ -391,7 +389,7 @@ static void sisTexImage1D( GLcontext *ctx, GLenum target, GLint level,
 }
 
 
-static void sisTexSubImage1D( GLcontext *ctx,
+static void sisTexSubImage1D( struct gl_context *ctx,
                                GLenum target,
                                GLint level,
                                GLint xoffset,
@@ -422,7 +420,8 @@ static void sisTexSubImage1D( GLcontext *ctx,
    sisAllocTexImage(smesa, t, level, texImage);
 
    /* Upload the texture */
-   texelBytes = texImage->TexFormat->TexelBytes;
+   WaitEngIdle(smesa);
+   texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
 
    copySize = width * texelBytes;
    src = (char *)texImage->Data + xoffset * texelBytes;
@@ -440,7 +439,7 @@ static void sisTexSubImage1D( GLcontext *ctx,
    smesa->TexStates[ctx->Texture.CurrentUnit] |= NEW_TEXTURING;
 }
 
-static void sisTexImage2D( GLcontext *ctx, GLenum target, GLint level,
+static void sisTexImage2D( struct gl_context *ctx, GLenum target, GLint level,
                             GLint internalFormat,
                             GLint width, GLint height, GLint border,
                             GLenum format, GLenum type, const GLvoid *pixels,
@@ -465,6 +464,7 @@ static void sisTexImage2D( GLcontext *ctx, GLenum target, GLint level,
    sisAllocTexImage(smesa, t, level, texImage);
 
    /* Upload the texture */
+   WaitEngIdle(smesa);
    memcpy(t->image[level].Data, texImage->Data, t->image[level].size);
    
    if (smesa->PrevTexFormat[ctx->Texture.CurrentUnit] != t->format)
@@ -475,7 +475,7 @@ static void sisTexImage2D( GLcontext *ctx, GLenum target, GLint level,
    smesa->TexStates[ctx->Texture.CurrentUnit] |= NEW_TEXTURING;
 }
 
-static void sisTexSubImage2D( GLcontext *ctx,
+static void sisTexSubImage2D( struct gl_context *ctx,
                                GLenum target,
                                GLint level,
                                GLint xoffset, GLint yoffset,
@@ -508,7 +508,8 @@ static void sisTexSubImage2D( GLcontext *ctx,
    sisAllocTexImage(smesa, t, level, texImage);
 
    /* Upload the texture */
-   texelBytes = texImage->TexFormat->TexelBytes;
+   WaitEngIdle(smesa);
+   texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
 
    copySize = width * texelBytes;
    src = (char *)texImage->Data + (xoffset + yoffset * texImage->Width) *
@@ -543,7 +544,7 @@ static void sisTexSubImage2D( GLcontext *ctx,
  * texture object from the core mesa gl_texture_object.  Not done at this time.
  */
 static struct gl_texture_object *
-sisNewTextureObject( GLcontext *ctx, GLuint name, GLenum target )
+sisNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target )
 {
    struct gl_texture_object *obj;
    obj = _mesa_new_texture_object(ctx, name, target);