mesa: Move support for paletted textures to main/teximage.c
This commit is contained in:
@@ -4,7 +4,6 @@ include $(MESA)/sources.mak
|
||||
|
||||
LOCAL_ES1_SOURCES := \
|
||||
main/drawtex.c \
|
||||
main/es_cpaltex.c \
|
||||
main/es_query_matrix.c \
|
||||
main/es_texgen.c \
|
||||
glapi/glapi-es1/main/enums.c
|
||||
@@ -23,7 +22,6 @@ LOCAL_ES1_INCLUDES := \
|
||||
-I$(MESA)/state_tracker
|
||||
|
||||
LOCAL_ES2_SOURCES := \
|
||||
main/es_cpaltex.c \
|
||||
glapi/glapi-es2/main/enums.c
|
||||
|
||||
LOCAL_ES2_GALLIUM_SOURCES := \
|
||||
|
@@ -4040,7 +4040,7 @@
|
||||
|
||||
<!-- CompressedTexImage2D calls out to two different functions based on
|
||||
whether the image is a paletted image or not -->
|
||||
<function name="CompressedTexImage2D" external="true" template="CompressedTexImage2D"/>
|
||||
<function name="CompressedTexImage2D" template="CompressedTexImage2D"/>
|
||||
<function name="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/>
|
||||
|
||||
<function name="BlendFuncSeparateOES" template="BlendFuncSeparate"/>
|
||||
@@ -4217,7 +4217,7 @@
|
||||
|
||||
<function name="SampleCoverage" template="SampleCoverage" gltype="GLclampf"/>
|
||||
|
||||
<function name="CompressedTexImage2D" external="true" template="CompressedTexImage2D"/>
|
||||
<function name="CompressedTexImage2D" template="CompressedTexImage2D"/>
|
||||
<function name="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/>
|
||||
|
||||
<function name="BlendFuncSeparate" template="BlendFuncSeparate"/>
|
||||
|
@@ -94,6 +94,19 @@ typedef void *GLeglImageOES;
|
||||
#define GL_TEXTURE_GEN_STR_OES 0x8D60
|
||||
#endif
|
||||
|
||||
#ifndef GL_OES_compressed_paletted_texture
|
||||
#define GL_PALETTE4_RGB8_OES 0x8B90
|
||||
#define GL_PALETTE4_RGBA8_OES 0x8B91
|
||||
#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
|
||||
#define GL_PALETTE4_RGBA4_OES 0x8B93
|
||||
#define GL_PALETTE4_RGB5_A1_OES 0x8B94
|
||||
#define GL_PALETTE8_RGB8_OES 0x8B95
|
||||
#define GL_PALETTE8_RGBA8_OES 0x8B96
|
||||
#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
|
||||
#define GL_PALETTE8_RGBA4_OES 0x8B98
|
||||
#define GL_PALETTE8_RGB5_A1_OES 0x8B99
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Special, internal token
|
||||
*/
|
||||
|
@@ -46,6 +46,7 @@
|
||||
#include "texfetch.h"
|
||||
#include "teximage.h"
|
||||
#include "texstate.h"
|
||||
#include "texpal.h"
|
||||
#include "mtypes.h"
|
||||
|
||||
|
||||
@@ -3408,7 +3409,6 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_CompressedTexImage2DARB(GLenum target, GLint level,
|
||||
GLenum internalFormat, GLsizei width,
|
||||
@@ -3424,6 +3424,24 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
|
||||
_mesa_lookup_enum_by_nr(internalFormat),
|
||||
width, height, border, imageSize, data);
|
||||
|
||||
#if FEATURE_ES
|
||||
switch (internalFormat) {
|
||||
case GL_PALETTE4_RGB8_OES:
|
||||
case GL_PALETTE4_RGBA8_OES:
|
||||
case GL_PALETTE4_R5_G6_B5_OES:
|
||||
case GL_PALETTE4_RGBA4_OES:
|
||||
case GL_PALETTE4_RGB5_A1_OES:
|
||||
case GL_PALETTE8_RGB8_OES:
|
||||
case GL_PALETTE8_RGBA8_OES:
|
||||
case GL_PALETTE8_R5_G6_B5_OES:
|
||||
case GL_PALETTE8_RGBA4_OES:
|
||||
case GL_PALETTE8_RGB5_A1_OES:
|
||||
_mesa_cpal_compressed_teximage2d(target, level, internalFormat,
|
||||
width, height, imageSize, data);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (target == GL_TEXTURE_2D ||
|
||||
(ctx->Extensions.ARB_texture_cube_map &&
|
||||
target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB &&
|
||||
|
@@ -15,21 +15,16 @@
|
||||
*/
|
||||
|
||||
|
||||
#include "GLES/gl.h"
|
||||
#include "GLES/glext.h"
|
||||
#include "glheader.h"
|
||||
#include "compiler.h" /* for ASSERT */
|
||||
#include "context.h"
|
||||
#include "mtypes.h"
|
||||
#include "imports.h"
|
||||
#include "pixelstore.h"
|
||||
#include "teximage.h"
|
||||
#include "texpal.h"
|
||||
|
||||
#include "main/compiler.h" /* for ASSERT */
|
||||
|
||||
|
||||
void GL_APIENTRY _es_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
|
||||
|
||||
void GL_APIENTRY _mesa_GetIntegerv(GLenum pname, GLint *params);
|
||||
void GL_APIENTRY _mesa_PixelStorei(GLenum pname, GLint param);
|
||||
void GL_APIENTRY _mesa_TexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
|
||||
void GL_APIENTRY _mesa_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
|
||||
|
||||
void *_mesa_get_current_context(void);
|
||||
void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... );
|
||||
#if FEATURE_ES
|
||||
|
||||
|
||||
static const struct cpal_format_info {
|
||||
@@ -141,15 +136,17 @@ cpal_get_info(GLint level, GLenum internalFormat,
|
||||
* Convert a call to glCompressedTexImage2D() where internalFormat is a
|
||||
* compressed palette format into a regular GLubyte/RGBA glTexImage2D() call.
|
||||
*/
|
||||
static void
|
||||
cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat,
|
||||
GLsizei width, GLsizei height, GLsizei imageSize,
|
||||
const void *palette)
|
||||
void
|
||||
_mesa_cpal_compressed_teximage2d(GLenum target, GLint level,
|
||||
GLenum internalFormat,
|
||||
GLsizei width, GLsizei height,
|
||||
GLsizei imageSize, const void *palette)
|
||||
{
|
||||
const struct cpal_format_info *info;
|
||||
GLint lvl, num_levels;
|
||||
const GLubyte *indices;
|
||||
GLint saved_align, align;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
info = cpal_get_info(level, internalFormat, width, height, imageSize);
|
||||
if (!info)
|
||||
@@ -162,7 +159,7 @@ cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat,
|
||||
/* first image follows the palette */
|
||||
indices = (const GLubyte *) palette + info->palette_size * info->size;
|
||||
|
||||
_mesa_GetIntegerv(GL_UNPACK_ALIGNMENT, &saved_align);
|
||||
saved_align = ctx->Unpack.Alignment;
|
||||
align = saved_align;
|
||||
|
||||
for (lvl = 0; lvl < num_levels; lvl++) {
|
||||
@@ -204,28 +201,4 @@ cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat,
|
||||
_mesa_PixelStorei(GL_UNPACK_ALIGNMENT, saved_align);
|
||||
}
|
||||
|
||||
|
||||
void GL_APIENTRY
|
||||
_es_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat,
|
||||
GLsizei width, GLsizei height, GLint border,
|
||||
GLsizei imageSize, const GLvoid *data)
|
||||
{
|
||||
switch (internalFormat) {
|
||||
case GL_PALETTE4_RGB8_OES:
|
||||
case GL_PALETTE4_RGBA8_OES:
|
||||
case GL_PALETTE4_R5_G6_B5_OES:
|
||||
case GL_PALETTE4_RGBA4_OES:
|
||||
case GL_PALETTE4_RGB5_A1_OES:
|
||||
case GL_PALETTE8_RGB8_OES:
|
||||
case GL_PALETTE8_RGBA8_OES:
|
||||
case GL_PALETTE8_R5_G6_B5_OES:
|
||||
case GL_PALETTE8_RGBA4_OES:
|
||||
case GL_PALETTE8_RGB5_A1_OES:
|
||||
cpal_compressed_teximage2d(target, level, internalFormat,
|
||||
width, height, imageSize, data);
|
||||
break;
|
||||
default:
|
||||
_mesa_CompressedTexImage2DARB(target, level, internalFormat,
|
||||
width, height, border, imageSize, data);
|
||||
}
|
||||
}
|
||||
#endif
|
38
src/mesa/main/texpal.h
Normal file
38
src/mesa/main/texpal.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 7.8
|
||||
*
|
||||
* Copyright (C) 1999-2010 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
* 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.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef TEXPAL_H
|
||||
#define TEXPAL_H
|
||||
|
||||
|
||||
#include "main/glheader.h"
|
||||
extern void
|
||||
_mesa_cpal_compressed_teximage2d(GLenum target, GLint level,
|
||||
GLenum internalFormat,
|
||||
GLsizei width, GLsizei height,
|
||||
GLsizei imageSize, const void *palette);
|
||||
|
||||
|
||||
#endif /* TEXPAL_H */
|
@@ -80,6 +80,7 @@ MAIN_SOURCES = \
|
||||
main/texgetimage.c \
|
||||
main/teximage.c \
|
||||
main/texobj.c \
|
||||
main/texpal.c \
|
||||
main/texparam.c \
|
||||
main/texrender.c \
|
||||
main/texstate.c \
|
||||
|
Reference in New Issue
Block a user