anv/blorp: Break the guts of alloc_binding_table into a shared helper

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
Jason Ekstrand
2016-10-21 17:01:17 -07:00
parent 3c1ee052bd
commit e371850d94
3 changed files with 33 additions and 16 deletions

View File

@@ -87,22 +87,8 @@ blorp_alloc_binding_table(struct blorp_batch *batch, unsigned num_entries,
uint32_t state_offset;
struct anv_state bt_state =
anv_cmd_buffer_alloc_binding_table(cmd_buffer, num_entries,
&state_offset);
if (bt_state.map == NULL) {
/* We ran out of space. Grab a new binding table block. */
VkResult result = anv_cmd_buffer_new_binding_table_block(cmd_buffer);
assert(result == VK_SUCCESS);
/* Re-emit state base addresses so we get the new surface state base
* address before we start emitting binding tables etc.
*/
genX(cmd_buffer_emit_state_base_address)(cmd_buffer);
bt_state = anv_cmd_buffer_alloc_binding_table(cmd_buffer, num_entries,
&state_offset);
assert(bt_state.map != NULL);
}
anv_cmd_buffer_alloc_blorp_binding_table(cmd_buffer, num_entries,
&state_offset);
uint32_t *bt_map = bt_state.map;
*bt_offset = bt_state.offset;