intel: add intel_render_pass_{attachment,subpass}
Make intel_render_pass own an array of intel_render_pass_attachment and an
array of intel_render_pass_subpass. Every subpass references the attachment
array for its outputs.
It gets a bit more clear that intel_fb is for intel_render_pass just like
intel_desc_set is for intel_desc_layout. It has always been so at the API
level, but it was harder to see.
This is in preparation for an upcoming header change.
diff --git a/icd/intel/cmd_meta.c b/icd/intel/cmd_meta.c
index 8d6e439..32490b7 100644
--- a/icd/intel/cmd_meta.c
+++ b/icd/intel/cmd_meta.c
@@ -994,8 +994,11 @@
const VkRect3D *pRects)
{
struct intel_cmd *cmd = intel_cmd(cmdBuffer);
+ const struct intel_render_pass_subpass *subpass =
+ cmd->bind.render_pass_subpass;
const struct intel_fb *fb = cmd->bind.fb;
- const struct intel_att_view *view = fb->views[colorAttachment];
+ const struct intel_att_view *view =
+ fb->views[subpass->color_indices[colorAttachment]];
/* Convert each rect3d to clear into a subresource clear.
* TODO: this currently only supports full layer clears --
@@ -1029,9 +1032,10 @@
const VkRect3D *pRects)
{
struct intel_cmd *cmd = intel_cmd(cmdBuffer);
- const struct intel_render_pass *rp = cmd->bind.render_pass;
+ const struct intel_render_pass_subpass *subpass =
+ cmd->bind.render_pass_subpass;
const struct intel_fb *fb = cmd->bind.fb;
- const struct intel_att_view *view = fb->views[rp->colorAttachmentCount];
+ const struct intel_att_view *view = fb->views[subpass->ds_index];
/* Convert each rect3d to clear into a subresource clear.
* TODO: this currently only supports full layer clears --