mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-27 08:50:49 +02:00
vbo: use vbo_exec_wrap_upgrade_vertex for glVertex in ATTR_UNION
We can't decrease the size for glVertex before a flush, so use vbo_exec_wrap_upgrade_vertex directly. Reviewed-by: Mathias Fröhlich <Mathias.Froehlich@web.de> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3591>
This commit is contained in:
parent
a398a9d7e7
commit
ec7d48afc4
1 changed files with 12 additions and 6 deletions
|
|
@ -474,14 +474,14 @@ do { \
|
|||
\
|
||||
assert(sz == 1 || sz == 2); \
|
||||
\
|
||||
/* check if attribute size or type is changing */ \
|
||||
if (unlikely(exec->vtx.attr[A].active_size != N * sz || \
|
||||
exec->vtx.attr[A].type != T)) { \
|
||||
vbo_exec_fixup_vertex(ctx, A, N * sz, T); \
|
||||
} \
|
||||
\
|
||||
/* store a copy of the attribute in exec except for glVertex */ \
|
||||
if ((A) != 0) { \
|
||||
/* Check if attribute size or type is changing. */ \
|
||||
if (unlikely(exec->vtx.attr[A].active_size != N * sz || \
|
||||
exec->vtx.attr[A].type != T)) { \
|
||||
vbo_exec_fixup_vertex(ctx, A, N * sz, T); \
|
||||
} \
|
||||
\
|
||||
C *dest = (C *)exec->vtx.attrptr[A]; \
|
||||
if (N>0) dest[0] = V0; \
|
||||
if (N>1) dest[1] = V1; \
|
||||
|
|
@ -493,6 +493,12 @@ do { \
|
|||
ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \
|
||||
} else { \
|
||||
/* This is a glVertex call */ \
|
||||
/* Check if attribute size or type is changing. */ \
|
||||
if (unlikely(exec->vtx.attr[0].size < N * sz || \
|
||||
exec->vtx.attr[0].type != T)) { \
|
||||
vbo_exec_wrap_upgrade_vertex(exec, 0, N * sz, T); \
|
||||
} \
|
||||
\
|
||||
uint32_t *dst = (uint32_t *)exec->vtx.buffer_ptr; \
|
||||
uint32_t *src = (uint32_t *)exec->vtx.vertex; \
|
||||
unsigned vertex_size_no_pos = exec->vtx.vertex_size_no_pos; \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue