On 04.11.2015 08:46, Marek Olšák wrote: > > @@ -115,7 +130,7 @@ static void si_clear_buffer(struct pipe_context *ctx, > struct pipe_resource *dst, > bool is_framebuffer) > { > struct si_context *sctx = (struct si_context*)ctx; > - unsigned flush_flags, tc_l2_flag; > + unsigned tc_l2_flag = get_tc_l2_flag(sctx, is_framebuffer); > > if (!size) > return; > @@ -139,19 +154,9 @@ static void si_clear_buffer(struct pipe_context *ctx, > struct pipe_resource *dst, > > uint64_t va = r600_resource(dst)->gpu_address + offset; > > - /* Flush the caches where the resource is bound. */ > - if (is_framebuffer) { > - flush_flags = SI_CONTEXT_FLUSH_AND_INV_FRAMEBUFFER; > - tc_l2_flag = 0; > - } else { > - flush_flags = SI_CONTEXT_INV_TC_L1 | > - (sctx->b.chip_class == SI ? SI_CONTEXT_INV_TC_L2 > : 0) | > - SI_CONTEXT_INV_KCACHE; > - tc_l2_flag = sctx->b.chip_class == SI ? 0 : CIK_CP_DMA_USE_L2; > - } > - > + /* Flush the caches. */ > sctx->b.flags |= SI_CONTEXT_PS_PARTIAL_FLUSH | > - flush_flags; > + get_flush_flags(sctx, is_framebuffer); > > while (size) { > unsigned byte_count = MIN2(size, CP_DMA_MAX_BYTE_COUNT); > @@ -184,7 +189,7 @@ static void si_clear_buffer(struct pipe_context *ctx, > struct pipe_resource *dst, > > /* Flush the caches again in case the 3D engine has been prefetching > * the resource. */ > - sctx->b.flags |= flush_flags; > + sctx->b.flags |= get_flush_flags(sctx, is_framebuffer);
Might want to keep the flush_flags local variables instead of calling get_flush_flags repeatedly. Either way, patches 1-3 are Reviewed-by: Michel Dänzer <michel.daen...@amd.com> -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev