spirv: Lower BaseVertex to FIRST_VERTEX instead of BASE_VERTEX
The base vertex in Vulkan is different from GL in that for non-indexed primitives the value is taken from the firstVertex parameter instead of being set to zero. This coincides with the new SYSTEM_VALUE_FIRST_VERTEX instead of BASE_VERTEX. v2 (idr): Add comment describing why SYSTEM_VALUE_FIRST_VERTEX is used for SpvBuiltInBaseVertex. Suggested by Jason. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> [v1] Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:

committed by
Ian Romanick

parent
c32e1035cb
commit
c4f30a9100
@@ -98,6 +98,7 @@ emit_vertex_input(struct anv_pipeline *pipeline,
|
||||
const bool needs_svgs_elem = vs_prog_data->uses_vertexid ||
|
||||
vs_prog_data->uses_instanceid ||
|
||||
vs_prog_data->uses_basevertex ||
|
||||
vs_prog_data->uses_firstvertex ||
|
||||
vs_prog_data->uses_baseinstance;
|
||||
|
||||
uint32_t elem_count = __builtin_popcount(elements) -
|
||||
@@ -178,6 +179,7 @@ emit_vertex_input(struct anv_pipeline *pipeline,
|
||||
* well. Just do all or nothing.
|
||||
*/
|
||||
uint32_t base_ctrl = (vs_prog_data->uses_basevertex ||
|
||||
vs_prog_data->uses_firstvertex ||
|
||||
vs_prog_data->uses_baseinstance) ?
|
||||
VFCOMP_STORE_SRC : VFCOMP_STORE_0;
|
||||
|
||||
|
Reference in New Issue
Block a user