mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 23:50:11 +01:00
vk/graphics_state: Don't track each vertex input field
It's unlikely that anyone will call vkCmdSetVertexInputEXT() twice with the exact same arguments, so this wasn't really doing anything, and it hurt performance in the common case as shown via "vkoverhead -test 21" on turnip. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Faith Ekstrand <faith.ekstrand@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22301>
This commit is contained in:
parent
2a8e627e3a
commit
df7be7323a
1 changed files with 15 additions and 10 deletions
|
|
@ -2056,15 +2056,15 @@ vk_common_CmdSetVertexInputEXT(VkCommandBuffer commandBuffer,
|
|||
|
||||
const uint32_t b = desc->binding;
|
||||
bindings_valid |= BITFIELD_BIT(b);
|
||||
SET_DYN_VALUE(dyn, VI, vi->bindings[b].stride, desc->stride);
|
||||
SET_DYN_VALUE(dyn, VI, vi->bindings[b].input_rate, desc->inputRate);
|
||||
SET_DYN_VALUE(dyn, VI, vi->bindings[b].divisor, desc->divisor);
|
||||
dyn->vi->bindings[b].stride = desc->stride;
|
||||
dyn->vi->bindings[b].input_rate = desc->inputRate;
|
||||
dyn->vi->bindings[b].divisor = desc->divisor;
|
||||
|
||||
/* Also set bindings_strides in case a driver is keying off that */
|
||||
SET_DYN_VALUE(dyn, VI_BINDING_STRIDES,
|
||||
vi_binding_strides[b], desc->stride);
|
||||
dyn->vi_binding_strides[b] = desc->stride;
|
||||
}
|
||||
SET_DYN_VALUE(dyn, VI, vi->bindings_valid, bindings_valid);
|
||||
|
||||
dyn->vi->bindings_valid = bindings_valid;
|
||||
SET_DYN_VALUE(dyn, VI_BINDINGS_VALID, vi_bindings_valid, bindings_valid);
|
||||
|
||||
uint32_t attributes_valid = 0;
|
||||
|
|
@ -2078,11 +2078,16 @@ vk_common_CmdSetVertexInputEXT(VkCommandBuffer commandBuffer,
|
|||
|
||||
const uint32_t a = desc->location;
|
||||
attributes_valid |= BITFIELD_BIT(a);
|
||||
SET_DYN_VALUE(dyn, VI, vi->attributes[a].binding, desc->binding);
|
||||
SET_DYN_VALUE(dyn, VI, vi->attributes[a].format, desc->format);
|
||||
SET_DYN_VALUE(dyn, VI, vi->attributes[a].offset, desc->offset);
|
||||
dyn->vi->attributes[a].binding = desc->binding;
|
||||
dyn->vi->attributes[a].format = desc->format;
|
||||
dyn->vi->attributes[a].offset = desc->offset;
|
||||
}
|
||||
SET_DYN_VALUE(dyn, VI, vi->attributes_valid, attributes_valid);
|
||||
dyn->vi->attributes_valid = attributes_valid;
|
||||
|
||||
BITSET_SET(dyn->set, MESA_VK_DYNAMIC_VI);
|
||||
BITSET_SET(dyn->set, MESA_VK_DYNAMIC_VI_BINDING_STRIDES);
|
||||
BITSET_SET(dyn->dirty, MESA_VK_DYNAMIC_VI);
|
||||
BITSET_SET(dyn->dirty, MESA_VK_DYNAMIC_VI_BINDING_STRIDES);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue