[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