Mesa (master): anv/pipeline: Add a subpass field to anv_pipeline
Jason Ekstrand
jekstrand at kemper.freedesktop.org
Wed May 3 18:25:54 UTC 2017
Module: Mesa
Branch: master
Commit: ca5bdfdfc68c065980db2dd06a5979c2c4fe674b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ca5bdfdfc68c065980db2dd06a5979c2c4fe674b
Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date: Wed Mar 22 15:36:46 2017 -0700
anv/pipeline: Add a subpass field to anv_pipeline
This simplifies the code a variety of places.
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
---
src/intel/vulkan/anv_pipeline.c | 12 +++++++-----
src/intel/vulkan/anv_private.h | 1 +
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index 599286c216..85b3290e7b 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -279,7 +279,6 @@ populate_wm_prog_key(const struct anv_pipeline *pipeline,
struct brw_wm_prog_key *key)
{
const struct gen_device_info *devinfo = &pipeline->device->info;
- ANV_FROM_HANDLE(anv_render_pass, render_pass, info->renderPass);
memset(key, 0, sizeof(*key));
@@ -297,8 +296,7 @@ populate_wm_prog_key(const struct anv_pipeline *pipeline,
/* XXX Vulkan doesn't appear to specify */
key->clamp_fragment_color = false;
- key->nr_color_regions =
- render_pass->subpasses[info->subpass].color_count;
+ key->nr_color_regions = pipeline->subpass->color_count;
key->replicate_alpha = key->nr_color_regions > 1 &&
info->pMultisampleState &&
@@ -1028,8 +1026,7 @@ copy_non_dynamic_state(struct anv_pipeline *pipeline,
const VkGraphicsPipelineCreateInfo *pCreateInfo)
{
anv_cmd_dirty_mask_t states = ANV_CMD_DIRTY_DYNAMIC_ALL;
- ANV_FROM_HANDLE(anv_render_pass, pass, pCreateInfo->renderPass);
- struct anv_subpass *subpass = &pass->subpasses[pCreateInfo->subpass];
+ struct anv_subpass *subpass = pipeline->subpass;
pipeline->dynamic_state = default_dynamic_state;
@@ -1232,6 +1229,11 @@ anv_pipeline_init(struct anv_pipeline *pipeline,
alloc = &device->alloc;
pipeline->device = device;
+
+ ANV_FROM_HANDLE(anv_render_pass, render_pass, pCreateInfo->renderPass);
+ assert(pCreateInfo->subpass < render_pass->subpass_count);
+ pipeline->subpass = &render_pass->subpasses[pCreateInfo->subpass];
+
pipeline->layout = anv_pipeline_layout_from_handle(pCreateInfo->layout);
result = anv_reloc_list_init(&pipeline->batch_relocs, alloc);
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 4e742170da..e0725b708d 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -1797,6 +1797,7 @@ struct anv_pipeline {
uint32_t dynamic_state_mask;
struct anv_dynamic_state dynamic_state;
+ struct anv_subpass * subpass;
struct anv_pipeline_layout * layout;
bool needs_data_cache;
More information about the mesa-commit
mailing list