mesa: move _mesa_base_format_has_channel() into image.c
This is where other format-related functions live. Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
@@ -39,6 +39,7 @@
|
|||||||
#include "formats.h"
|
#include "formats.h"
|
||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
|
#include "image.h"
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "mfeatures.h"
|
#include "mfeatures.h"
|
||||||
#include "mtypes.h"
|
#include "mtypes.h"
|
||||||
@@ -46,7 +47,6 @@
|
|||||||
#include "state.h"
|
#include "state.h"
|
||||||
#include "teximage.h"
|
#include "teximage.h"
|
||||||
#include "texobj.h"
|
#include "texobj.h"
|
||||||
#include "texparam.h"
|
|
||||||
|
|
||||||
|
|
||||||
/** Set this to 1 to help debug FBO incompleteness problems */
|
/** Set this to 1 to help debug FBO incompleteness problems */
|
||||||
|
@@ -1070,6 +1070,93 @@ _mesa_is_compressed_format(struct gl_context *ctx, GLenum format)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the given base texture/renderbuffer format have the channel
|
||||||
|
* named by 'pname'?
|
||||||
|
*/
|
||||||
|
GLboolean
|
||||||
|
_mesa_base_format_has_channel(GLenum base_format, GLenum pname)
|
||||||
|
{
|
||||||
|
switch (pname) {
|
||||||
|
case GL_TEXTURE_RED_SIZE:
|
||||||
|
case GL_TEXTURE_RED_TYPE:
|
||||||
|
case GL_RENDERBUFFER_RED_SIZE_EXT:
|
||||||
|
case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:
|
||||||
|
if (base_format == GL_RED ||
|
||||||
|
base_format == GL_RG ||
|
||||||
|
base_format == GL_RGB ||
|
||||||
|
base_format == GL_RGBA) {
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
return GL_FALSE;
|
||||||
|
case GL_TEXTURE_GREEN_SIZE:
|
||||||
|
case GL_TEXTURE_GREEN_TYPE:
|
||||||
|
case GL_RENDERBUFFER_GREEN_SIZE_EXT:
|
||||||
|
case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
|
||||||
|
if (base_format == GL_RG ||
|
||||||
|
base_format == GL_RGB ||
|
||||||
|
base_format == GL_RGBA) {
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
return GL_FALSE;
|
||||||
|
case GL_TEXTURE_BLUE_SIZE:
|
||||||
|
case GL_TEXTURE_BLUE_TYPE:
|
||||||
|
case GL_RENDERBUFFER_BLUE_SIZE_EXT:
|
||||||
|
case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
|
||||||
|
if (base_format == GL_RGB ||
|
||||||
|
base_format == GL_RGBA) {
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
return GL_FALSE;
|
||||||
|
case GL_TEXTURE_ALPHA_SIZE:
|
||||||
|
case GL_TEXTURE_ALPHA_TYPE:
|
||||||
|
case GL_RENDERBUFFER_ALPHA_SIZE_EXT:
|
||||||
|
case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
|
||||||
|
if (base_format == GL_RGBA ||
|
||||||
|
base_format == GL_ALPHA ||
|
||||||
|
base_format == GL_LUMINANCE_ALPHA) {
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
return GL_FALSE;
|
||||||
|
case GL_TEXTURE_LUMINANCE_SIZE:
|
||||||
|
case GL_TEXTURE_LUMINANCE_TYPE:
|
||||||
|
if (base_format == GL_LUMINANCE ||
|
||||||
|
base_format == GL_LUMINANCE_ALPHA) {
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
return GL_FALSE;
|
||||||
|
case GL_TEXTURE_INTENSITY_SIZE:
|
||||||
|
case GL_TEXTURE_INTENSITY_TYPE:
|
||||||
|
if (base_format == GL_INTENSITY) {
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
return GL_FALSE;
|
||||||
|
case GL_TEXTURE_DEPTH_SIZE:
|
||||||
|
case GL_TEXTURE_DEPTH_TYPE:
|
||||||
|
case GL_RENDERBUFFER_DEPTH_SIZE_EXT:
|
||||||
|
case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
|
||||||
|
if (base_format == GL_DEPTH_STENCIL ||
|
||||||
|
base_format == GL_DEPTH_COMPONENT) {
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
return GL_FALSE;
|
||||||
|
case GL_RENDERBUFFER_STENCIL_SIZE_EXT:
|
||||||
|
case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
|
||||||
|
if (base_format == GL_DEPTH_STENCIL ||
|
||||||
|
base_format == GL_STENCIL_INDEX) {
|
||||||
|
return GL_TRUE;
|
||||||
|
}
|
||||||
|
return GL_FALSE;
|
||||||
|
default:
|
||||||
|
_mesa_warning(NULL, "%s: Unexpected channel token 0x%x\n",
|
||||||
|
__FUNCTION__, pname);
|
||||||
|
return GL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the address of a specific pixel in an image (1D, 2D or 3D).
|
* Return the address of a specific pixel in an image (1D, 2D or 3D).
|
||||||
*
|
*
|
||||||
|
@@ -84,6 +84,9 @@ _mesa_is_integer_format(GLenum format);
|
|||||||
extern GLboolean
|
extern GLboolean
|
||||||
_mesa_is_compressed_format(struct gl_context *ctx, GLenum format);
|
_mesa_is_compressed_format(struct gl_context *ctx, GLenum format);
|
||||||
|
|
||||||
|
extern GLboolean
|
||||||
|
_mesa_base_format_has_channel(GLenum base_format, GLenum pname);
|
||||||
|
|
||||||
extern GLvoid *
|
extern GLvoid *
|
||||||
_mesa_image_address( GLuint dimensions,
|
_mesa_image_address( GLuint dimensions,
|
||||||
const struct gl_pixelstore_attrib *packing,
|
const struct gl_pixelstore_attrib *packing,
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
#include "main/context.h"
|
#include "main/context.h"
|
||||||
#include "main/enums.h"
|
#include "main/enums.h"
|
||||||
#include "main/formats.h"
|
#include "main/formats.h"
|
||||||
|
#include "main/image.h"
|
||||||
#include "main/macros.h"
|
#include "main/macros.h"
|
||||||
#include "main/mfeatures.h"
|
#include "main/mfeatures.h"
|
||||||
#include "main/mtypes.h"
|
#include "main/mtypes.h"
|
||||||
@@ -884,89 +885,6 @@ _mesa_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GLboolean
|
|
||||||
_mesa_base_format_has_channel(GLenum base_format, GLenum pname)
|
|
||||||
{
|
|
||||||
switch (pname) {
|
|
||||||
case GL_TEXTURE_RED_SIZE:
|
|
||||||
case GL_TEXTURE_RED_TYPE:
|
|
||||||
case GL_RENDERBUFFER_RED_SIZE_EXT:
|
|
||||||
case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:
|
|
||||||
if (base_format == GL_RED ||
|
|
||||||
base_format == GL_RG ||
|
|
||||||
base_format == GL_RGB ||
|
|
||||||
base_format == GL_RGBA) {
|
|
||||||
return GL_TRUE;
|
|
||||||
}
|
|
||||||
return GL_FALSE;
|
|
||||||
case GL_TEXTURE_GREEN_SIZE:
|
|
||||||
case GL_TEXTURE_GREEN_TYPE:
|
|
||||||
case GL_RENDERBUFFER_GREEN_SIZE_EXT:
|
|
||||||
case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
|
|
||||||
if (base_format == GL_RG ||
|
|
||||||
base_format == GL_RGB ||
|
|
||||||
base_format == GL_RGBA) {
|
|
||||||
return GL_TRUE;
|
|
||||||
}
|
|
||||||
return GL_FALSE;
|
|
||||||
case GL_TEXTURE_BLUE_SIZE:
|
|
||||||
case GL_TEXTURE_BLUE_TYPE:
|
|
||||||
case GL_RENDERBUFFER_BLUE_SIZE_EXT:
|
|
||||||
case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
|
|
||||||
if (base_format == GL_RGB ||
|
|
||||||
base_format == GL_RGBA) {
|
|
||||||
return GL_TRUE;
|
|
||||||
}
|
|
||||||
return GL_FALSE;
|
|
||||||
case GL_TEXTURE_ALPHA_SIZE:
|
|
||||||
case GL_TEXTURE_ALPHA_TYPE:
|
|
||||||
case GL_RENDERBUFFER_ALPHA_SIZE_EXT:
|
|
||||||
case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
|
|
||||||
if (base_format == GL_RGBA ||
|
|
||||||
base_format == GL_ALPHA ||
|
|
||||||
base_format == GL_LUMINANCE_ALPHA) {
|
|
||||||
return GL_TRUE;
|
|
||||||
}
|
|
||||||
return GL_FALSE;
|
|
||||||
case GL_TEXTURE_LUMINANCE_SIZE:
|
|
||||||
case GL_TEXTURE_LUMINANCE_TYPE:
|
|
||||||
if (base_format == GL_LUMINANCE ||
|
|
||||||
base_format == GL_LUMINANCE_ALPHA) {
|
|
||||||
return GL_TRUE;
|
|
||||||
}
|
|
||||||
return GL_FALSE;
|
|
||||||
case GL_TEXTURE_INTENSITY_SIZE:
|
|
||||||
case GL_TEXTURE_INTENSITY_TYPE:
|
|
||||||
if (base_format == GL_INTENSITY) {
|
|
||||||
return GL_TRUE;
|
|
||||||
}
|
|
||||||
return GL_FALSE;
|
|
||||||
case GL_TEXTURE_DEPTH_SIZE:
|
|
||||||
case GL_TEXTURE_DEPTH_TYPE:
|
|
||||||
case GL_RENDERBUFFER_DEPTH_SIZE_EXT:
|
|
||||||
case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
|
|
||||||
if (base_format == GL_DEPTH_STENCIL ||
|
|
||||||
base_format == GL_DEPTH_COMPONENT) {
|
|
||||||
return GL_TRUE;
|
|
||||||
}
|
|
||||||
return GL_FALSE;
|
|
||||||
case GL_RENDERBUFFER_STENCIL_SIZE_EXT:
|
|
||||||
case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
|
|
||||||
if (base_format == GL_DEPTH_STENCIL ||
|
|
||||||
base_format == GL_STENCIL_INDEX) {
|
|
||||||
return GL_TRUE;
|
|
||||||
}
|
|
||||||
return GL_FALSE;
|
|
||||||
default:
|
|
||||||
_mesa_warning(NULL, "%s: Unexpected channel token 0x%x\n",
|
|
||||||
__FUNCTION__, pname);
|
|
||||||
return GL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return GL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void GLAPIENTRY
|
void GLAPIENTRY
|
||||||
_mesa_GetTexLevelParameterfv( GLenum target, GLint level,
|
_mesa_GetTexLevelParameterfv( GLenum target, GLint level,
|
||||||
GLenum pname, GLfloat *params )
|
GLenum pname, GLfloat *params )
|
||||||
|
@@ -30,9 +30,6 @@
|
|||||||
#include "main/glheader.h"
|
#include "main/glheader.h"
|
||||||
|
|
||||||
|
|
||||||
extern GLboolean
|
|
||||||
_mesa_base_format_has_channel(GLenum base_format, GLenum pname);
|
|
||||||
|
|
||||||
extern void GLAPIENTRY
|
extern void GLAPIENTRY
|
||||||
_mesa_GetTexLevelParameterfv( GLenum target, GLint level,
|
_mesa_GetTexLevelParameterfv( GLenum target, GLint level,
|
||||||
GLenum pname, GLfloat *params );
|
GLenum pname, GLfloat *params );
|
||||||
|
Reference in New Issue
Block a user