On Thu, Sep 18, 2014 at 5:34 PM, Christian König <[email protected]> wrote: > From: Christian König <[email protected]> > > Signed-off-by: Christian König <[email protected]> > --- > src/gallium/winsys/radeon/drm/radeon_drm_bo.h | 3 +++ > src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 11 +++++++++-- > src/gallium/winsys/radeon/drm/radeon_drm_cs.h | 2 +- > 3 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.h > b/src/gallium/winsys/radeon/drm/radeon_drm_bo.h > index 1c00a13..393c53c 100644 > --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.h > +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.h > @@ -65,6 +65,9 @@ struct radeon_bo { > /* how many command streams, which are being emitted in a separate > * thread, is this bo referenced in? */ > int num_active_ioctls; > + > + /* the ID of the last command submission this buffer was used with */ > + uint64_t last_cs_id; > }; > > struct pb_manager *radeon_bomgr_create(struct radeon_drm_winsys *rws); > diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c > b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c > index 0aa54c2..e821b6f 100644 > --- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c > +++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c > @@ -107,7 +107,7 @@ static boolean radeon_init_cs_context(struct > radeon_cs_context *csc, > csc->chunks[1].length_dw = 0; > csc->chunks[1].chunk_data = (uint64_t)(uintptr_t)csc->relocs; > csc->chunks[2].chunk_id = RADEON_CHUNK_ID_FLAGS; > - csc->chunks[2].length_dw = 2; > + csc->chunks[2].length_dw = 5; > csc->chunks[2].chunk_data = (uint64_t)(uintptr_t)&csc->flags; > > csc->chunk_array[0] = (uint64_t)(uintptr_t)&csc->chunks[0]; > @@ -382,6 +382,7 @@ static boolean radeon_drm_cs_memory_below_limit(struct > radeon_winsys_cs *rcs, ui > > void radeon_drm_cs_emit_ioctl_oneshot(struct radeon_drm_cs *cs, struct > radeon_cs_context *csc) > { > + uint64_t id; > unsigned i; > > if (drmCommandWriteRead(csc->fd, DRM_RADEON_CS, > @@ -403,8 +404,11 @@ void radeon_drm_cs_emit_ioctl_oneshot(struct > radeon_drm_cs *cs, struct radeon_cs > radeon_dump_cs_on_lockup(cs, csc); > } > > - for (i = 0; i < csc->crelocs; i++) > + id = *((uint64_t *)&csc->flags[3]);
Please add a comment here that the ID is returned by the CS ioctl. Other than that, the series is: Reviewed-by: Marek Olšák <[email protected]> Marek _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
