summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorNeha Bhende <[email protected]>2016-09-28 10:48:45 -0700
committerBrian Paul <[email protected]>2016-11-03 14:29:22 -0600
commit03e1b7cacdf3b595262e50679a83544549c61b3d (patch)
treea55864eeec4f134740cdcdbefcd8326577ad41c1 /src/gallium
parent2cff6f4512a174a23ee6c1d2583c22e24ee1a240 (diff)
svga: Add render_condition boolean flag in struct svga_context
set render_condition flag when driver performs conditional rendering. Blit using DXPredCopyRegion command gets affected by conditional rendering so We should check this flag while performing blit operation Tested with piglit tests. v2: As per Charmaine's comment, setting render_condition flag if svga_query is valid. Tested with pigit tests. Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Charmaine Lee <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/svga/svga_context.h2
-rw-r--r--src/gallium/drivers/svga/svga_pipe_blit.c3
-rw-r--r--src/gallium/drivers/svga/svga_pipe_query.c2
3 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/drivers/svga/svga_context.h b/src/gallium/drivers/svga/svga_context.h
index 3e65384a07a..5eb7fc87187 100644
--- a/src/gallium/drivers/svga/svga_context.h
+++ b/src/gallium/drivers/svga/svga_context.h
@@ -589,6 +589,8 @@ struct svga_context
SVGA3dQueryId query_id;
boolean cond;
} pred;
+
+ boolean render_condition;
};
/* A flag for each state_tracker state object:
diff --git a/src/gallium/drivers/svga/svga_pipe_blit.c b/src/gallium/drivers/svga/svga_pipe_blit.c
index 75576f2d72c..054e3f5a1c0 100644
--- a/src/gallium/drivers/svga/svga_pipe_blit.c
+++ b/src/gallium/drivers/svga/svga_pipe_blit.c
@@ -265,7 +265,8 @@ can_blit_via_copy_region_vgpu10(struct svga_context *svga,
blit_info->mask != (PIPE_MASK_ZS))
return false;
- if (blit_info->alpha_blend || blit_info->render_condition_enable ||
+ if (blit_info->alpha_blend ||
+ (svga->render_condition && blit_info->render_condition_enable) ||
blit_info->scissor_enable)
return false;
diff --git a/src/gallium/drivers/svga/svga_pipe_query.c b/src/gallium/drivers/svga/svga_pipe_query.c
index a7bfb4ea265..e8bae264cf1 100644
--- a/src/gallium/drivers/svga/svga_pipe_query.c
+++ b/src/gallium/drivers/svga/svga_pipe_query.c
@@ -1242,6 +1242,8 @@ svga_render_condition(struct pipe_context *pipe, struct pipe_query *q,
svga->pred.query_id = queryId;
svga->pred.cond = condition;
}
+
+ svga->render_condition = (sq != NULL);
}