mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 19:00:13 +01:00
radeonsi: Catch more cases that can't be handled by si_dma_copy_buffer/tile
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
d17b85524d
commit
74aeccd701
1 changed files with 11 additions and 3 deletions
|
|
@ -251,7 +251,9 @@ void si_dma_copy(struct pipe_context *ctx,
|
|||
}
|
||||
|
||||
if (src->format != dst->format || src_box->depth > 1 ||
|
||||
rdst->dirty_level_mask != 0) {
|
||||
rdst->dirty_level_mask != 0 ||
|
||||
rdst->cmask.size || rdst->fmask.size ||
|
||||
rsrc->cmask.size || rsrc->fmask.size) {
|
||||
goto fallback;
|
||||
}
|
||||
|
||||
|
|
@ -277,14 +279,20 @@ void si_dma_copy(struct pipe_context *ctx,
|
|||
src_mode = src_mode == RADEON_SURF_MODE_LINEAR_ALIGNED ? RADEON_SURF_MODE_LINEAR : src_mode;
|
||||
dst_mode = dst_mode == RADEON_SURF_MODE_LINEAR_ALIGNED ? RADEON_SURF_MODE_LINEAR : dst_mode;
|
||||
|
||||
if (src_pitch != dst_pitch || src_box->x || dst_x || src_w != dst_w) {
|
||||
if (src_pitch != dst_pitch || src_box->x || dst_x || src_w != dst_w ||
|
||||
src_box->width != src_w ||
|
||||
src_box->height != rsrc->surface.level[src_level].npix_y ||
|
||||
src_box->height != rdst->surface.level[dst_level].npix_y ||
|
||||
rsrc->surface.level[src_level].nblk_y !=
|
||||
rdst->surface.level[dst_level].nblk_y) {
|
||||
/* FIXME si can do partial blit */
|
||||
goto fallback;
|
||||
}
|
||||
/* the x test here are currently useless (because we don't support partial blit)
|
||||
* but keep them around so we don't forget about those
|
||||
*/
|
||||
if ((src_pitch % 8) || (src_box->x % 8) || (dst_x % 8) || (src_box->y % 8) || (dst_y % 8)) {
|
||||
if ((src_pitch % 8) || (src_box->x % 8) || (dst_x % 8) ||
|
||||
(src_box->y % 8) || (dst_y % 8) || (src_box->height % 8)) {
|
||||
goto fallback;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue