[Mesa-dev] [PATCH] r600/query: drop rest of vi workaround code.

Nicolai Hähnle nhaehnle at gmail.com
Thu Nov 9 12:55:32 UTC 2017


On 09.11.2017 06:54, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> This isn't needed in r600 anymore.
> 
> Signed-off-by: Dave Airlie <airlied at redhat.com>

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>


> ---
>   src/gallium/drivers/r600/r600_query.c | 46 ++++++++++-------------------------
>   src/gallium/drivers/r600/r600_query.h |  4 ---
>   2 files changed, 13 insertions(+), 37 deletions(-)
> 
> diff --git a/src/gallium/drivers/r600/r600_query.c b/src/gallium/drivers/r600/r600_query.c
> index aa3e36f..0003e2b 100644
> --- a/src/gallium/drivers/r600/r600_query.c
> +++ b/src/gallium/drivers/r600/r600_query.c
> @@ -506,7 +506,6 @@ void r600_query_hw_destroy(struct r600_common_screen *rscreen,
>   	}
>   
>   	r600_resource_reference(&query->buffer.buf, NULL);
> -	r600_resource_reference(&query->workaround_buf, NULL);
>   	FREE(rquery);
>   }
>   
> @@ -932,23 +931,19 @@ static void r600_emit_query_predication(struct r600_common_context *ctx,
>   	flag_wait = ctx->render_cond_mode == PIPE_RENDER_COND_WAIT ||
>   		    ctx->render_cond_mode == PIPE_RENDER_COND_BY_REGION_WAIT;
>   
> -	if (query->workaround_buf) {
> -		op = PRED_OP(PREDICATION_OP_BOOL64);
> -	} else {
> -		switch (query->b.type) {
> -		case PIPE_QUERY_OCCLUSION_COUNTER:
> -		case PIPE_QUERY_OCCLUSION_PREDICATE:
> -			op = PRED_OP(PREDICATION_OP_ZPASS);
> -			break;
> -		case PIPE_QUERY_SO_OVERFLOW_PREDICATE:
> -		case PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE:
> -			op = PRED_OP(PREDICATION_OP_PRIMCOUNT);
> -			invert = !invert;
> -			break;
> -		default:
> -			assert(0);
> -			return;
> -		}
> +	switch (query->b.type) {
> +	case PIPE_QUERY_OCCLUSION_COUNTER:
> +	case PIPE_QUERY_OCCLUSION_PREDICATE:
> +		op = PRED_OP(PREDICATION_OP_ZPASS);
> +		break;
> +	case PIPE_QUERY_SO_OVERFLOW_PREDICATE:
> +	case PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE:
> +		op = PRED_OP(PREDICATION_OP_PRIMCOUNT);
> +		invert = !invert;
> +		break;
> +	default:
> +		assert(0);
> +		return;
>   	}
>   
>   	/* if true then invert, see GL_ARB_conditional_render_inverted */
> @@ -957,19 +952,6 @@ static void r600_emit_query_predication(struct r600_common_context *ctx,
>   	else
>   		op |= PREDICATION_DRAW_VISIBLE; /* Draw if visible or no overflow */
>   
> -	/* Use the value written by compute shader as a workaround. Note that
> -	 * the wait flag does not apply in this predication mode.
> -	 *
> -	 * The shader outputs the result value to L2. Workarounds only affect VI
> -	 * and later, where the CP reads data from L2, so we don't need an
> -	 * additional flush.
> -	 */
> -	if (query->workaround_buf) {
> -		uint64_t va = query->workaround_buf->gpu_address + query->workaround_offset;
> -		emit_set_predicate(ctx, query->workaround_buf, va, op);
> -		return;
> -	}
> -
>   	op |= flag_wait ? PREDICATION_HINT_WAIT : PREDICATION_HINT_NOWAIT_DRAW;
>   
>   	/* emit predicate packets for all data blocks */
> @@ -1067,8 +1049,6 @@ bool r600_query_hw_begin(struct r600_common_context *rctx,
>   	if (!(query->flags & R600_QUERY_HW_FLAG_BEGIN_RESUMES))
>   		r600_query_hw_reset_buffers(rctx, query);
>   
> -	r600_resource_reference(&query->workaround_buf, NULL);
> -
>   	r600_query_hw_emit_start(rctx, query);
>   	if (!query->buffer.buf)
>   		return false;
> diff --git a/src/gallium/drivers/r600/r600_query.h b/src/gallium/drivers/r600/r600_query.h
> index 1a3c683..acba1a6 100644
> --- a/src/gallium/drivers/r600/r600_query.h
> +++ b/src/gallium/drivers/r600/r600_query.h
> @@ -193,10 +193,6 @@ struct r600_query_hw {
>   	struct list_head list;
>   	/* For transform feedback: which stream the query is for */
>   	unsigned stream;
> -
> -	/* Workaround via compute shader */
> -	struct r600_resource *workaround_buf;
> -	unsigned workaround_offset;
>   };
>   
>   bool r600_query_hw_init(struct r600_common_screen *rscreen,
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list