mesa: Move compute_num_levels from st_gen_mipmap.c to mipmap.c.
I want to use compute_num_levels inside i965. Rather than duplicating it, move it from mesa/st to core Mesa, and make it non-static. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
03ab40b1f7
commit
9bcd31ea90
|
@ -42,6 +42,30 @@
|
|||
#include "util/format_r11g11b10f.h"
|
||||
|
||||
|
||||
/**
|
||||
* Compute the expected number of mipmap levels in the texture given
|
||||
* the width/height/depth of the base image and the GL_TEXTURE_BASE_LEVEL/
|
||||
* GL_TEXTURE_MAX_LEVEL settings. This will tell us how many mipmap
|
||||
* levels should be generated.
|
||||
*/
|
||||
unsigned
|
||||
_mesa_compute_num_levels(struct gl_context *ctx,
|
||||
struct gl_texture_object *texObj,
|
||||
GLenum target)
|
||||
{
|
||||
const struct gl_texture_image *baseImage;
|
||||
GLuint numLevels;
|
||||
|
||||
baseImage = _mesa_get_tex_image(ctx, texObj, target, texObj->BaseLevel);
|
||||
|
||||
numLevels = texObj->BaseLevel + baseImage->MaxNumLevels;
|
||||
numLevels = MIN2(numLevels, (GLuint) texObj->MaxLevel + 1);
|
||||
if (texObj->Immutable)
|
||||
numLevels = MIN2(numLevels, texObj->NumLevels);
|
||||
assert(numLevels >= 1);
|
||||
|
||||
return numLevels;
|
||||
}
|
||||
|
||||
static GLint
|
||||
bytes_per_pixel(GLenum datatype, GLuint comps)
|
||||
|
|
|
@ -28,6 +28,10 @@
|
|||
|
||||
#include "mtypes.h"
|
||||
|
||||
unsigned
|
||||
_mesa_compute_num_levels(struct gl_context *ctx,
|
||||
struct gl_texture_object *texObj,
|
||||
GLenum target);
|
||||
|
||||
extern void
|
||||
_mesa_generate_mipmap_level(GLenum target,
|
||||
|
|
|
@ -44,32 +44,6 @@
|
|||
#include "st_cb_texture.h"
|
||||
|
||||
|
||||
/**
|
||||
* Compute the expected number of mipmap levels in the texture given
|
||||
* the width/height/depth of the base image and the GL_TEXTURE_BASE_LEVEL/
|
||||
* GL_TEXTURE_MAX_LEVEL settings. This will tell us how many mipmap
|
||||
* levels should be generated.
|
||||
*/
|
||||
static GLuint
|
||||
compute_num_levels(struct gl_context *ctx,
|
||||
struct gl_texture_object *texObj,
|
||||
GLenum target)
|
||||
{
|
||||
const struct gl_texture_image *baseImage;
|
||||
GLuint numLevels;
|
||||
|
||||
baseImage = _mesa_get_tex_image(ctx, texObj, target, texObj->BaseLevel);
|
||||
|
||||
numLevels = texObj->BaseLevel + baseImage->MaxNumLevels;
|
||||
numLevels = MIN2(numLevels, (GLuint) texObj->MaxLevel + 1);
|
||||
if (texObj->Immutable)
|
||||
numLevels = MIN2(numLevels, texObj->NumLevels);
|
||||
assert(numLevels >= 1);
|
||||
|
||||
return numLevels;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called via ctx->Driver.GenerateMipmap().
|
||||
*/
|
||||
|
@ -92,7 +66,7 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
|
|||
assert(pt->nr_samples < 2);
|
||||
|
||||
/* find expected last mipmap level to generate*/
|
||||
lastLevel = compute_num_levels(ctx, texObj, target) - 1;
|
||||
lastLevel = _mesa_compute_num_levels(ctx, texObj, target) - 1;
|
||||
|
||||
if (lastLevel == 0)
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue