mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
st/mesa: refactor gl_TexImage() code into prep_teximage()
Preparation for st_TexImage() removal/refactoring. Signed-off-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
18f53efa01
commit
19840c46f3
1 changed files with 38 additions and 17 deletions
|
|
@ -495,6 +495,42 @@ st_AllocTextureImageBuffer(struct gl_context *ctx,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Preparation prior to glTexImage. Basically check the 'surface_based'
|
||||
* field and switch to a "normal" tex image if necessary.
|
||||
*/
|
||||
static void
|
||||
prep_teximage(struct gl_context *ctx, struct gl_texture_image *texImage,
|
||||
GLint internalFormat,
|
||||
GLint width, GLint height, GLint depth, GLint border,
|
||||
GLenum format, GLenum type)
|
||||
{
|
||||
struct gl_texture_object *texObj = texImage->TexObject;
|
||||
struct st_texture_object *stObj = st_texture_object(texObj);
|
||||
|
||||
/* switch to "normal" */
|
||||
if (stObj->surface_based) {
|
||||
const GLenum target = texObj->Target;
|
||||
const GLuint level = texImage->Level;
|
||||
gl_format texFormat;
|
||||
|
||||
_mesa_clear_texture_object(ctx, texObj);
|
||||
pipe_resource_reference(&stObj->pt, NULL);
|
||||
|
||||
/* oops, need to init this image again */
|
||||
texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
|
||||
internalFormat, format, type);
|
||||
|
||||
_mesa_init_teximage_fields(ctx, texImage,
|
||||
width, height, depth, border,
|
||||
internalFormat, texFormat);
|
||||
|
||||
stObj->surface_based = GL_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Do glTexImage1/2/3D().
|
||||
*/
|
||||
|
|
@ -522,23 +558,8 @@ st_TexImage(struct gl_context * ctx,
|
|||
DBG("%s target %s level %d %dx%dx%d border %d\n", __FUNCTION__,
|
||||
_mesa_lookup_enum_by_nr(target), level, width, height, depth, border);
|
||||
|
||||
/* switch to "normal" */
|
||||
if (stObj->surface_based) {
|
||||
gl_format texFormat;
|
||||
|
||||
_mesa_clear_texture_object(ctx, texObj);
|
||||
pipe_resource_reference(&stObj->pt, NULL);
|
||||
|
||||
/* oops, need to init this image again */
|
||||
texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
|
||||
internalFormat, format, type);
|
||||
|
||||
_mesa_init_teximage_fields(ctx, texImage,
|
||||
width, height, depth, border,
|
||||
internalFormat, texFormat);
|
||||
|
||||
stObj->surface_based = GL_FALSE;
|
||||
}
|
||||
prep_teximage(ctx, texImage, internalFormat, width, height, depth, border,
|
||||
format, type);
|
||||
|
||||
assert(texImage->Width == width);
|
||||
assert(texImage->Height == height);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue