Re: [Mesa-dev] [PATCH 6/7] gallium/radeon: remove predicate_drawing flag

2015-11-10 Thread Marek Olšák
On Mon, Nov 9, 2015 at 10:55 AM, Nicolai Hähnle  wrote:
> On 08.11.2015 22:48, Marek Olšák wrote:
>>
>> From: Marek Olšák 
>>
>> ---
>>   src/gallium/drivers/r600/r600_hw_context.c| 2 +-
>>   src/gallium/drivers/r600/r600_state_common.c  | 2 +-
>>   src/gallium/drivers/radeon/r600_pipe_common.h | 1 -
>>   src/gallium/drivers/radeon/r600_query.c   | 1 -
>>   src/gallium/drivers/radeonsi/si_state_draw.c  | 2 +-
>>   5 files changed, 3 insertions(+), 5 deletions(-)
>>
>> diff --git a/src/gallium/drivers/r600/r600_hw_context.c
>> b/src/gallium/drivers/r600/r600_hw_context.c
>> index 44e7cf2..2383175 100644
>> --- a/src/gallium/drivers/r600/r600_hw_context.c
>> +++ b/src/gallium/drivers/r600/r600_hw_context.c
>> @@ -81,7 +81,7 @@ void r600_need_cs_space(struct r600_context *ctx,
>> unsigned num_dw,
>> }
>>
>> /* Count in render_condition(NULL) at the end of CS. */
>> -   if (ctx->b.predicate_drawing) {
>> +   if (ctx->b.current_render_cond) {
>> num_dw += 3;
>> }
>
>
> Aside: What is this actually trying to count? The way I understand
> conditional drawing now, there is no reset state that we have to emit at the
> end of the CS (other than for the queries themselves, but AFAIU that is
> already counted by num_cs_dw_nontimer_queries_suspend above). Perhaps this
> block could actually be dropped entirely?

Yes, good catch. I'll drop this block in patch 4 "gallium/radeon:
simplify restoring render condition after flush" before pushing.

Marek
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 6/7] gallium/radeon: remove predicate_drawing flag

2015-11-09 Thread Nicolai Hähnle

On 08.11.2015 22:48, Marek Olšák wrote:

From: Marek Olšák 

---
  src/gallium/drivers/r600/r600_hw_context.c| 2 +-
  src/gallium/drivers/r600/r600_state_common.c  | 2 +-
  src/gallium/drivers/radeon/r600_pipe_common.h | 1 -
  src/gallium/drivers/radeon/r600_query.c   | 1 -
  src/gallium/drivers/radeonsi/si_state_draw.c  | 2 +-
  5 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_hw_context.c 
b/src/gallium/drivers/r600/r600_hw_context.c
index 44e7cf2..2383175 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -81,7 +81,7 @@ void r600_need_cs_space(struct r600_context *ctx, unsigned 
num_dw,
}

/* Count in render_condition(NULL) at the end of CS. */
-   if (ctx->b.predicate_drawing) {
+   if (ctx->b.current_render_cond) {
num_dw += 3;
}


Aside: What is this actually trying to count? The way I understand 
conditional drawing now, there is no reset state that we have to emit at 
the end of the CS (other than for the queries themselves, but AFAIU that 
is already counted by num_cs_dw_nontimer_queries_suspend above). Perhaps 
this block could actually be dropped entirely?


Cheers,
Nicolai



diff --git a/src/gallium/drivers/r600/r600_state_common.c 
b/src/gallium/drivers/r600/r600_state_common.c
index 28aedff..5cf5208 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -1478,7 +1478,7 @@ static void r600_draw_vbo(struct pipe_context *ctx, const 
struct pipe_draw_info
struct pipe_draw_info info = *dinfo;
struct pipe_index_buffer ib = {};
struct radeon_winsys_cs *cs = rctx->b.gfx.cs;
-   bool render_cond_bit = rctx->b.predicate_drawing && 
!rctx->b.render_cond_force_off;
+   bool render_cond_bit = rctx->b.current_render_cond && 
!rctx->b.render_cond_force_off;
uint64_t mask;

if (!info.indirect && !info.count && (info.indexed || 
!info.count_from_stream_output)) {
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h 
b/src/gallium/drivers/radeon/r600_pipe_common.h
index 09465ae..ba9000f 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -421,7 +421,6 @@ struct r600_common_context {
struct pipe_query   *current_render_cond;
unsignedcurrent_render_cond_mode;
boolean current_render_cond_cond;
-   boolpredicate_drawing;
boolrender_cond_force_off; /* for u_blitter 
*/

/* MSAA sample locations.
diff --git a/src/gallium/drivers/radeon/r600_query.c 
b/src/gallium/drivers/radeon/r600_query.c
index 145b629..9f92587 100644
--- a/src/gallium/drivers/radeon/r600_query.c
+++ b/src/gallium/drivers/radeon/r600_query.c
@@ -834,7 +834,6 @@ static void r600_render_condition(struct pipe_context *ctx,
rctx->current_render_cond = query;
rctx->current_render_cond_cond = condition;
rctx->current_render_cond_mode = mode;
-   rctx->predicate_drawing = query != NULL;

/* Compute the size of SET_PREDICATION packets. */
atom->num_dw = 0;
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c 
b/src/gallium/drivers/radeonsi/si_state_draw.c
index ebc01e8..79e8876 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -457,7 +457,7 @@ static void si_emit_draw_packets(struct si_context *sctx,
  {
struct radeon_winsys_cs *cs = sctx->b.gfx.cs;
unsigned sh_base_reg = 
sctx->shader_userdata.sh_base[PIPE_SHADER_VERTEX];
-   bool render_cond_bit = sctx->b.predicate_drawing && 
!sctx->b.render_cond_force_off;
+   bool render_cond_bit = sctx->b.current_render_cond && 
!sctx->b.render_cond_force_off;

if (info->count_from_stream_output) {
struct r600_so_target *t =



___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 6/7] gallium/radeon: remove predicate_drawing flag

2015-11-08 Thread Marek Olšák
From: Marek Olšák 

---
 src/gallium/drivers/r600/r600_hw_context.c| 2 +-
 src/gallium/drivers/r600/r600_state_common.c  | 2 +-
 src/gallium/drivers/radeon/r600_pipe_common.h | 1 -
 src/gallium/drivers/radeon/r600_query.c   | 1 -
 src/gallium/drivers/radeonsi/si_state_draw.c  | 2 +-
 5 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_hw_context.c 
b/src/gallium/drivers/r600/r600_hw_context.c
index 44e7cf2..2383175 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -81,7 +81,7 @@ void r600_need_cs_space(struct r600_context *ctx, unsigned 
num_dw,
}
 
/* Count in render_condition(NULL) at the end of CS. */
-   if (ctx->b.predicate_drawing) {
+   if (ctx->b.current_render_cond) {
num_dw += 3;
}
 
diff --git a/src/gallium/drivers/r600/r600_state_common.c 
b/src/gallium/drivers/r600/r600_state_common.c
index 28aedff..5cf5208 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -1478,7 +1478,7 @@ static void r600_draw_vbo(struct pipe_context *ctx, const 
struct pipe_draw_info
struct pipe_draw_info info = *dinfo;
struct pipe_index_buffer ib = {};
struct radeon_winsys_cs *cs = rctx->b.gfx.cs;
-   bool render_cond_bit = rctx->b.predicate_drawing && 
!rctx->b.render_cond_force_off;
+   bool render_cond_bit = rctx->b.current_render_cond && 
!rctx->b.render_cond_force_off;
uint64_t mask;
 
if (!info.indirect && !info.count && (info.indexed || 
!info.count_from_stream_output)) {
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h 
b/src/gallium/drivers/radeon/r600_pipe_common.h
index 09465ae..ba9000f 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -421,7 +421,6 @@ struct r600_common_context {
struct pipe_query   *current_render_cond;
unsignedcurrent_render_cond_mode;
boolean current_render_cond_cond;
-   boolpredicate_drawing;
boolrender_cond_force_off; /* for u_blitter 
*/
 
/* MSAA sample locations.
diff --git a/src/gallium/drivers/radeon/r600_query.c 
b/src/gallium/drivers/radeon/r600_query.c
index 145b629..9f92587 100644
--- a/src/gallium/drivers/radeon/r600_query.c
+++ b/src/gallium/drivers/radeon/r600_query.c
@@ -834,7 +834,6 @@ static void r600_render_condition(struct pipe_context *ctx,
rctx->current_render_cond = query;
rctx->current_render_cond_cond = condition;
rctx->current_render_cond_mode = mode;
-   rctx->predicate_drawing = query != NULL;
 
/* Compute the size of SET_PREDICATION packets. */
atom->num_dw = 0;
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c 
b/src/gallium/drivers/radeonsi/si_state_draw.c
index ebc01e8..79e8876 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -457,7 +457,7 @@ static void si_emit_draw_packets(struct si_context *sctx,
 {
struct radeon_winsys_cs *cs = sctx->b.gfx.cs;
unsigned sh_base_reg = 
sctx->shader_userdata.sh_base[PIPE_SHADER_VERTEX];
-   bool render_cond_bit = sctx->b.predicate_drawing && 
!sctx->b.render_cond_force_off;
+   bool render_cond_bit = sctx->b.current_render_cond && 
!sctx->b.render_cond_force_off;
 
if (info->count_from_stream_output) {
struct r600_so_target *t =
-- 
2.1.4

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev