mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
intel: Allow blorp CopyTexSubImage to nonzero destination slices.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
parent
746b57ef0e
commit
eb20215075
3 changed files with 9 additions and 14 deletions
|
|
@ -330,6 +330,7 @@ bool
|
|||
brw_blorp_copytexsubimage(struct intel_context *intel,
|
||||
struct gl_renderbuffer *src_rb,
|
||||
struct gl_texture_image *dst_image,
|
||||
int slice,
|
||||
int srcX0, int srcY0,
|
||||
int dstX0, int dstY0,
|
||||
int width, int height)
|
||||
|
|
@ -354,12 +355,6 @@ brw_blorp_copytexsubimage(struct intel_context *intel,
|
|||
return false;
|
||||
}
|
||||
|
||||
/* We can't use blorp to copy to a 1D array texture, since it can only
|
||||
* write to one layer of the texture at a time.
|
||||
*/
|
||||
if (dst_mt->target == GL_TEXTURE_1D_ARRAY)
|
||||
return false;
|
||||
|
||||
/* Source clipping shouldn't be necessary, since copytexsubimage (in
|
||||
* src/mesa/main/teximage.c) calls _mesa_clip_copytexsubimage() which
|
||||
* takes care of it.
|
||||
|
|
@ -388,7 +383,7 @@ brw_blorp_copytexsubimage(struct intel_context *intel,
|
|||
|
||||
brw_blorp_blit_miptrees(intel,
|
||||
src_mt, src_irb->mt_level, src_irb->mt_layer,
|
||||
dst_mt, dst_image->Level, dst_image->Face,
|
||||
dst_mt, dst_image->Level, dst_image->Face + slice,
|
||||
srcX0, srcY0, srcX1, srcY1,
|
||||
dstX0, dstY0, dstX1, dstY1,
|
||||
false, mirror_y);
|
||||
|
|
@ -411,7 +406,8 @@ brw_blorp_copytexsubimage(struct intel_context *intel,
|
|||
if (src_mt != dst_mt) {
|
||||
brw_blorp_blit_miptrees(intel,
|
||||
src_mt, src_irb->mt_level, src_irb->mt_layer,
|
||||
dst_mt, dst_image->Level, dst_image->Face,
|
||||
dst_mt, dst_image->Level,
|
||||
dst_image->Face + slice,
|
||||
srcX0, srcY0, srcX1, srcY1,
|
||||
dstX0, dstY0, dstX1, dstY1,
|
||||
false, mirror_y);
|
||||
|
|
|
|||
|
|
@ -1238,6 +1238,7 @@ bool
|
|||
brw_blorp_copytexsubimage(struct intel_context *intel,
|
||||
struct gl_renderbuffer *src_rb,
|
||||
struct gl_texture_image *dst_image,
|
||||
int slice,
|
||||
int srcX0, int srcY0,
|
||||
int dstX0, int dstY0,
|
||||
int width, int height);
|
||||
|
|
|
|||
|
|
@ -102,14 +102,12 @@ intelCopyTexSubImage(struct gl_context *ctx, GLuint dims,
|
|||
{
|
||||
struct intel_context *intel = intel_context(ctx);
|
||||
|
||||
if (slice == 0) {
|
||||
#ifndef I915
|
||||
/* Try BLORP first. It can handle almost everything. */
|
||||
if (brw_blorp_copytexsubimage(intel, rb, texImage, x, y,
|
||||
xoffset, yoffset, width, height))
|
||||
return;
|
||||
/* Try BLORP first. It can handle almost everything. */
|
||||
if (brw_blorp_copytexsubimage(intel, rb, texImage, slice, x, y,
|
||||
xoffset, yoffset, width, height))
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Next, try the BLT engine. */
|
||||
if (intel_copy_texsubimage(intel,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue