st/mesa: use _mesa_texstore()

This commit is contained in:
Brian Paul 2009-09-28 21:52:23 -06:00
parent 49263e0856
commit 6480210b89
2 changed files with 47 additions and 60 deletions

View file

@ -392,8 +392,6 @@ make_texture(struct st_context *st,
GLboolean success;
GLubyte *dest;
const GLbitfield imageTransferStateSave = ctx->_ImageTransferState;
const StoreTexImageFunc storeImage =
_mesa_get_texstore_func(mformat->MesaFormat);
/* we'll do pixel transfer in a fragment shader */
ctx->_ImageTransferState = 0x0;
@ -410,17 +408,17 @@ make_texture(struct st_context *st,
* Note that the image is actually going to be upside down in
* the texture. We deal with that with texcoords.
*/
success = storeImage(ctx, 2, /* dims */
baseFormat, /* baseInternalFormat */
mformat, /* gl_texture_format */
dest, /* dest */
0, 0, 0, /* dstX/Y/Zoffset */
transfer->stride, /* dstRowStride, bytes */
&dstImageOffsets, /* dstImageOffsets */
width, height, 1, /* size */
format, type, /* src format/type */
pixels, /* data source */
unpack);
success = _mesa_texstore(ctx, 2, /* dims */
baseFormat, /* baseInternalFormat */
mformat, /* gl_texture_format */
dest, /* dest */
0, 0, 0, /* dstX/Y/Zoffset */
transfer->stride, /* dstRowStride, bytes */
&dstImageOffsets, /* dstImageOffsets */
width, height, 1, /* size */
format, type, /* src format/type */
pixels, /* data source */
unpack);
/* unmap */
screen->transfer_unmap(screen, transfer);

View file

@ -417,7 +417,6 @@ compress_with_blit(GLcontext * ctx,
struct pipe_surface *dst_surface;
struct pipe_transfer *tex_xfer;
void *map;
StoreTexImageFunc storeImage;
if (!stImage->pt) {
/* XXX: Can this happen? Should we assert? */
@ -464,18 +463,15 @@ compress_with_blit(GLcontext * ctx,
0, 0, width, height); /* x, y, w, h */
map = screen->transfer_map(screen, tex_xfer);
storeImage = _mesa_get_texstore_func(mesa_format->MesaFormat);
storeImage(ctx, 2, GL_RGBA, mesa_format,
map, /* dest ptr */
0, 0, 0, /* dest x/y/z offset */
tex_xfer->stride, /* dest row stride (bytes) */
dstImageOffsets, /* image offsets (for 3D only) */
width, height, 1, /* size */
format, type, /* source format/type */
pixels, /* source data */
unpack); /* source data packing */
_mesa_texstore(ctx, 2, GL_RGBA, mesa_format,
map, /* dest ptr */
0, 0, 0, /* dest x/y/z offset */
tex_xfer->stride, /* dest row stride (bytes) */
dstImageOffsets, /* image offsets (for 3D only) */
width, height, 1, /* size */
format, type, /* source format/type */
pixels, /* source data */
unpack); /* source data packing */
screen->transfer_unmap(screen, tex_xfer);
screen->tex_transfer_destroy(tex_xfer);
@ -737,19 +733,17 @@ st_TexImage(GLcontext * ctx,
_mesa_image_image_stride(unpack, width, height, format, type);
GLint i;
const GLubyte *src = (const GLubyte *) pixels;
StoreTexImageFunc storeImage =
_mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
for (i = 0; i < depth; i++) {
if (!storeImage(ctx, dims,
texImage->_BaseFormat,
texImage->TexFormat,
texImage->Data,
0, 0, 0, /* dstX/Y/Zoffset */
dstRowStride,
texImage->ImageOffsets,
width, height, 1,
format, type, src, unpack)) {
if (!_mesa_texstore(ctx, dims,
texImage->_BaseFormat,
texImage->TexFormat,
texImage->Data,
0, 0, 0, /* dstX/Y/Zoffset */
dstRowStride,
texImage->ImageOffsets,
width, height, 1,
format, type, src, unpack)) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
}
@ -1056,9 +1050,6 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
const GLubyte *src;
/* init to silence warning only: */
enum pipe_transfer_usage transfer_usage = PIPE_TRANSFER_WRITE;
StoreTexImageFunc storeImage =
_mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
DBG("%s target %s level %d offset %d,%d %dx%d\n", __FUNCTION__,
_mesa_lookup_enum_by_nr(target),
@ -1115,14 +1106,14 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
dstRowStride = stImage->transfer->stride;
for (i = 0; i < depth; i++) {
if (!storeImage(ctx, dims, texImage->_BaseFormat,
texImage->TexFormat,
texImage->Data,
0, 0, 0,
dstRowStride,
texImage->ImageOffsets,
width, height, 1,
format, type, src, packing)) {
if (!_mesa_texstore(ctx, dims, texImage->_BaseFormat,
texImage->TexFormat,
texImage->Data,
0, 0, 0,
dstRowStride,
texImage->ImageOffsets,
width, height, 1,
format, type, src, packing)) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage");
}
@ -1361,8 +1352,6 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
const GLint dstRowStride = stImage->transfer->stride;
struct gl_texture_image *texImage = &stImage->base;
struct gl_pixelstore_attrib unpack = ctx->DefaultPacking;
StoreTexImageFunc storeImage =
_mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
unpack.Invert = GL_TRUE;
@ -1380,16 +1369,16 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
* is actually RGBA but the user created the texture as GL_RGB we
* need to fill-in/override the alpha channel with 1.0.
*/
storeImage(ctx, dims,
texImage->_BaseFormat,
texImage->TexFormat,
texDest,
0, 0, 0,
dstRowStride,
texImage->ImageOffsets,
width, height, 1,
GL_RGBA, GL_FLOAT, tempSrc, /* src */
&unpack);
_mesa_texstore(ctx, dims,
texImage->_BaseFormat,
texImage->TexFormat,
texDest,
0, 0, 0,
dstRowStride,
texImage->ImageOffsets,
width, height, 1,
GL_RGBA, GL_FLOAT, tempSrc, /* src */
&unpack);
}
else {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage");