mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 00:00:11 +01:00
intel: Refactor creation of hiz and mcs miptrees
Move the logic for creating the ancillary hiz and mcs miptress for winsys and non-texture renderbuffers from intel_alloc_renderbuffer_storage to intel_miptree_create_for_renderbuffer. Let's try to isolate complex miptree logic to intel_mipmap_tree.c. Without this refactor, code duplication would be required along the intel_process_dri2_buffer codepath in order to create the mcs miptree. Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Paul Berry <stereotype441@gmail.com> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
parent
e2f2376e88
commit
4eba67285f
2 changed files with 19 additions and 16 deletions
|
|
@ -274,22 +274,6 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer
|
|||
if (!irb->mt)
|
||||
return false;
|
||||
|
||||
if (intel->vtbl.is_hiz_depth_format(intel, rb->Format)) {
|
||||
bool ok = intel_miptree_alloc_hiz(intel, irb->mt, rb->NumSamples);
|
||||
if (!ok) {
|
||||
intel_miptree_release(&irb->mt);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (irb->mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
|
||||
bool ok = intel_miptree_alloc_mcs(intel, irb->mt, rb->NumSamples);
|
||||
if (!ok) {
|
||||
intel_miptree_release(&irb->mt);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ intel_miptree_create_for_renderbuffer(struct intel_context *intel,
|
|||
struct intel_mipmap_tree *mt;
|
||||
uint32_t depth = 1;
|
||||
enum intel_msaa_layout msaa_layout = INTEL_MSAA_LAYOUT_NONE;
|
||||
bool ok;
|
||||
|
||||
if (num_samples > 1) {
|
||||
/* Adjust width/height/depth for MSAA */
|
||||
|
|
@ -397,8 +398,26 @@ intel_miptree_create_for_renderbuffer(struct intel_context *intel,
|
|||
mt = intel_miptree_create(intel, GL_TEXTURE_2D, format, 0, 0,
|
||||
width, height, depth, true, num_samples,
|
||||
msaa_layout);
|
||||
if (!mt)
|
||||
goto fail;
|
||||
|
||||
if (intel->vtbl.is_hiz_depth_format(intel, format)) {
|
||||
ok = intel_miptree_alloc_hiz(intel, mt, num_samples);
|
||||
if (!ok)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
|
||||
ok = intel_miptree_alloc_mcs(intel, mt, num_samples);
|
||||
if (!ok)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
return mt;
|
||||
|
||||
fail:
|
||||
intel_miptree_release(&mt);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue