Ignore:
Timestamp:
May 23, 2000, 10:41:28 PM (25 years ago)
Author:
jeroen
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/opengl/mesa/3dfx/fxddtex.c

    r2938 r3598  
    33/*
    44 * Mesa 3-D graphics library
    5  * Version:  3.1
     5 * Version:  3.3
    66 *
    77 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
     
    5858    fprintf(stderr, "\tName: %d\n", ti->tObj->Name);
    5959    fprintf(stderr, "\tBaseLevel: %d\n", ti->tObj->BaseLevel);
    60     fprintf(stderr, "\tSize: %d x %d\n", 
    61             ti->tObj->Image[ti->tObj->BaseLevel]->Width,
    62             ti->tObj->Image[ti->tObj->BaseLevel]->Height);
     60    fprintf(stderr, "\tSize: %d x %d\n",
     61            ti->tObj->Image[ti->tObj->BaseLevel]->Width,
     62            ti->tObj->Image[ti->tObj->BaseLevel]->Height);
    6363  } else
    6464    fprintf(stderr, "\tName: UNNAMED\n");
    6565  fprintf(stderr, "\tLast used: %d\n", ti->lastTimeUsed);
    66   fprintf(stderr, "\tTMU: %d\n", ti->whichTMU);
     66  fprintf(stderr, "\tTMU: %ld\n", ti->whichTMU);
    6767  fprintf(stderr, "\t%s\n", (ti->isInTM)?"In TMU":"Not in TMU");
    68   if (ti->tm[0]) 
    69     fprintf(stderr, "\tMem0: %x-%x\n", ti->tm[0]->startAddr, 
    70             ti->tm[0]->endAddr);
    71   if (ti->tm[1]) 
    72     fprintf(stderr, "\tMem1: %x-%x\n", ti->tm[1]->startAddr, 
    73             ti->tm[1]->endAddr);
     68  if (ti->tm[0])
     69    fprintf(stderr, "\tMem0: %x-%x\n", ti->tm[0]->startAddr,
     70            ti->tm[0]->endAddr);
     71  if (ti->tm[1])
     72    fprintf(stderr, "\tMem1: %x-%x\n", ti->tm[1]->startAddr,
     73            ti->tm[1]->endAddr);
    7474  fprintf(stderr, "\tMipmaps: %d-%d\n", ti->minLevel, ti->maxLevel);
    7575  fprintf(stderr, "\tFilters: min %d min %d\n", ti->minFilt, ti->maxFilt);
    7676  fprintf(stderr, "\tClamps: s %d t %d\n", ti->sClamp, ti->tClamp);
    7777  fprintf(stderr, "\tScales: s %f t %f\n", ti->sScale, ti->tScale);
    78   fprintf(stderr, "\tInt Scales: s %d t %d\n", 
    79           ti->int_sScale/0x800000, ti->int_tScale/0x800000);
     78  fprintf(stderr, "\tInt Scales: s %d t %d\n",
     79          ti->int_sScale/0x800000, ti->int_tScale/0x800000);
    8080  fprintf(stderr, "\t%s\n", (ti->fixedPalette)?"Fixed palette":"Non fixed palette");
    8181  fprintf(stderr, "\t%s\n", (ti->validated)?"Validated":"Not validated");
     
    8787/************************************************************************/
    8888
    89 void fxTexInvalidate(GLcontext *ctx, struct gl_texture_object *tObj)
     89static void fxTexInvalidate(GLcontext *ctx, struct gl_texture_object *tObj)
    9090{
    9191  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
     
    108108    fprintf(stderr,"fx Driver: out of memory !\n");
    109109    fxCloseHardware();
    110     exit(-1);
     110    EXIT(-1);
    111111  }
    112112
     
    161161}
    162162
    163 void fxDDTexEnv(GLcontext *ctx, GLenum pname, const GLfloat *param)
     163void fxDDTexEnv(GLcontext *ctx, GLenum target, GLenum pname, const GLfloat *param)
    164164{
    165165  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
     
    167167   if (MESA_VERBOSE&VERBOSE_DRIVER) {
    168168      if(param)
    169         fprintf(stderr,"fxmesa: texenv(%x,%x)\n",pname,(GLint)(*param));
     169        fprintf(stderr,"fxmesa: texenv(%x,%x)\n",pname,(GLint)(*param));
    170170      else
    171          fprintf(stderr,"fxmesa: texenv(%x)\n",pname);
     171         fprintf(stderr,"fxmesa: texenv(%x)\n",pname);
     172   }
     173
     174   /* apply any lod biasing right now */
     175   if (pname==GL_TEXTURE_LOD_BIAS_EXT) {
     176     grTexLodBiasValue(GR_TMU0,*param);
     177
     178     if(fxMesa->haveTwoTMUs) {
     179       grTexLodBiasValue(GR_TMU1,*param);
     180     }
     181
    172182   }
    173183
     
    338348  tfxTexInfo *ti;
    339349
    340   if(tObj) { 
     350  if(tObj) {
    341351     if (MESA_VERBOSE&VERBOSE_DRIVER) {
    342         fprintf(stderr,"fxmesa: fxDDTexPalette(%d,%x)\n",tObj->Name,(GLuint)tObj->DriverData);
     352        fprintf(stderr,"fxmesa: fxDDTexPalette(%d,%x)\n",tObj->Name,(GLuint)tObj->DriverData);
    343353     }
    344354
    345     if(tObj->PaletteFormat!=GL_RGBA) {
     355    if(tObj->Palette.Format!=GL_RGBA) {
    346356#ifndef FX_SILENT
    347357      fprintf(stderr,"fx Driver: unsupported palette format in texpalette()\n");
     
    350360    }
    351361
    352     if(tObj->PaletteSize>256) {
     362    if(tObj->Palette.Size>256) {
    353363#ifndef FX_SILENT
    354364      fprintf(stderr,"fx Driver: unsupported palette size in texpalette()\n");
     
    359369    if (!tObj->DriverData)
    360370      tObj->DriverData=fxAllocTexObjData(fxMesa);
    361  
     371
    362372    ti=fxTMGetTexInfo(tObj);
    363373
    364     for(i=0;i<tObj->PaletteSize;i++) {
    365       r=tObj->Palette[i*4];
    366       g=tObj->Palette[i*4+1];
    367       b=tObj->Palette[i*4+2];
    368       a=tObj->Palette[i*4+3];
     374    for(i=0;i<tObj->Palette.Size;i++) {
     375      r=tObj->Palette.Table[i*4];
     376      g=tObj->Palette.Table[i*4+1];
     377      b=tObj->Palette.Table[i*4+2];
     378      a=tObj->Palette.Table[i*4+3];
    369379      ti->palette.data[i]=(a<<24)|(r<<16)|(g<<8)|b;
    370380    }
     
    373383  } else {
    374384     if (MESA_VERBOSE&VERBOSE_DRIVER) {
    375         fprintf(stderr,"fxmesa: fxDDTexPalette(global)\n");
     385        fprintf(stderr,"fxmesa: fxDDTexPalette(global)\n");
    376386     }
    377     if(ctx->Texture.PaletteFormat!=GL_RGBA) {
     387    if(ctx->Texture.Palette.Format!=GL_RGBA) {
    378388#ifndef FX_SILENT
    379389      fprintf(stderr,"fx Driver: unsupported palette format in texpalette()\n");
     
    382392    }
    383393
    384     if(ctx->Texture.PaletteSize>256) {
     394    if(ctx->Texture.Palette.Size>256) {
    385395#ifndef FX_SILENT
    386396      fprintf(stderr,"fx Driver: unsupported palette size in texpalette()\n");
     
    389399    }
    390400
    391     for(i=0;i<ctx->Texture.PaletteSize;i++) {
    392       r=ctx->Texture.Palette[i*4];
    393       g=ctx->Texture.Palette[i*4+1];
    394       b=ctx->Texture.Palette[i*4+2];
    395       a=ctx->Texture.Palette[i*4+3];
     401    for(i=0;i<ctx->Texture.Palette.Size;i++) {
     402      r=ctx->Texture.Palette.Table[i*4];
     403      g=ctx->Texture.Palette.Table[i*4+1];
     404      b=ctx->Texture.Palette.Table[i*4+2];
     405      a=ctx->Texture.Palette.Table[i*4+3];
    396406      fxMesa->glbPalette.data[i]=(a<<24)|(r<<16)|(g<<8)|b;
    397407    }
     
    425435      if (!tObj->DriverData)
    426436        tObj->DriverData=fxAllocTexObjData(fxMesa);
    427  
     437
    428438      fxTexInvalidate(ctx,tObj);
    429439    }
     
    660670}
    661671
     672/*
     673 * Given an OpenGL internal texture format, return the corresponding
     674 * Glide internal texture format and base texture format.
     675 */
    662676void fxTexGetFormat(GLenum glformat, GrTextureFormat_t *tfmt, GLint *ifmt)
    663677{
    664678  switch(glformat) {
    665   case 1:
    666   case GL_LUMINANCE:
    667   case GL_LUMINANCE4:
    668   case GL_LUMINANCE8:
    669   case GL_LUMINANCE12:
    670   case GL_LUMINANCE16:
    671     if(tfmt)
    672       (*tfmt)=GR_TEXFMT_INTENSITY_8;
    673     if(ifmt)
    674       (*ifmt)=GL_LUMINANCE;
    675     break;
    676   case 2:
    677   case GL_LUMINANCE_ALPHA:
    678   case GL_LUMINANCE4_ALPHA4:
    679   case GL_LUMINANCE6_ALPHA2:
    680   case GL_LUMINANCE8_ALPHA8:
    681   case GL_LUMINANCE12_ALPHA4:
    682   case GL_LUMINANCE12_ALPHA12:
    683   case GL_LUMINANCE16_ALPHA16:
    684     if(tfmt)
    685       (*tfmt)=GR_TEXFMT_ALPHA_INTENSITY_88;
    686     if(ifmt)
    687       (*ifmt)=GL_LUMINANCE_ALPHA;
    688     break;
    689   case GL_INTENSITY:
    690   case GL_INTENSITY4:
    691   case GL_INTENSITY8:
    692   case GL_INTENSITY12:
    693   case GL_INTENSITY16:
    694     if(tfmt)
    695       (*tfmt)=GR_TEXFMT_ALPHA_8;
    696     if(ifmt)
    697       (*ifmt)=GL_INTENSITY;
    698     break;
    699   case GL_ALPHA:
    700   case GL_ALPHA4:
    701   case GL_ALPHA8:
    702   case GL_ALPHA12:
    703   case GL_ALPHA16:
    704     if(tfmt)
    705       (*tfmt)=GR_TEXFMT_ALPHA_8;
    706     if(ifmt)
    707       (*ifmt)=GL_ALPHA;
    708     break;
    709   case 3:
    710   case GL_RGB:
    711   case GL_R3_G3_B2:
    712   case GL_RGB4:
    713   case GL_RGB5:
    714   case GL_RGB8:
    715   case GL_RGB10:
    716   case GL_RGB12:
    717   case GL_RGB16:
    718     if(tfmt)
    719       (*tfmt)=GR_TEXFMT_RGB_565;
    720     if(ifmt)
    721       (*ifmt)=GL_RGB;
    722     break;
    723   case 4:
    724   case GL_RGBA:
    725   case GL_RGBA2:
    726   case GL_RGBA4:
    727   case GL_RGB5_A1:
    728   case GL_RGBA8:
    729   case GL_RGB10_A2:
    730   case GL_RGBA12:
    731   case GL_RGBA16:
    732     if(tfmt)
    733       (*tfmt)=GR_TEXFMT_ARGB_4444;
    734     if(ifmt)
    735       (*ifmt)=GL_RGBA;
    736     break;
    737   case GL_COLOR_INDEX:
    738   case GL_COLOR_INDEX1_EXT:
    739   case GL_COLOR_INDEX2_EXT:
    740   case GL_COLOR_INDEX4_EXT:
    741   case GL_COLOR_INDEX8_EXT:
    742   case GL_COLOR_INDEX12_EXT:
    743   case GL_COLOR_INDEX16_EXT:
    744     if(tfmt)
    745       (*tfmt)=GR_TEXFMT_P_8;
    746     if(ifmt)
    747       (*ifmt)=GL_RGBA;
    748     break;
    749   default:
    750     fprintf(stderr,"fx Driver: unsupported internalFormat in fxTexGetFormat()\n");
    751     fxCloseHardware();
    752     exit(-1);
    753     break;
     679    case 1:
     680    case GL_LUMINANCE:
     681    case GL_LUMINANCE4:
     682    case GL_LUMINANCE8:
     683    case GL_LUMINANCE12:
     684    case GL_LUMINANCE16:
     685      if(tfmt)
     686        (*tfmt)=GR_TEXFMT_INTENSITY_8;
     687      if(ifmt)
     688        (*ifmt)=GL_LUMINANCE;
     689      break;
     690    case 2:
     691    case GL_LUMINANCE_ALPHA:
     692    case GL_LUMINANCE4_ALPHA4:
     693    case GL_LUMINANCE6_ALPHA2:
     694    case GL_LUMINANCE8_ALPHA8:
     695    case GL_LUMINANCE12_ALPHA4:
     696    case GL_LUMINANCE12_ALPHA12:
     697    case GL_LUMINANCE16_ALPHA16:
     698      if(tfmt)
     699        (*tfmt)=GR_TEXFMT_ALPHA_INTENSITY_88;
     700      if(ifmt)
     701        (*ifmt)=GL_LUMINANCE_ALPHA;
     702      break;
     703    case GL_INTENSITY:
     704    case GL_INTENSITY4:
     705    case GL_INTENSITY8:
     706    case GL_INTENSITY12:
     707    case GL_INTENSITY16:
     708      if(tfmt)
     709        (*tfmt)=GR_TEXFMT_ALPHA_8;
     710      if(ifmt)
     711        (*ifmt)=GL_INTENSITY;
     712      break;
     713    case GL_ALPHA:
     714    case GL_ALPHA4:
     715    case GL_ALPHA8:
     716    case GL_ALPHA12:
     717    case GL_ALPHA16:
     718      if(tfmt)
     719        (*tfmt)=GR_TEXFMT_ALPHA_8;
     720      if(ifmt)
     721        (*ifmt)=GL_ALPHA;
     722      break;
     723    case 3:
     724    case GL_RGB:
     725    case GL_R3_G3_B2:
     726    case GL_RGB4:
     727    case GL_RGB5:
     728    case GL_RGB8:
     729    case GL_RGB10:
     730    case GL_RGB12:
     731    case GL_RGB16:
     732      if(tfmt)
     733        (*tfmt)=GR_TEXFMT_RGB_565;
     734      if(ifmt)
     735        (*ifmt)=GL_RGB;
     736      break;
     737    case 4:
     738    case GL_RGBA:
     739    case GL_RGBA2:
     740    case GL_RGBA4:
     741    case GL_RGBA8:
     742    case GL_RGB10_A2:
     743    case GL_RGBA12:
     744    case GL_RGBA16:
     745      if(tfmt)
     746        (*tfmt)=GR_TEXFMT_ARGB_4444;
     747      if(ifmt)
     748        (*ifmt)=GL_RGBA;
     749      break;
     750    case GL_RGB5_A1:
     751       if(tfmt)
     752         (*tfmt)=GR_TEXFMT_ARGB_1555;
     753       if(ifmt)
     754         (*ifmt)=GL_RGBA;
     755       break;
     756    case GL_COLOR_INDEX:
     757    case GL_COLOR_INDEX1_EXT:
     758    case GL_COLOR_INDEX2_EXT:
     759    case GL_COLOR_INDEX4_EXT:
     760    case GL_COLOR_INDEX8_EXT:
     761    case GL_COLOR_INDEX12_EXT:
     762    case GL_COLOR_INDEX16_EXT:
     763      if(tfmt)
     764        (*tfmt)=GR_TEXFMT_P_8;
     765      if(ifmt)
     766        (*ifmt)=GL_RGBA;
     767      break;
     768    default:
     769      fprintf(stderr,"fx Driver: unsupported internalFormat in fxTexGetFormat()\n");
     770      fxCloseHardware();
     771      EXIT(-1);
     772      break;
    754773  }
    755774}
     
    762781
    763782  switch(internalFormat) {
    764   case GL_INTENSITY:
    765   case GL_INTENSITY4:
    766   case GL_INTENSITY8:
    767   case GL_INTENSITY12:
    768   case GL_INTENSITY16:
    769   case 1:
    770   case GL_LUMINANCE:
    771   case GL_LUMINANCE4:
    772   case GL_LUMINANCE8:
    773   case GL_LUMINANCE12:
    774   case GL_LUMINANCE16:
    775   case 2:
    776   case GL_LUMINANCE_ALPHA:
    777   case GL_LUMINANCE4_ALPHA4:
    778   case GL_LUMINANCE6_ALPHA2:
    779   case GL_LUMINANCE8_ALPHA8:
    780   case GL_LUMINANCE12_ALPHA4:
    781   case GL_LUMINANCE12_ALPHA12:
    782   case GL_LUMINANCE16_ALPHA16:
    783   case GL_ALPHA:
    784   case GL_ALPHA4:
    785   case GL_ALPHA8:
    786   case GL_ALPHA12:
    787   case GL_ALPHA16:
    788   case 3:
    789   case GL_RGB:
    790   case GL_R3_G3_B2:
    791   case GL_RGB4:
    792   case GL_RGB5:
    793   case GL_RGB8:
    794   case GL_RGB10:
    795   case GL_RGB12:
    796   case GL_RGB16:
    797   case 4:
    798   case GL_RGBA:
    799   case GL_RGBA2:
    800   case GL_RGBA4:
    801   case GL_RGB5_A1:
    802   case GL_RGBA8:
    803   case GL_RGB10_A2:
    804   case GL_RGBA12:
    805   case GL_RGBA16:
    806   case GL_COLOR_INDEX:
    807   case GL_COLOR_INDEX1_EXT:
    808   case GL_COLOR_INDEX2_EXT:
    809   case GL_COLOR_INDEX4_EXT:
    810   case GL_COLOR_INDEX8_EXT:
    811   case GL_COLOR_INDEX12_EXT:
    812   case GL_COLOR_INDEX16_EXT:
    813     break;
    814   default:
    815     return GL_FALSE;
     783    case GL_INTENSITY:
     784    case GL_INTENSITY4:
     785    case GL_INTENSITY8:
     786    case GL_INTENSITY12:
     787    case GL_INTENSITY16:
     788    case 1:
     789    case GL_LUMINANCE:
     790    case GL_LUMINANCE4:
     791    case GL_LUMINANCE8:
     792    case GL_LUMINANCE12:
     793    case GL_LUMINANCE16:
     794    case 2:
     795    case GL_LUMINANCE_ALPHA:
     796    case GL_LUMINANCE4_ALPHA4:
     797    case GL_LUMINANCE6_ALPHA2:
     798    case GL_LUMINANCE8_ALPHA8:
     799    case GL_LUMINANCE12_ALPHA4:
     800    case GL_LUMINANCE12_ALPHA12:
     801    case GL_LUMINANCE16_ALPHA16:
     802    case GL_ALPHA:
     803    case GL_ALPHA4:
     804    case GL_ALPHA8:
     805    case GL_ALPHA12:
     806    case GL_ALPHA16:
     807    case 3:
     808    case GL_RGB:
     809    case GL_R3_G3_B2:
     810    case GL_RGB4:
     811    case GL_RGB5:
     812    case GL_RGB8:
     813    case GL_RGB10:
     814    case GL_RGB12:
     815    case GL_RGB16:
     816    case 4:
     817    case GL_RGBA:
     818    case GL_RGBA2:
     819    case GL_RGBA4:
     820    case GL_RGB5_A1:
     821    case GL_RGBA8:
     822    case GL_RGB10_A2:
     823    case GL_RGBA12:
     824    case GL_RGBA16:
     825    case GL_COLOR_INDEX:
     826    case GL_COLOR_INDEX1_EXT:
     827    case GL_COLOR_INDEX2_EXT:
     828    case GL_COLOR_INDEX4_EXT:
     829    case GL_COLOR_INDEX8_EXT:
     830    case GL_COLOR_INDEX12_EXT:
     831    case GL_COLOR_INDEX16_EXT:
     832      break;
     833    default:
     834      return GL_FALSE;
    816835  }
    817836
     
    823842
    824843  if(!fxTexGetInfo(image->Width,image->Height,NULL,NULL,NULL,NULL,NULL,NULL,
    825                    NULL,NULL))
     844                   NULL,NULL))
    826845    return GL_FALSE;
    827846
     
    838857
    839858  fxTexGetInfo(image->Width,image->Height,NULL,NULL,NULL,NULL,NULL,NULL,
    840                &wscale,&hscale);
     859               &wscale,&hscale);
    841860  w=image->Width*wscale;
    842861  h=image->Height*hscale;
     
    882901          fprintf(stderr,"fx Driver: out of memory !\n");
    883902          fxCloseHardware();
    884           exit(-1);
     903          EXIT(-1);
    885904        }
    886905      } else
     
    910929        fprintf(stderr,"fx Driver: out of memory !\n");
    911930        fxCloseHardware();
    912         exit(-1);
     931        EXIT(-1);
    913932      }
    914933    } else
     
    954973        fprintf(stderr,"fx Driver: out of memory !\n");
    955974        fxCloseHardware();
    956         exit(-1);
     975        EXIT(-1);
    957976      }
    958977    } else
     
    962981      int i=0;
    963982      int length=h*w;
    964       unsigned short r,g,b;
     983      unsigned int r,g,b;
    965984
    966985      while(i++<length) {
     
    971990        *src++=((0xf8 & r) << (11-3))  |
    972991          ((0xfc & g) << (5-3+1))      |
    973           ((0xf8 & b) >> 3); 
     992          ((0xf8 & b) >> 3);
    974993      }
    975994    } else {
    976       unsigned short r,g,b;
     995      unsigned int r,g,b;
    977996
    978997      for(y=0;y<h;y++)
     
    9851004          src[x+y*w]=((0xf8 & r) << (11-3))  |
    9861005            ((0xfc & g) << (5-3+1))      |
    987             ((0xf8 & b) >> 3); 
     1006            ((0xf8 & b) >> 3);
    9881007        }
    9891008    }
     
    9931012  case GL_RGBA2:
    9941013  case GL_RGBA4:
    995   case GL_RGB5_A1:
    9961014  case GL_RGBA8:
    9971015  case GL_RGB10_A2:
     
    10041022        fprintf(stderr,"fx Driver: out of memory !\n");
    10051023        fxCloseHardware();
    1006         exit(-1);
     1024        EXIT(-1);
    10071025      }
    10081026    } else
     
    10121030      int i=0;
    10131031      int length=h*w;
    1014       unsigned short r,g,b,a;
     1032      unsigned int r,g,b,a;
    10151033
    10161034      while(i++<length) {
     
    10261044      }
    10271045    } else {
    1028       unsigned short r,g,b,a;
     1046      unsigned int r,g,b,a;
    10291047
    10301048      for(y=0;y<h;y++)
     
    10431061    }
    10441062    break;
     1063  case GL_RGB5_A1:
     1064    (*istranslate)=GL_TRUE;
     1065
     1066    if(!(*dest)) {
     1067      if(!((*dest)=src=(unsigned short *)malloc(sizeof(unsigned short)*w*h))) {
     1068        fprintf(stderr,"fx Driver: out of memory !\n");
     1069        fxCloseHardware();
     1070        exit(-1);
     1071      }
     1072    } else
     1073      src=(*dest);
     1074
     1075    if(wscale==hscale==1) {
     1076      int i=0;
     1077      int lenght=h*w;
     1078      unsigned  r,g,b,a;
     1079
     1080      while(i++<lenght) {
     1081        r=*data++;
     1082        g=*data++;
     1083        b=*data++;
     1084        a=*data++;
     1085        *src++=((0x80 & a) << 8) |
     1086          ((0xf8 & r) << 7)      |
     1087          ((0xf8 & g) << 2)      |
     1088          ((0xf8 & b) >> 3);
     1089      }
     1090    } else {
     1091      unsigned r,g,b,a;
     1092
     1093      for(y=0;y<h;y++)
     1094        for(x=0;x<w;x++) {
     1095          idx=(x/wscale+(y/hscale)*(w/wscale))*4;
     1096          r=data[idx];
     1097          g=data[idx+1];
     1098          b=data[idx+2];
     1099          a=data[idx+3];
     1100
     1101          src[x+y*w]=((0x80 & a) << 8) |
     1102          ((0xf8 & r) << 7)      |
     1103          ((0xf8 & g) << 2)      |
     1104          ((0xf8 & b) >> 3);
     1105        }
     1106    }
     1107    break;
    10451108  default:
    10461109    fprintf(stderr,"fx Driver: wrong internalFormat in texbuildimagemap()\n");
    10471110    fxCloseHardware();
    1048     exit(-1);
     1111    EXIT(-1);
    10491112    break;
    10501113  }
     
    10601123  if (MESA_VERBOSE&VERBOSE_DRIVER) {
    10611124     fprintf(stderr,
    1062              "fxmesa: (%d) fxDDTexImg(...,level=%d,target=%d,format=%x,width=%d,height=%d...)\n",
    1063              tObj->Name, level, target, internalFormat, image->Width,
    1064              image->Height);
     1125             "fxmesa: (%d) fxDDTexImg(...,level=%d,target=%d,format=%x,width=%d,height=%d...)\n",
     1126             tObj->Name, level, target, internalFormat, image->Width,
     1127             image->Height);
    10651128  }
    10661129
     
    10781141
    10791142    fxTexGetFormat((GLenum)internalFormat,&gldformat,NULL);
    1080    
     1143
    10811144    if(mml->used) {
    10821145      if((mml->glideFormat==gldformat) &&
     
    11211184{
    11221185  fxTexGetInfo(image->Width,image->Height,NULL,NULL,NULL,NULL,NULL,NULL,
    1123                NULL,NULL);
     1186               NULL,NULL);
    11241187
    11251188  switch(internalFormat) {
     
    11541217      bsrc=(unsigned char *)(image->Data+(yoffset*image->Width+xoffset));
    11551218      bdst=((unsigned char *)destimg)+(yoffset*image->Width+xoffset);
    1156    
     1219
    11571220      for(y=0;y<height;y++) {
    11581221        MEMCPY(bdst,bsrc,width);
     
    11781241      src=(unsigned char *)(image->Data+(yoffset*image->Width+xoffset)*2);
    11791242      dst=destimg+(yoffset*image->Width+xoffset);
    1180    
     1243
    11811244      simgw=(image->Width-width)*2;
    11821245      dimgw=image->Width-width;
     
    12101273      src=(unsigned char *)(image->Data+(yoffset*image->Width+xoffset)*3);
    12111274      dst=destimg+(yoffset*image->Width+xoffset);
    1212    
     1275
    12131276      simgw=(image->Width-width)*3;
    12141277      dimgw=image->Width-width;
     
    12201283          *dst++=((0xf8 & r) << (11-3))  |
    12211284            ((0xfc & g) << (5-3+1))      |
    1222             ((0xf8 & b) >> 3); 
     1285            ((0xf8 & b) >> 3);
    12231286        }
    12241287
     
    12321295  case GL_RGBA2:
    12331296  case GL_RGBA4:
    1234   case GL_RGB5_A1:
    12351297  case GL_RGBA8:
    12361298  case GL_RGB10_A2:
     
    12451307      src=(unsigned char *)(image->Data+(yoffset*image->Width+xoffset)*4);
    12461308      dst=destimg+(yoffset*image->Width+xoffset);
    1247    
     1309
    12481310      simgw=(image->Width-width)*4;
    12491311      dimgw=image->Width-width;
     
    12651327    }
    12661328    break;
     1329  case GL_RGB5_A1:
     1330    {
     1331      int x,y;
     1332      unsigned char *src;
     1333      unsigned short *dst,r,g,b,a;
     1334      int simgw,dimgw;
     1335
     1336      src=(unsigned char *)(image->Data+(yoffset*image->Width+xoffset)*4);
     1337      dst=destimg+(yoffset*image->Width+xoffset);
     1338
     1339      simgw=(image->Width-width)*4;
     1340      dimgw=image->Width-width;
     1341      for(y=0;y<height;y++) {
     1342        for(x=0;x<width;x++) {
     1343          r=*src++;
     1344          g=*src++;
     1345          b=*src++;
     1346          a=*src++;
     1347          *dst++=
     1348          ((0x80 & a) << 8) |
     1349          ((0xf8 & r) << 7)      |
     1350          ((0xf8 & g) << 2)      |
     1351          ((0xf8 & b) >> 3);
     1352        }
     1353
     1354        src += simgw;
     1355        dst += dimgw;
     1356      }
     1357    }
     1358    break;
    12671359  default:
    12681360    fprintf(stderr,"fx Driver: wrong internalFormat in fxTexBuildSubImageMap()\n");
    12691361    fxCloseHardware();
    1270     exit(-1);
    1271     break;
    1272   }
    1273 }
    1274  
     1362    EXIT(-1);
     1363    break;
     1364  }
     1365}
     1366
    12751367
    12761368void fxDDTexSubImg(GLcontext *ctx, GLenum target,
     
    12871379  if (MESA_VERBOSE&VERBOSE_DRIVER) {
    12881380     fprintf(stderr,
    1289              "fxmesa: (%d) fxDDTexSubImg(level=%d,target=%d,format=%x,width=%d,height=%d)\n",
    1290              tObj->Name, level, target, internalFormat, image->Width,
    1291              image->Height);
     1381             "fxmesa: (%d) fxDDTexSubImg(level=%d,target=%d,format=%x,width=%d,height=%d)\n",
     1382             tObj->Name, level, target, internalFormat, image->Width,
     1383             image->Height);
    12921384  }
    12931385
     
    13051397  if(mml->glideFormat!=gldformat) {
    13061398     if (MESA_VERBOSE&VERBOSE_DRIVER) {
    1307         fprintf(stderr,"fxmesa:  ti->info.format!=format in fxDDTexSubImg()\n");
     1399        fprintf(stderr,"fxmesa:  ti->info.format!=format in fxDDTexSubImg()\n");
    13081400     }
    13091401    fxDDTexImg(ctx,target,tObj,level,internalFormat,image);
     
    13161408  if((wscale!=1) || (hscale!=1)) {
    13171409     if (MESA_VERBOSE&VERBOSE_DRIVER) {
    1318         fprintf(stderr,"fxmesa:  (wscale!=1) || (hscale!=1) in fxDDTexSubImg()\n");
     1410        fprintf(stderr,"fxmesa:  (wscale!=1) || (hscale!=1) in fxDDTexSubImg()\n");
    13191411     }
    13201412    fxDDTexImg(ctx,target,tObj,level,internalFormat,image);
     
    13341426
    13351427
     1428
     1429/**********************************************************************/
     1430/**** NEW TEXTURE IMAGE FUNCTIONS                                  ****/
     1431/**********************************************************************/
     1432
     1433GLboolean fxDDTexImage2D(GLcontext *ctx, GLenum target, GLint level,
     1434                         GLenum format, GLenum type, const GLvoid *pixels,
     1435                         const struct gl_pixelstore_attrib *packing,
     1436                         struct gl_texture_object *texObj,
     1437                         struct gl_texture_image *texImage,
     1438                         GLboolean *retainInternalCopy)
     1439{
     1440  *retainInternalCopy = GL_TRUE;
     1441  return GL_FALSE;
     1442}
     1443
     1444
     1445GLboolean fxDDTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
     1446                            GLint xoffset, GLint yoffset,
     1447                            GLsizei width, GLsizei height,
     1448                            GLenum format, GLenum type, const GLvoid *pixels,
     1449                            const struct gl_pixelstore_attrib *packing,
     1450                            struct gl_texture_object *texObj,
     1451                            struct gl_texture_image *texImage)
     1452{
     1453
     1454  return GL_FALSE;
     1455}
     1456
     1457
    13361458#else
    13371459
Note: See TracChangeset for help on using the changeset viewer.