mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 04:58:05 +02:00
gallium/auxiliary/indices: consistently apply start only to input
The majority of these only apply the start argument to the input, but a few of them also does for the output-array. util_primconvert, the only user of this argument expects this pass a non-zero start-argument does not expect this to be applied to the output; if it is, it will write outside of allocated memory, leading to VRAM corruption. The reason this doesn't seem to have been noticed before, is that no driver currently use util_primconvert to convert a primitive-type to itself, which is the cases where this was broken. But for Zink, this will no longer be true, because we need to eliminate the use of 8-bit index-buffers. Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Fixes:28f3f8d413("gallium/auxiliary/indices: add start param") Reviewed-by: Rob Clark <robdclark@chromium.org> (cherry picked from commit52af1427c6)
This commit is contained in:
parent
6ac1d9b46e
commit
451ddeb429
1 changed files with 10 additions and 10 deletions
|
|
@ -211,15 +211,15 @@ def postamble():
|
|||
|
||||
def points(intype, outtype, inpv, outpv, pr):
|
||||
preamble(intype, outtype, inpv, outpv, pr, prim='points')
|
||||
print(' for (i = start; i < (out_nr+start); i++) { ')
|
||||
do_point( intype, outtype, 'out+i', 'i' );
|
||||
print(' for (i = start, j = 0; j < out_nr; j++, i++) { ')
|
||||
do_point( intype, outtype, 'out+j', 'i' );
|
||||
print(' }')
|
||||
postamble()
|
||||
|
||||
def lines(intype, outtype, inpv, outpv, pr):
|
||||
preamble(intype, outtype, inpv, outpv, pr, prim='lines')
|
||||
print(' for (i = start; i < (out_nr+start); i+=2) { ')
|
||||
do_line( intype, outtype, 'out+i', 'i', 'i+1', inpv, outpv );
|
||||
print(' for (i = start, j = 0; j < out_nr; j+=2, i+=2) { ')
|
||||
do_line( intype, outtype, 'out+j', 'i', 'i+1', inpv, outpv );
|
||||
print(' }')
|
||||
postamble()
|
||||
|
||||
|
|
@ -240,8 +240,8 @@ def lineloop(intype, outtype, inpv, outpv, pr):
|
|||
|
||||
def tris(intype, outtype, inpv, outpv, pr):
|
||||
preamble(intype, outtype, inpv, outpv, pr, prim='tris')
|
||||
print(' for (i = start; i < (out_nr+start); i+=3) { ')
|
||||
do_tri( intype, outtype, 'out+i', 'i', 'i+1', 'i+2', inpv, outpv );
|
||||
print(' for (i = start, j = 0; j < out_nr; j+=3, i+=3) { ')
|
||||
do_tri( intype, outtype, 'out+j', 'i', 'i+1', 'i+2', inpv, outpv );
|
||||
print(' }')
|
||||
postamble()
|
||||
|
||||
|
|
@ -377,8 +377,8 @@ def quadstrip(intype, outtype, inpv, outpv, pr):
|
|||
|
||||
def linesadj(intype, outtype, inpv, outpv, pr):
|
||||
preamble(intype, outtype, inpv, outpv, pr, prim='linesadj')
|
||||
print(' for (i = start; i < (out_nr+start); i+=4) { ')
|
||||
do_lineadj( intype, outtype, 'out+i', 'i+0', 'i+1', 'i+2', 'i+3', inpv, outpv )
|
||||
print(' for (i = start, j = 0; j < out_nr; j+=4, i+=4) { ')
|
||||
do_lineadj( intype, outtype, 'out+j', 'i+0', 'i+1', 'i+2', 'i+3', inpv, outpv )
|
||||
print(' }')
|
||||
postamble()
|
||||
|
||||
|
|
@ -393,8 +393,8 @@ def linestripadj(intype, outtype, inpv, outpv, pr):
|
|||
|
||||
def trisadj(intype, outtype, inpv, outpv, pr):
|
||||
preamble(intype, outtype, inpv, outpv, pr, prim='trisadj')
|
||||
print(' for (i = start; i < (out_nr+start); i+=6) { ')
|
||||
do_triadj( intype, outtype, 'out+i', 'i+0', 'i+1', 'i+2', 'i+3',
|
||||
print(' for (i = start, j = 0; j < out_nr; j+=6, i+=6) { ')
|
||||
do_triadj( intype, outtype, 'out+j', 'i+0', 'i+1', 'i+2', 'i+3',
|
||||
'i+4', 'i+5', inpv, outpv )
|
||||
print(' }')
|
||||
postamble()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue