[Mesa-dev] [PATCH 21/25] anv/blorp: Break the guts of alloc_binding_table into a shared helper
Pohjolainen, Topi
topi.pohjolainen at gmail.com
Fri Oct 28 19:30:47 UTC 2016
On Fri, Oct 28, 2016 at 10:27:02PM +0300, Pohjolainen, Topi wrote:
> On Sat, Oct 22, 2016 at 10:50:52AM -0700, Jason Ekstrand wrote:
> > ---
> > src/intel/vulkan/anv_blorp.c | 24 ++++++++++++++++++++++++
> > src/intel/vulkan/anv_private.h | 5 +++++
> > src/intel/vulkan/genX_blorp_exec.c | 18 ++----------------
> > 3 files changed, 31 insertions(+), 16 deletions(-)
> >
> > diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c
> > index 5361c4b..f495815 100644
> > --- a/src/intel/vulkan/anv_blorp.c
> > +++ b/src/intel/vulkan/anv_blorp.c
> > @@ -868,6 +868,30 @@ void anv_CmdClearDepthStencilImage(
> > blorp_batch_finish(&batch);
> > }
> >
> > +struct anv_state
> > +anv_cmd_buffer_alloc_blorp_binding_table(struct anv_cmd_buffer *cmd_buffer,
> > + uint32_t 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.
> > + */
> > + anv_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);
> > + }
>
> This is not returning the state.
And reading the next patch I found it there.
>
> > +}
> > +
> > static void
> > clear_color_attachment(struct anv_cmd_buffer *cmd_buffer,
> > struct blorp_batch *batch,
> > diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
> > index 5664a6e..44fe606 100644
> > --- a/src/intel/vulkan/anv_private.h
> > +++ b/src/intel/vulkan/anv_private.h
> > @@ -1271,6 +1271,11 @@ void anv_cmd_buffer_resolve_subpass(struct anv_cmd_buffer *cmd_buffer);
> > const struct anv_image_view *
> > anv_cmd_buffer_get_depth_stencil_view(const struct anv_cmd_buffer *cmd_buffer);
> >
> > +struct anv_state
> > +anv_cmd_buffer_alloc_blorp_binding_table(struct anv_cmd_buffer *cmd_buffer,
> > + uint32_t num_entries,
> > + uint32_t *state_offset);
> > +
> > void anv_cmd_buffer_dump(struct anv_cmd_buffer *cmd_buffer);
> >
> > struct anv_fence {
> > diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c
> > index 185aff6..a705de0 100644
> > --- a/src/intel/vulkan/genX_blorp_exec.c
> > +++ b/src/intel/vulkan/genX_blorp_exec.c
> > @@ -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;
> > --
> > 2.5.0.400.gff86faf
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list