Mesa (master): i965: Add an interface for doing hiz ops from C code.

Eric Anholt anholt at kemper.freedesktop.org
Wed May 23 17:44:43 UTC 2012


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

Author: Eric Anholt <eric at anholt.net>
Date:   Mon May 21 09:30:35 2012 -0700

i965: Add an interface for doing hiz ops from C code.

This required moving gen6_hiz_op, and I put it in intel_resolve_map.h
for the next commit.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Chad Versace <chad.versace at linux.intel.com>

---

 src/mesa/drivers/dri/i965/brw_blorp.cpp        |   11 +++++++++++
 src/mesa/drivers/dri/i965/brw_blorp.h          |   16 +---------------
 src/mesa/drivers/dri/intel/intel_mipmap_tree.h |   15 +++++++++++++++
 src/mesa/drivers/dri/intel/intel_resolve_map.h |   17 +++++++++++++++++
 4 files changed, 44 insertions(+), 15 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp b/src/mesa/drivers/dri/i965/brw_blorp.cpp
index 994d646..fc9b2ac 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp
@@ -98,6 +98,17 @@ brw_blorp_params::brw_blorp_params()
 {
 }
 
+extern "C" {
+void
+intel_hiz_exec(struct intel_context *intel, struct intel_mipmap_tree *mt,
+	       unsigned int level, unsigned int layer, gen6_hiz_op op)
+{
+   brw_hiz_op_params params(mt, level, layer, op);
+   brw_blorp_exec(intel, &params);
+}
+
+} /* extern "C" */
+
 void
 brw_blorp_exec(struct intel_context *intel, const brw_blorp_params *params)
 {
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h
index 65662c0..9aa5efa 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -25,27 +25,13 @@
 
 #include <stdint.h>
 
+#include "brw_context.h"
 #include "intel_mipmap_tree.h"
 
 struct brw_context;
 
 
 /**
- * For an overview of the HiZ operations, see the following sections of the
- * Sandy Bridge PRM, Volume 1, Part2:
- *   - 7.5.3.1 Depth Buffer Clear
- *   - 7.5.3.2 Depth Buffer Resolve
- *   - 7.5.3.3 Hierarchical Depth Buffer Resolve
- */
-enum gen6_hiz_op {
-   GEN6_HIZ_OP_DEPTH_CLEAR,
-   GEN6_HIZ_OP_DEPTH_RESOLVE,
-   GEN6_HIZ_OP_HIZ_RESOLVE,
-   GEN6_HIZ_OP_NONE,
-};
-
-
-/**
  * Binding table indices used by BLORP.
  */
 enum {
diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.h b/src/mesa/drivers/dri/intel/intel_mipmap_tree.h
index ca1666d..e690a12 100644
--- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.h
+++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.h
@@ -421,6 +421,21 @@ intel_miptree_unmap(struct intel_context *intel,
 		    unsigned int level,
 		    unsigned int slice);
 
+#ifdef I915
+static inline void
+intel_hiz_exec(struct intel_context *intel, struct intel_mipmap_tree *mt,
+	       unsigned int level, unsigned int layer, enum gen6_hiz_op op)
+{
+   /* Stub on i915.  It would be nice if we didn't execute resolve code at all
+    * there.
+    */
+}
+#else
+void
+intel_hiz_exec(struct intel_context *intel, struct intel_mipmap_tree *mt,
+	       unsigned int level, unsigned int layer, enum gen6_hiz_op op);
+#endif
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/mesa/drivers/dri/intel/intel_resolve_map.h b/src/mesa/drivers/dri/intel/intel_resolve_map.h
index 1082c10..0f31ca8 100644
--- a/src/mesa/drivers/dri/intel/intel_resolve_map.h
+++ b/src/mesa/drivers/dri/intel/intel_resolve_map.h
@@ -25,6 +25,23 @@
 
 #include <stdint.h>
 
+/**
+ * For an overview of the HiZ operations, see the following sections of the
+ * Sandy Bridge PRM, Volume 1, Part2:
+ *   - 7.5.3.1 Depth Buffer Clear
+ *   - 7.5.3.2 Depth Buffer Resolve
+ *   - 7.5.3.3 Hierarchical Depth Buffer Resolve
+ *
+ * Of these, two get entered in the resolve map as needing to be done to the
+ * buffer: depth resolve and hiz resolve.
+ */
+enum gen6_hiz_op {
+   GEN6_HIZ_OP_DEPTH_CLEAR,
+   GEN6_HIZ_OP_DEPTH_RESOLVE,
+   GEN6_HIZ_OP_HIZ_RESOLVE,
+   GEN6_HIZ_OP_NONE,
+};
+
 enum intel_need_resolve {
    INTEL_NEED_HIZ_RESOLVE,
    INTEL_NEED_DEPTH_RESOLVE,




More information about the mesa-commit mailing list