[Mesa-dev] [PATCH 4/5] intel: Add function intel_renderbuffer_hiz_alloc

Chad Versace chad at chad-versace.us
Mon Oct 17 07:40:27 PDT 2011


This function allocates the HiZ region and initializes the HiZ control
state for a depthbuffer.

It is wise to define the logic for HiZ region allocation in a single
location, since when MSAA arrives that logic will become more complicated.

Signed-off-by: Chad Versace <chad at chad-versace.us>
---
 src/mesa/drivers/dri/intel/intel_fbo.c |   21 +++++++++++++++++++++
 src/mesa/drivers/dri/intel/intel_fbo.h |    8 ++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c
index b7cfdb9..17397e1 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.c
+++ b/src/mesa/drivers/dri/intel/intel_fbo.c
@@ -110,6 +110,27 @@ intel_framebuffer_get_hiz_region(struct gl_framebuffer *fb)
       return NULL;
 }
 
+bool
+intel_renderbuffer_alloc_hiz(struct intel_context *intel,
+                             struct intel_renderbuffer *depth_irb)
+{
+   struct intel_region *depth_region = depth_irb->region;
+   struct intel_hiz_control *hiz = &depth_irb->region->hiz;
+
+   hiz->region = intel_region_alloc(intel->intelScreen,
+				    I915_TILING_Y,
+				    depth_region->cpp,
+				    depth_region->width,
+				    depth_region->height,
+				    GL_TRUE);
+   if (!hiz->region)
+      return false;
+
+   hiz->need_resolve = INTEL_HIZ_NEED_NO_RESOLVE;
+   hiz->depth_format = depth_irb->Base.Format;
+   return true;
+}
+
 /**
  * Called via glRenderbufferStorageEXT() to set the format and allocate
  * storage for a user-created renderbuffer.
diff --git a/src/mesa/drivers/dri/intel/intel_fbo.h b/src/mesa/drivers/dri/intel/intel_fbo.h
index 459cba6..377cb1b 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.h
+++ b/src/mesa/drivers/dri/intel/intel_fbo.h
@@ -138,6 +138,14 @@ intel_get_renderbuffer(struct gl_framebuffer *fb, gl_buffer_index attIndex)
 struct intel_region*
 intel_framebuffer_get_hiz_region(struct gl_framebuffer *fb);
 
+/**
+ * For the given depthbuffer, allocate the HiZ region and initialize the HiZ
+ * control state.
+ */
+bool
+intel_renderbuffer_alloc_hiz(struct intel_context *intel,
+                             struct intel_renderbuffer *depth_irb);
+
 static INLINE bool
 intel_framebuffer_has_hiz(struct gl_framebuffer *fb)
 {
-- 
1.7.6.4



More information about the mesa-dev mailing list