On Nov 4, 2015 9:31 AM, "Michel Dänzer" <mic...@daenzer.net> wrote: > > On 04.11.2015 08:46, Marek Olšák wrote: > > > > @@ -209,11 +211,48 @@ static void si_clear_buffer(struct pipe_context *ctx, struct pipe_resource *dst, > > r600_resource(dst)->TC_L2_dirty = true; > > } > > > > +/** > > + * Realign the CP DMA engine. This must be done after a copy with an unaligned > > + * size. > > + * > > + * \param size Remaining size to the CP DMA alignment. > > + */ > > +static void si_cp_dma_realign_engine(struct si_context *sctx, unsigned size) > > +{ > > + uint64_t va; > > + unsigned dma_flags = 0; > > + unsigned scratch_size = CP_DMA_ALIGNMENT * 2; > > + > > + assert(size < CP_DMA_ALIGNMENT); > > + > > + /* Use the scratch buffer as the dummy buffer. The 3D engine should be > > + * idle at this point. > > + */ > > + if (!sctx->scratch_buffer || > > + sctx->scratch_buffer->b.b.width0 < scratch_size) { > > + r600_resource_reference(&sctx->scratch_buffer, NULL); > > + sctx->scratch_buffer = > > + si_resource_create_custom(&sctx->screen->b.b, > > + PIPE_USAGE_DEFAULT, > > + scratch_size); > > + } > > + > > + si_cp_dma_prepare(sctx, &sctx->scratch_buffer->b.b, > > + &sctx->scratch_buffer->b.b, size, size, &dma_flags); > > + > > + va = sctx->scratch_buffer->gpu_address; > > + si_emit_cp_dma_copy_buffer(sctx, va, va + CP_DMA_ALIGNMENT, size, > > + dma_flags); > > +} > > Should this update sctx->emit_scratch_reloc ?
Not strictly needed, but I'll add that before pushing. Marek
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev