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>
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user