diff options
author | Nanley Chery <[email protected]> | 2017-02-27 12:31:36 -0800 |
---|---|---|
committer | Nanley Chery <[email protected]> | 2017-03-02 13:17:55 -0800 |
commit | 9950774f8b451af9220916a0a859169d3b43f471 (patch) | |
tree | 9e3ee261b35015a883d9cc8df7d58adea27c4dff /src | |
parent | c78a959bcfab1ad20c3d5063886fb943c00db49e (diff) |
anv/blorp: Encapsulate subpass id querying
Signed-off-by: Nanley Chery <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/intel/vulkan/anv_blorp.c | 8 | ||||
-rw-r--r-- | src/intel/vulkan/anv_private.h | 15 |
2 files changed, 17 insertions, 6 deletions
diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index 7472efce6ab..d79c5e0e8c6 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -1069,9 +1069,7 @@ attachment_needs_flush(struct anv_cmd_buffer *cmd_buffer, enum subpass_stage stage) { struct anv_render_pass *pass = cmd_buffer->state.pass; - struct anv_subpass *subpass = cmd_buffer->state.subpass; - unsigned subpass_idx = subpass - pass->subpasses; - assert(subpass_idx < pass->subpass_count); + const uint32_t subpass_idx = anv_get_subpass_id(&cmd_buffer->state); /* We handle this subpass specially based on the current stage */ enum anv_subpass_usage usage = att->subpass_usage[subpass_idx]; @@ -1407,9 +1405,7 @@ ccs_resolve_attachment(struct anv_cmd_buffer *cmd_buffer, att_state->aux_usage == ISL_AUX_USAGE_CCS_D); struct anv_render_pass *pass = cmd_buffer->state.pass; - struct anv_subpass *subpass = cmd_buffer->state.subpass; - unsigned subpass_idx = subpass - pass->subpasses; - assert(subpass_idx < pass->subpass_count); + const uint32_t subpass_idx = anv_get_subpass_id(&cmd_buffer->state); /* Scan forward to see what all ways this attachment will be used. * Ideally, we would like to resolve in the same subpass as the last write diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 455bf3505cf..c73196ab5ef 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -2009,6 +2009,21 @@ void anv_dump_finish(void); void anv_dump_add_framebuffer(struct anv_cmd_buffer *cmd_buffer, struct anv_framebuffer *fb); +static inline uint32_t +anv_get_subpass_id(const struct anv_cmd_state * const cmd_state) +{ + /* This function must be called from within a subpass. */ + assert(cmd_state->pass && cmd_state->subpass); + + const uint32_t subpass_id = cmd_state->subpass - cmd_state->pass->subpasses; + + /* The id of this subpass shouldn't exceed the number of subpasses in this + * render pass minus 1. + */ + assert(subpass_id < cmd_state->pass->subpass_count); + return subpass_id; +} + #define ANV_DEFINE_HANDLE_CASTS(__anv_type, __VkType) \ \ static inline struct __anv_type * \ |