ilo: add pipe-based copy method to ilo_blitter
It enables accelerated resource_copy_region() when blt-based method fails.
This commit is contained in:
parent
ebfd7a61c0
commit
98bc4c62a6
|
@ -26,13 +26,9 @@
|
|||
*/
|
||||
|
||||
#include "util/u_surface.h"
|
||||
#include "intel_reg.h"
|
||||
|
||||
#include "ilo_blitter.h"
|
||||
#include "ilo_context.h"
|
||||
#include "ilo_cp.h"
|
||||
#include "ilo_resource.h"
|
||||
#include "ilo_screen.h"
|
||||
#include "ilo_blit.h"
|
||||
|
||||
static void
|
||||
|
@ -51,6 +47,11 @@ ilo_resource_copy_region(struct pipe_context *pipe,
|
|||
src, src_level, src_box))
|
||||
return;
|
||||
|
||||
if (ilo_blitter_pipe_copy_resource(ilo->blitter,
|
||||
dst, dst_level, dstx, dsty, dstz,
|
||||
src, src_level, src_box))
|
||||
return;
|
||||
|
||||
util_resource_copy_region(&ilo->base, dst, dst_level,
|
||||
dstx, dsty, dstz, src, src_level, src_box);
|
||||
}
|
||||
|
|
|
@ -139,7 +139,26 @@ ilo_blitter_pipe_copy_resource(struct ilo_blitter *blitter,
|
|||
struct pipe_resource *src, unsigned src_level,
|
||||
const struct pipe_box *src_box)
|
||||
{
|
||||
return false;
|
||||
const unsigned mask = PIPE_MASK_RGBAZS;
|
||||
const bool copy_all_samples = true;
|
||||
|
||||
/* not until we allow rendertargets to be buffers */
|
||||
if (dst->target == PIPE_BUFFER || src->target == PIPE_BUFFER)
|
||||
return false;
|
||||
|
||||
if (!util_blitter_is_copy_supported(blitter->pipe_blitter, dst, src, mask))
|
||||
return false;
|
||||
|
||||
ilo_blitter_pipe_begin(blitter, ILO_BLITTER_PIPE_COPY);
|
||||
|
||||
util_blitter_copy_texture(blitter->pipe_blitter,
|
||||
dst, dst_level, dst_x, dst_y, dst_z,
|
||||
src, src_level, src_box,
|
||||
mask, copy_all_samples);
|
||||
|
||||
ilo_blitter_pipe_end(blitter);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
Loading…
Reference in New Issue