瀏覽代碼

added new texture image functions, minor clean-up

tags/mesa_3_3
Brian Paul 25 年之前
父節點
當前提交
d6998a714c
共有 1 個文件被更改,包括 177 次插入146 次删除
  1. 177
    146
      src/mesa/drivers/glide/fxddtex.c

+ 177
- 146
src/mesa/drivers/glide/fxddtex.c 查看文件

@@ -677,100 +677,101 @@ int fxTexGetInfo(int w, int h, GrLOD_t *lodlevel, GrAspectRatio_t *ar,
void fxTexGetFormat(GLenum glformat, GrTextureFormat_t *tfmt, GLint *ifmt)
{
switch(glformat) {
case 1:
case GL_LUMINANCE:
case GL_LUMINANCE4:
case GL_LUMINANCE8:
case GL_LUMINANCE12:
case GL_LUMINANCE16:
if(tfmt)
(*tfmt)=GR_TEXFMT_INTENSITY_8;
if(ifmt)
(*ifmt)=GL_LUMINANCE;
break;
case 2:
case GL_LUMINANCE_ALPHA:
case GL_LUMINANCE4_ALPHA4:
case GL_LUMINANCE6_ALPHA2:
case GL_LUMINANCE8_ALPHA8:
case GL_LUMINANCE12_ALPHA4:
case GL_LUMINANCE12_ALPHA12:
case GL_LUMINANCE16_ALPHA16:
if(tfmt)
(*tfmt)=GR_TEXFMT_ALPHA_INTENSITY_88;
if(ifmt)
(*ifmt)=GL_LUMINANCE_ALPHA;
break;
case GL_INTENSITY:
case GL_INTENSITY4:
case GL_INTENSITY8:
case GL_INTENSITY12:
case GL_INTENSITY16:
if(tfmt)
(*tfmt)=GR_TEXFMT_ALPHA_8;
if(ifmt)
(*ifmt)=GL_INTENSITY;
break;
case GL_ALPHA:
case GL_ALPHA4:
case GL_ALPHA8:
case GL_ALPHA12:
case GL_ALPHA16:
if(tfmt)
(*tfmt)=GR_TEXFMT_ALPHA_8;
if(ifmt)
(*ifmt)=GL_ALPHA;
break;
case 3:
case GL_RGB:
case GL_R3_G3_B2:
case GL_RGB4:
case GL_RGB5:
case GL_RGB8:
case GL_RGB10:
case GL_RGB12:
case GL_RGB16:
if(tfmt)
(*tfmt)=GR_TEXFMT_RGB_565;
if(ifmt)
(*ifmt)=GL_RGB;
break;
case 4:
case GL_RGBA:
case GL_RGBA2:
case GL_RGBA4:
case GL_RGBA8:
case GL_RGB10_A2:
case GL_RGBA12:
case GL_RGBA16:
if(tfmt)
(*tfmt)=GR_TEXFMT_ARGB_4444;
if(ifmt)
(*ifmt)=GL_RGBA;
break;
case GL_RGB5_A1:
if(tfmt)
(*tfmt)=GR_TEXFMT_ARGB_1555;
if(ifmt)
(*ifmt)=GL_RGBA;
break;
case GL_COLOR_INDEX:
case GL_COLOR_INDEX1_EXT:
case GL_COLOR_INDEX2_EXT:
case GL_COLOR_INDEX4_EXT:
case GL_COLOR_INDEX8_EXT:
case GL_COLOR_INDEX12_EXT:
case GL_COLOR_INDEX16_EXT:
if(tfmt)
(*tfmt)=GR_TEXFMT_P_8;
if(ifmt)
(*ifmt)=GL_RGBA;
break;
default:
fprintf(stderr,"fx Driver: unsupported internalFormat in fxTexGetFormat()\n");
fxCloseHardware();
exit(-1);
break;
case 1:
case GL_LUMINANCE:
case GL_LUMINANCE4:
case GL_LUMINANCE8:
case GL_LUMINANCE12:
case GL_LUMINANCE16:
if(tfmt)
(*tfmt)=GR_TEXFMT_INTENSITY_8;
if(ifmt)
(*ifmt)=GL_LUMINANCE;
break;
case 2:
case GL_LUMINANCE_ALPHA:
case GL_LUMINANCE4_ALPHA4:
case GL_LUMINANCE6_ALPHA2:
case GL_LUMINANCE8_ALPHA8:
case GL_LUMINANCE12_ALPHA4:
case GL_LUMINANCE12_ALPHA12:
case GL_LUMINANCE16_ALPHA16:
if(tfmt)
(*tfmt)=GR_TEXFMT_ALPHA_INTENSITY_88;
if(ifmt)
(*ifmt)=GL_LUMINANCE_ALPHA;
break;
case GL_INTENSITY:
case GL_INTENSITY4:
case GL_INTENSITY8:
case GL_INTENSITY12:
case GL_INTENSITY16:
if(tfmt)
(*tfmt)=GR_TEXFMT_ALPHA_8;
if(ifmt)
(*ifmt)=GL_INTENSITY;
break;
case GL_ALPHA:
case GL_ALPHA4:
case GL_ALPHA8:
case GL_ALPHA12:
case GL_ALPHA16:
if(tfmt)
(*tfmt)=GR_TEXFMT_ALPHA_8;
if(ifmt)
(*ifmt)=GL_ALPHA;
break;
case 3:
case GL_RGB:
case GL_R3_G3_B2:
case GL_RGB4:
case GL_RGB5:
case GL_RGB8:
case GL_RGB10:
case GL_RGB12:
case GL_RGB16:
if(tfmt)
(*tfmt)=GR_TEXFMT_RGB_565;
if(ifmt)
(*ifmt)=GL_RGB;
break;
case 4:
case GL_RGBA:
case GL_RGBA2:
case GL_RGBA4:
case GL_RGBA8:
case GL_RGB10_A2:
case GL_RGBA12:
case GL_RGBA16:
if(tfmt)
(*tfmt)=GR_TEXFMT_ARGB_4444;
if(ifmt)
(*ifmt)=GL_RGBA;
break;
case GL_RGB5_A1:
if(tfmt)
(*tfmt)=GR_TEXFMT_ARGB_1555;
if(ifmt)
(*ifmt)=GL_RGBA;
break;
case GL_COLOR_INDEX:
case GL_COLOR_INDEX1_EXT:
case GL_COLOR_INDEX2_EXT:
case GL_COLOR_INDEX4_EXT:
case GL_COLOR_INDEX8_EXT:
case GL_COLOR_INDEX12_EXT:
case GL_COLOR_INDEX16_EXT:
if(tfmt)
(*tfmt)=GR_TEXFMT_P_8;
if(ifmt)
(*ifmt)=GL_RGBA; /* XXX why is this RGBA? */
break;
default:
fprintf(stderr,
"fx Driver: unsupported internalFormat in fxTexGetFormat()\n");
fxCloseHardware();
exit(-1);
break;
}
}

@@ -781,58 +782,58 @@ static int fxIsTexSupported(GLenum target, GLint internalFormat,
return GL_FALSE;

switch(internalFormat) {
case GL_INTENSITY:
case GL_INTENSITY4:
case GL_INTENSITY8:
case GL_INTENSITY12:
case GL_INTENSITY16:
case 1:
case GL_LUMINANCE:
case GL_LUMINANCE4:
case GL_LUMINANCE8:
case GL_LUMINANCE12:
case GL_LUMINANCE16:
case 2:
case GL_LUMINANCE_ALPHA:
case GL_LUMINANCE4_ALPHA4:
case GL_LUMINANCE6_ALPHA2:
case GL_LUMINANCE8_ALPHA8:
case GL_LUMINANCE12_ALPHA4:
case GL_LUMINANCE12_ALPHA12:
case GL_LUMINANCE16_ALPHA16:
case GL_ALPHA:
case GL_ALPHA4:
case GL_ALPHA8:
case GL_ALPHA12:
case GL_ALPHA16:
case 3:
case GL_RGB:
case GL_R3_G3_B2:
case GL_RGB4:
case GL_RGB5:
case GL_RGB8:
case GL_RGB10:
case GL_RGB12:
case GL_RGB16:
case 4:
case GL_RGBA:
case GL_RGBA2:
case GL_RGBA4:
case GL_RGB5_A1:
case GL_RGBA8:
case GL_RGB10_A2:
case GL_RGBA12:
case GL_RGBA16:
case GL_COLOR_INDEX:
case GL_COLOR_INDEX1_EXT:
case GL_COLOR_INDEX2_EXT:
case GL_COLOR_INDEX4_EXT:
case GL_COLOR_INDEX8_EXT:
case GL_COLOR_INDEX12_EXT:
case GL_COLOR_INDEX16_EXT:
break;
default:
return GL_FALSE;
case GL_INTENSITY:
case GL_INTENSITY4:
case GL_INTENSITY8:
case GL_INTENSITY12:
case GL_INTENSITY16:
case 1:
case GL_LUMINANCE:
case GL_LUMINANCE4:
case GL_LUMINANCE8:
case GL_LUMINANCE12:
case GL_LUMINANCE16:
case 2:
case GL_LUMINANCE_ALPHA:
case GL_LUMINANCE4_ALPHA4:
case GL_LUMINANCE6_ALPHA2:
case GL_LUMINANCE8_ALPHA8:
case GL_LUMINANCE12_ALPHA4:
case GL_LUMINANCE12_ALPHA12:
case GL_LUMINANCE16_ALPHA16:
case GL_ALPHA:
case GL_ALPHA4:
case GL_ALPHA8:
case GL_ALPHA12:
case GL_ALPHA16:
case 3:
case GL_RGB:
case GL_R3_G3_B2:
case GL_RGB4:
case GL_RGB5:
case GL_RGB8:
case GL_RGB10:
case GL_RGB12:
case GL_RGB16:
case 4:
case GL_RGBA:
case GL_RGBA2:
case GL_RGBA4:
case GL_RGB5_A1:
case GL_RGBA8:
case GL_RGB10_A2:
case GL_RGBA12:
case GL_RGBA16:
case GL_COLOR_INDEX:
case GL_COLOR_INDEX1_EXT:
case GL_COLOR_INDEX2_EXT:
case GL_COLOR_INDEX4_EXT:
case GL_COLOR_INDEX8_EXT:
case GL_COLOR_INDEX12_EXT:
case GL_COLOR_INDEX16_EXT:
break;
default:
return GL_FALSE;
}

if(image->Width>256)
@@ -1426,6 +1427,36 @@ void fxDDTexSubImg(GLcontext *ctx, GLenum target,
}



/**********************************************************************/
/**** NEW TEXTURE IMAGE FUNCTIONS ****/
/**********************************************************************/

GLboolean fxDDTexImage2D(GLcontext *ctx, GLenum target, GLint level,
GLenum format, GLenum type, const GLvoid *pixels,
const struct gl_pixelstore_attrib *packing,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage,
GLboolean *retainInternalCopy)
{
*retainInternalCopy = GL_TRUE;
return GL_FALSE;
}


GLboolean fxDDTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type, const GLvoid *pixels,
const struct gl_pixelstore_attrib *packing,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage)
{

return GL_FALSE;
}


#else



Loading…
取消
儲存