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

Reply via email to