Mesa (master): svga: Add render_condition boolean flag in struct svga_context

Brian Paul brianp at kemper.freedesktop.org
Thu Nov 3 20:31:02 UTC 2016


Module: Mesa
Branch: master
Commit: 03e1b7cacdf3b595262e50679a83544549c61b3d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=03e1b7cacdf3b595262e50679a83544549c61b3d

Author: Neha Bhende <bhenden at vmware.com>
Date:   Wed Sep 28 10:48:45 2016 -0700

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 <brianp at vmware.com>
Reviewed-by: Charmaine Lee <charmainel at vmware.com>

---

 src/gallium/drivers/svga/svga_context.h    | 2 ++
 src/gallium/drivers/svga/svga_pipe_blit.c  | 3 ++-
 src/gallium/drivers/svga/svga_pipe_query.c | 2 ++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/svga/svga_context.h b/src/gallium/drivers/svga/svga_context.h
index 3e65384..5eb7fc8 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 75576f2..054e3f5 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 a7bfb4e..e8bae26 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);
 }
 
 




More information about the mesa-commit mailing list