Browse Source

intel: Add resolve functions for renderbuffers

Add the following functions:
   intel_renderbuffer_resolve_hiz
   intel_renderbuffer_resolve_depth

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
tags/mesa-8.0-rc1
Chad Versace 13 years ago
parent
commit
1383e56bd9
2 changed files with 94 additions and 0 deletions
  1. 63
    0
      src/mesa/drivers/dri/intel/intel_fbo.c
  2. 31
    0
      src/mesa/drivers/dri/intel/intel_fbo.h

+ 63
- 0
src/mesa/drivers/dri/intel/intel_fbo.c View File

@@ -1436,6 +1436,69 @@ intel_blit_framebuffer(struct gl_context *ctx,
mask, filter);
}

void
intel_renderbuffer_set_needs_hiz_resolve(struct intel_renderbuffer *irb)
{
if (irb->mt) {
intel_miptree_slice_set_needs_hiz_resolve(irb->mt,
irb->mt_level,
irb->mt_layer);
} else if (irb->wrapped_depth) {
intel_renderbuffer_set_needs_hiz_resolve(
intel_renderbuffer(irb->wrapped_depth));
} else {
return;
}
}

void
intel_renderbuffer_set_needs_depth_resolve(struct intel_renderbuffer *irb)
{
if (irb->mt) {
intel_miptree_slice_set_needs_depth_resolve(irb->mt,
irb->mt_level,
irb->mt_layer);
} else if (irb->wrapped_depth) {
intel_renderbuffer_set_needs_depth_resolve(
intel_renderbuffer(irb->wrapped_depth));
} else {
return;
}
}

bool
intel_renderbuffer_resolve_hiz(struct intel_context *intel,
struct intel_renderbuffer *irb)
{
if (irb->mt)
return intel_miptree_slice_resolve_hiz(intel,
irb->mt,
irb->mt_level,
irb->mt_layer);
if (irb->wrapped_depth)
return intel_renderbuffer_resolve_hiz(intel,
intel_renderbuffer(irb->wrapped_depth));

return false;
}

bool
intel_renderbuffer_resolve_depth(struct intel_context *intel,
struct intel_renderbuffer *irb)
{
if (irb->mt)
return intel_miptree_slice_resolve_depth(intel,
irb->mt,
irb->mt_level,
irb->mt_layer);

if (irb->wrapped_depth)
return intel_renderbuffer_resolve_depth(intel,
intel_renderbuffer(irb->wrapped_depth));

return false;
}

/**
* Do one-time context initializations related to GL_EXT_framebuffer_object.
* Hook in device driver functions.

+ 31
- 0
src/mesa/drivers/dri/intel/intel_fbo.h View File

@@ -185,4 +185,35 @@ intel_renderbuffer_tile_offsets(struct intel_renderbuffer *irb,
struct intel_region*
intel_get_rb_region(struct gl_framebuffer *fb, GLuint attIndex);

void
intel_renderbuffer_set_needs_hiz_resolve(struct intel_renderbuffer *irb);

void
intel_renderbuffer_set_needs_depth_resolve(struct intel_renderbuffer *irb);


/**
* \brief Perform a HiZ resolve on the renderbuffer.
*
* It is safe to call this function on a renderbuffer without HiZ. In that
* case, the function is a no-op.
*
* \return false if no resolve was needed
*/
bool
intel_renderbuffer_resolve_hiz(struct intel_context *intel,
struct intel_renderbuffer *irb);

/**
* \brief Perform a depth resolve on the renderbuffer.
*
* It is safe to call this function on a renderbuffer without HiZ. In that
* case, the function is a no-op.
*
* \return false if no resolve was needed
*/
bool
intel_renderbuffer_resolve_depth(struct intel_context *intel,
struct intel_renderbuffer *irb);

#endif /* INTEL_FBO_H */

Loading…
Cancel
Save