intel: Rely on Mesa core for glTexImage storage.
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
@@ -403,62 +403,14 @@ intelTexImage(struct gl_context * ctx,
|
||||
return;
|
||||
}
|
||||
|
||||
pixels = _mesa_validate_pbo_teximage(ctx, dims, width, height, 1,
|
||||
format, type,
|
||||
pixels, unpack, "glTexImage");
|
||||
|
||||
if (intelImage->mt) {
|
||||
if (pixels != NULL) {
|
||||
/* Flush any queued rendering with the texture before mapping. */
|
||||
if (drm_intel_bo_references(intel->batch.bo,
|
||||
intelImage->mt->region->bo)) {
|
||||
intel_flush(ctx);
|
||||
}
|
||||
texImage->Data = intel_miptree_image_map(intel,
|
||||
intelImage->mt,
|
||||
intelImage->base.Base.Face,
|
||||
intelImage->base.Base.Level,
|
||||
&dstRowStride,
|
||||
intelImage->base.Base.ImageOffsets);
|
||||
}
|
||||
|
||||
texImage->RowStride = dstRowStride / intelImage->mt->cpp;
|
||||
}
|
||||
|
||||
DBG("Upload image %dx%dx%d row_len %d pitch %d pixels %d\n",
|
||||
width, height, depth, width * texelBytes, dstRowStride,
|
||||
pixels ? 1 : 0);
|
||||
|
||||
/* Copy data. Would like to know when it's ok for us to eg. use
|
||||
* the blitter to copy. Or, use the hardware to do the format
|
||||
* conversion and copy:
|
||||
*/
|
||||
if (pixels) {
|
||||
if (!_mesa_texstore(ctx, dims,
|
||||
texImage->_BaseFormat,
|
||||
texImage->TexFormat,
|
||||
texImage->Data, 0, 0, 0, /* dstX/Y/Zoffset */
|
||||
dstRowStride,
|
||||
texImage->ImageOffsets,
|
||||
width, height, depth,
|
||||
format, type, pixels, unpack)) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
|
||||
}
|
||||
}
|
||||
|
||||
_mesa_unmap_teximage_pbo(ctx, unpack);
|
||||
|
||||
if (intel->must_use_separate_stencil
|
||||
&& texImage->TexFormat == MESA_FORMAT_S8_Z24) {
|
||||
intel_tex_image_s8z24_create_renderbuffers(intel, intelImage);
|
||||
intel_tex_image_s8z24_scatter(intel, intelImage);
|
||||
}
|
||||
|
||||
if (intelImage->mt) {
|
||||
if (pixels != NULL)
|
||||
intel_miptree_image_unmap(intel, intelImage->mt);
|
||||
texImage->Data = NULL;
|
||||
}
|
||||
_mesa_store_teximage3d(ctx, target, level, internalFormat,
|
||||
width, height, depth, border,
|
||||
format, type, pixels,
|
||||
unpack, texObj, texImage);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user