mesa: new _mesa_num_tex_faces() helper

Not a real big help now, but will be useful for the
GL_ARB_texture_cube_map_array extension in the future.
This commit is contained in:
Brian Paul 2012-08-21 20:22:27 -06:00
parent 8a935d71ff
commit 46751edca9
10 changed files with 31 additions and 16 deletions

View File

@ -120,7 +120,7 @@ intel_alloc_texture_storage(struct gl_context *ctx,
GLsizei levels, GLsizei width,
GLsizei height, GLsizei depth)
{
const int numFaces = (texObj->Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
const int numFaces = _mesa_num_tex_faces(texObj->Target);
int face;
int level;

View File

@ -1,6 +1,7 @@
#include "main/mtypes.h"
#include "main/macros.h"
#include "main/samplerobj.h"
#include "main/texobj.h"
#include "intel_context.h"
#include "intel_mipmap_tree.h"
@ -95,7 +96,7 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
/* Pull in any images not in the object's tree:
*/
nr_faces = (intelObj->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
nr_faces = _mesa_num_tex_faces(intelObj->base.Target);
for (face = 0; face < nr_faces; face++) {
for (i = tObj->BaseLevel; i <= intelObj->_MaxLevel; i++) {
struct intel_texture_image *intelImage =
@ -181,7 +182,7 @@ intel_tex_map_images(struct intel_context *intel,
struct intel_texture_object *intelObj,
GLbitfield mode)
{
GLuint nr_faces = (intelObj->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
GLuint nr_faces = _mesa_num_tex_faces(intelObj->base.Target);
int i, face;
DBG("%s\n", __FUNCTION__);
@ -200,7 +201,7 @@ void
intel_tex_unmap_images(struct intel_context *intel,
struct intel_texture_object *intelObj)
{
GLuint nr_faces = (intelObj->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
GLuint nr_faces = _mesa_num_tex_faces(intelObj->base.Target);
int i, face;
for (i = intelObj->base.BaseLevel; i <= intelObj->_MaxLevel; i++) {

View File

@ -198,7 +198,7 @@ radeon_mipmap_tree* radeon_miptree_create(radeonContextPtr rmesa,
mt->mesaFormat = mesaFormat;
mt->refcount = 1;
mt->target = target;
mt->faces = (target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
mt->faces = _mesa_num_tex_faces(target);
mt->baseLevel = baseLevel;
mt->numLevels = numLevels;
mt->width0 = width0;
@ -569,7 +569,7 @@ int radeon_validate_texture_miptree(struct gl_context * ctx,
"%s: Using miptree %p\n", __FUNCTION__, t->mt);
}
const unsigned faces = texObj->Target == GL_TEXTURE_CUBE_MAP ? 6 : 1;
const unsigned faces = _mesa_num_tex_faces(texObj->Target);
unsigned face, level;
radeon_texture_image *img;
/* Validate only the levels that will actually be used during rendering */

View File

@ -750,7 +750,7 @@ radeon_swrast_map_texture_images(struct gl_context *ctx,
struct gl_texture_object *texObj)
{
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
GLuint nr_faces = (texObj->Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
GLuint nr_faces = _mesa_num_tex_faces(texObj->Target);
int i, face;
for (i = texObj->BaseLevel; i <= texObj->_MaxLevel; i++) {
@ -766,7 +766,7 @@ radeon_swrast_unmap_texture_images(struct gl_context *ctx,
struct gl_texture_object *texObj)
{
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
GLuint nr_faces = (texObj->Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
GLuint nr_faces = _mesa_num_tex_faces(texObj->Target);
int i, face;
for (i = texObj->BaseLevel; i <= texObj->_MaxLevel; i++) {

View File

@ -33,6 +33,7 @@
#include "mipmap.h"
#include "mtypes.h"
#include "teximage.h"
#include "texobj.h"
#include "texstore.h"
#include "image.h"
#include "macros.h"
@ -1817,7 +1818,7 @@ _mesa_prepare_mipmap_level(struct gl_context *ctx,
GLsizei width, GLsizei height, GLsizei depth,
GLsizei border, GLenum intFormat, gl_format format)
{
const GLuint numFaces = texObj->Target == GL_TEXTURE_CUBE_MAP ? 6 : 1;
const GLuint numFaces = _mesa_num_tex_faces(texObj->Target);
GLuint face;
if (texObj->Immutable) {

View File

@ -577,7 +577,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
GLint i;
const GLint minLevel = baseLevel;
const GLint maxLevel = t->_MaxLevel;
const GLuint numFaces = t->Target == GL_TEXTURE_CUBE_MAP ? 6 : 1;
const GLuint numFaces = _mesa_num_tex_faces(t->Target);
GLuint width, height, depth, face;
if (minLevel > maxLevel) {
@ -826,7 +826,7 @@ _mesa_get_fallback_texture(struct gl_context *ctx, gl_texture_index tex)
static GLuint
texture_size(const struct gl_texture_object *texObj)
{
const GLuint numFaces = texObj->Target == GL_TEXTURE_CUBE_MAP ? 6 : 1;
const GLuint numFaces = _mesa_num_tex_faces(texObj->Target);
GLuint face, level, size = 0;
for (face = 0; face < numFaces; face++) {

View File

@ -78,6 +78,17 @@ _mesa_reference_texobj(struct gl_texture_object **ptr,
}
/**
* Return number of faces for a texture target. This will be 6 for
* cube maps (and cube map arrays) and 1 otherwise.
*/
static inline GLuint
_mesa_num_tex_faces(GLenum target)
{
return target == GL_TEXTURE_CUBE_MAP ? 6 : 1;
}
/** Is the texture "complete" with respect to the given sampler state? */
static inline GLboolean
_mesa_is_texture_complete(const struct gl_texture_object *texObj,

View File

@ -36,6 +36,7 @@
#include "macros.h"
#include "mfeatures.h"
#include "teximage.h"
#include "texobj.h"
#include "texstorage.h"
#include "mtypes.h"
@ -128,7 +129,7 @@ setup_texstorage(struct gl_context *ctx,
GLsizei width, GLsizei height, GLsizei depth)
{
const GLenum target = texObj->Target;
const GLuint numFaces = (target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
const GLuint numFaces = _mesa_num_tex_faces(target);
gl_format texFormat;
GLint level, levelWidth = width, levelHeight = height, levelDepth = depth;
GLuint face;
@ -206,7 +207,7 @@ clear_image_fields(struct gl_context *ctx,
struct gl_texture_object *texObj)
{
const GLenum target = texObj->Target;
const GLuint numFaces = (target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
const GLuint numFaces = _mesa_num_tex_faces(target);
GLint level;
GLuint face;

View File

@ -1299,7 +1299,7 @@ st_AllocTextureStorage(struct gl_context *ctx,
GLsizei levels, GLsizei width,
GLsizei height, GLsizei depth)
{
const GLuint numFaces = (texObj->Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
const GLuint numFaces = _mesa_num_tex_faces(texObj->Target);
struct st_context *st = st_context(ctx);
struct st_texture_object *stObj = st_texture_object(texObj);
GLuint ptWidth, ptHeight, ptDepth, ptLayers, bindings;

View File

@ -29,6 +29,7 @@
#include "main/context.h"
#include "main/fbobject.h"
#include "main/teximage.h"
#include "main/texobj.h"
#include "swrast/swrast.h"
#include "swrast/s_context.h"
@ -246,7 +247,7 @@ _swrast_unmap_teximage(struct gl_context *ctx,
void
_swrast_map_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
{
const GLuint faces = texObj->Target == GL_TEXTURE_CUBE_MAP ? 6 : 1;
const GLuint faces = _mesa_num_tex_faces(texObj->Target);
GLuint face, level;
for (face = 0; face < faces; face++) {
@ -267,7 +268,7 @@ _swrast_map_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
void
_swrast_unmap_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
{
const GLuint faces = texObj->Target == GL_TEXTURE_CUBE_MAP ? 6 : 1;
const GLuint faces = _mesa_num_tex_faces(texObj->Target);
GLuint face, level;
for (face = 0; face < faces; face++) {