state->push_size[pipeline->is_compute_pipeline] = pipeline->layout->push_constant_size;
}
-static void vertex_buffers(uint32_t first_binding,
- uint32_t binding_count,
- const VkBuffer *buffers,
- const VkDeviceSize *offsets,
- const VkDeviceSize *strides,
- struct rendering_state *state)
+static void handle_vertex_buffers2(struct vk_cmd_queue_entry *cmd,
+ struct rendering_state *state)
{
+ struct vk_cmd_bind_vertex_buffers2 *vcb = &cmd->u.bind_vertex_buffers2;
+
int i;
- for (i = 0; i < binding_count; i++) {
- int idx = i + first_binding;
+ for (i = 0; i < vcb->binding_count; i++) {
+ int idx = i + vcb->first_binding;
- state->vb[idx].buffer_offset = offsets[i];
- state->vb[idx].buffer.resource = buffers[i] ? lvp_buffer_from_handle(buffers[i])->bo : NULL;
+ state->vb[idx].buffer_offset = vcb->offsets[i];
+ state->vb[idx].buffer.resource =
+ vcb->buffers[i] ? lvp_buffer_from_handle(vcb->buffers[i])->bo : NULL;
- if (strides)
- state->vb[idx].stride = strides[i];
+ if (vcb->strides)
+ state->vb[idx].stride = vcb->strides[i];
}
- if (first_binding < state->start_vb)
- state->start_vb = first_binding;
- if (first_binding + binding_count >= state->num_vb)
- state->num_vb = first_binding + binding_count;
+ if (vcb->first_binding < state->start_vb)
+ state->start_vb = vcb->first_binding;
+ if (vcb->first_binding + vcb->binding_count >= state->num_vb)
+ state->num_vb = vcb->first_binding + vcb->binding_count;
state->vb_dirty = true;
}
-static void handle_vertex_buffers(struct vk_cmd_queue_entry *cmd,
- struct rendering_state *state)
-{
- struct vk_cmd_bind_vertex_buffers *vcb = &cmd->u.bind_vertex_buffers;
-
- vertex_buffers(vcb->first_binding,
- vcb->binding_count,
- vcb->buffers,
- vcb->offsets,
- NULL,
- state);
-}
-
-static void handle_vertex_buffers2(struct vk_cmd_queue_entry *cmd,
- struct rendering_state *state)
-{
- struct vk_cmd_bind_vertex_buffers2 *vcb = &cmd->u.bind_vertex_buffers2;
-
- vertex_buffers(vcb->first_binding,
- vcb->binding_count,
- vcb->buffers,
- vcb->offsets,
- vcb->strides,
- state);
-}
-
struct dyn_info {
struct {
uint16_t const_buffer_count;
ENQUEUE_CMD(CmdSetStencilReference)
ENQUEUE_CMD(CmdBindDescriptorSets)
ENQUEUE_CMD(CmdBindIndexBuffer)
- ENQUEUE_CMD(CmdBindVertexBuffers)
ENQUEUE_CMD(CmdBindVertexBuffers2)
ENQUEUE_CMD(CmdDraw)
ENQUEUE_CMD(CmdDrawMultiEXT)
case VK_CMD_BIND_INDEX_BUFFER:
handle_index_buffer(cmd, state);
break;
- case VK_CMD_BIND_VERTEX_BUFFERS:
- handle_vertex_buffers(cmd, state);
- break;
case VK_CMD_BIND_VERTEX_BUFFERS2:
handle_vertex_buffers2(cmd, state);
break;