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 := \
|
LOCAL_ES1_SOURCES := \
|
||||||
main/drawtex.c \
|
main/drawtex.c \
|
||||||
main/es_cpaltex.c \
|
|
||||||
main/es_query_matrix.c \
|
main/es_query_matrix.c \
|
||||||
main/es_texgen.c \
|
main/es_texgen.c \
|
||||||
glapi/glapi-es1/main/enums.c
|
glapi/glapi-es1/main/enums.c
|
||||||
@@ -23,7 +22,6 @@ LOCAL_ES1_INCLUDES := \
|
|||||||
-I$(MESA)/state_tracker
|
-I$(MESA)/state_tracker
|
||||||
|
|
||||||
LOCAL_ES2_SOURCES := \
|
LOCAL_ES2_SOURCES := \
|
||||||
main/es_cpaltex.c \
|
|
||||||
glapi/glapi-es2/main/enums.c
|
glapi/glapi-es2/main/enums.c
|
||||||
|
|
||||||
LOCAL_ES2_GALLIUM_SOURCES := \
|
LOCAL_ES2_GALLIUM_SOURCES := \
|
||||||
|
@@ -4040,7 +4040,7 @@
|
|||||||
|
|
||||||
<!-- CompressedTexImage2D calls out to two different functions based on
|
<!-- CompressedTexImage2D calls out to two different functions based on
|
||||||
whether the image is a paletted image or not -->
|
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="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/>
|
||||||
|
|
||||||
<function name="BlendFuncSeparateOES" template="BlendFuncSeparate"/>
|
<function name="BlendFuncSeparateOES" template="BlendFuncSeparate"/>
|
||||||
@@ -4217,7 +4217,7 @@
|
|||||||
|
|
||||||
<function name="SampleCoverage" template="SampleCoverage" gltype="GLclampf"/>
|
<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="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/>
|
||||||
|
|
||||||
<function name="BlendFuncSeparate" template="BlendFuncSeparate"/>
|
<function name="BlendFuncSeparate" template="BlendFuncSeparate"/>
|
||||||
|
@@ -94,6 +94,19 @@ typedef void *GLeglImageOES;
|
|||||||
#define GL_TEXTURE_GEN_STR_OES 0x8D60
|
#define GL_TEXTURE_GEN_STR_OES 0x8D60
|
||||||
#endif
|
#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
|
* Special, internal token
|
||||||
*/
|
*/
|
||||||
|
@@ -46,6 +46,7 @@
|
|||||||
#include "texfetch.h"
|
#include "texfetch.h"
|
||||||
#include "teximage.h"
|
#include "teximage.h"
|
||||||
#include "texstate.h"
|
#include "texstate.h"
|
||||||
|
#include "texpal.h"
|
||||||
#include "mtypes.h"
|
#include "mtypes.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -3408,7 +3409,6 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GLAPIENTRY
|
void GLAPIENTRY
|
||||||
_mesa_CompressedTexImage2DARB(GLenum target, GLint level,
|
_mesa_CompressedTexImage2DARB(GLenum target, GLint level,
|
||||||
GLenum internalFormat, GLsizei width,
|
GLenum internalFormat, GLsizei width,
|
||||||
@@ -3424,6 +3424,24 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
|
|||||||
_mesa_lookup_enum_by_nr(internalFormat),
|
_mesa_lookup_enum_by_nr(internalFormat),
|
||||||
width, height, border, imageSize, data);
|
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 ||
|
if (target == GL_TEXTURE_2D ||
|
||||||
(ctx->Extensions.ARB_texture_cube_map &&
|
(ctx->Extensions.ARB_texture_cube_map &&
|
||||||
target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB &&
|
target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB &&
|
||||||
|
@@ -15,21 +15,16 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "GLES/gl.h"
|
#include "glheader.h"
|
||||||
#include "GLES/glext.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 */
|
#if FEATURE_ES
|
||||||
|
|
||||||
|
|
||||||
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, ... );
|
|
||||||
|
|
||||||
|
|
||||||
static const struct cpal_format_info {
|
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
|
* Convert a call to glCompressedTexImage2D() where internalFormat is a
|
||||||
* compressed palette format into a regular GLubyte/RGBA glTexImage2D() call.
|
* compressed palette format into a regular GLubyte/RGBA glTexImage2D() call.
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat,
|
_mesa_cpal_compressed_teximage2d(GLenum target, GLint level,
|
||||||
GLsizei width, GLsizei height, GLsizei imageSize,
|
GLenum internalFormat,
|
||||||
const void *palette)
|
GLsizei width, GLsizei height,
|
||||||
|
GLsizei imageSize, const void *palette)
|
||||||
{
|
{
|
||||||
const struct cpal_format_info *info;
|
const struct cpal_format_info *info;
|
||||||
GLint lvl, num_levels;
|
GLint lvl, num_levels;
|
||||||
const GLubyte *indices;
|
const GLubyte *indices;
|
||||||
GLint saved_align, align;
|
GLint saved_align, align;
|
||||||
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
|
|
||||||
info = cpal_get_info(level, internalFormat, width, height, imageSize);
|
info = cpal_get_info(level, internalFormat, width, height, imageSize);
|
||||||
if (!info)
|
if (!info)
|
||||||
@@ -162,7 +159,7 @@ cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat,
|
|||||||
/* first image follows the palette */
|
/* first image follows the palette */
|
||||||
indices = (const GLubyte *) palette + info->palette_size * info->size;
|
indices = (const GLubyte *) palette + info->palette_size * info->size;
|
||||||
|
|
||||||
_mesa_GetIntegerv(GL_UNPACK_ALIGNMENT, &saved_align);
|
saved_align = ctx->Unpack.Alignment;
|
||||||
align = saved_align;
|
align = saved_align;
|
||||||
|
|
||||||
for (lvl = 0; lvl < num_levels; lvl++) {
|
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);
|
_mesa_PixelStorei(GL_UNPACK_ALIGNMENT, saved_align);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
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/texgetimage.c \
|
||||||
main/teximage.c \
|
main/teximage.c \
|
||||||
main/texobj.c \
|
main/texobj.c \
|
||||||
|
main/texpal.c \
|
||||||
main/texparam.c \
|
main/texparam.c \
|
||||||
main/texrender.c \
|
main/texrender.c \
|
||||||
main/texstate.c \
|
main/texstate.c \
|
||||||
|
Reference in New Issue
Block a user