[Mesa-dev] [PATCH] i965: Don't use fast copy blit in case of logical operations other than GL_COPY
Matt Turner
mattst88 at gmail.com
Wed May 25 19:59:23 UTC 2016
On Wed, May 25, 2016 at 11:40 AM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
> XY_FAST_COPY_BLT command doesn't have a field for raster operation. So, fall
> back to using XY_SRC_COPY_BLT to handle those cases.
>
> Fixes piglit test gl-1.1-xor-copypixels when fast copy blit is enabled
> for all tiling formats.
>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> ---
> src/mesa/drivers/dri/i965/intel_blit.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_blit.c b/src/mesa/drivers/dri/i965/intel_blit.c
> index 42cdb36..91c24ea 100644
> --- a/src/mesa/drivers/dri/i965/intel_blit.c
> +++ b/src/mesa/drivers/dri/i965/intel_blit.c
> @@ -340,7 +340,8 @@ can_fast_copy_blit(struct brw_context *brw,
> int16_t dst_x, int16_t dst_y,
> uintptr_t dst_offset, uint32_t dst_pitch,
> uint32_t dst_tiling, uint32_t dst_tr_mode,
> - int16_t w, int16_t h, uint32_t cpp)
> + int16_t w, int16_t h, uint32_t cpp,
> + GLenum logic_op)
> {
> const bool dst_tiling_none = dst_tiling == I915_TILING_NONE;
> const bool src_tiling_none = src_tiling == I915_TILING_NONE;
> @@ -348,6 +349,9 @@ can_fast_copy_blit(struct brw_context *brw,
> if (brw->gen < 9)
> return false;
>
> + if (logic_op != GL_COPY)
> + return false;
> +
> /* The start pixel for Fast Copy blit should be on an OWord boundary. */
> if ((dst_x * cpp | src_x * cpp) & 15)
> return false;
> @@ -490,13 +494,14 @@ intelEmitCopyBlit(struct brw_context *brw,
> dst_x, dst_y,
> dst_offset, dst_pitch,
> dst_tiling, dst_tr_mode,
> - w, h, cpp);
> + w, h, cpp, logic_op);
> if (!use_fast_copy_blit &&
> (src_tr_mode != INTEL_MIPTREE_TRMODE_NONE ||
> dst_tr_mode != INTEL_MIPTREE_TRMODE_NONE))
> return false;
>
> if (use_fast_copy_blit) {
> + assert(logic_op == GL_COPY);
Newline between the assert and the multiline comment.
Reviewed-by: Matt Turner <mattst88 at gmail.com>
> /* When two sequential fast copy blits have different source surfaces,
> * but their destinations refer to the same destination surfaces and
> * therefore destinations overlap it is imperative that a flush be
> --
More information about the mesa-dev
mailing list