mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 14:20:11 +01:00
glapi: Add the safe_{add,mul,pad} functions from xserver
We're about to update the generator scripts to use these, easier not to vary between client and server. Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
7bc5c7f586
commit
88cfc9ddaa
1 changed files with 24 additions and 0 deletions
|
|
@ -174,6 +174,7 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto):
|
|||
print '#include <X11/Xlib-xcb.h>'
|
||||
print '#include <xcb/xcb.h>'
|
||||
print '#include <xcb/glx.h>'
|
||||
print '#include <limits.h>'
|
||||
|
||||
print ''
|
||||
print '#define __GLX_PAD(n) (((n) + 3) & ~3)'
|
||||
|
|
@ -181,6 +182,29 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto):
|
|||
self.printFastcall()
|
||||
self.printNoinline()
|
||||
print ''
|
||||
|
||||
print 'static _X_INLINE int safe_add(int a, int b)'
|
||||
print '{'
|
||||
print ' if (a < 0 || b < 0) return -1;'
|
||||
print ' if (INT_MAX - a < b) return -1;'
|
||||
print ' return a + b;'
|
||||
print '}'
|
||||
print 'static _X_INLINE int safe_mul(int a, int b)'
|
||||
print '{'
|
||||
print ' if (a < 0 || b < 0) return -1;'
|
||||
print ' if (a == 0 || b == 0) return 0;'
|
||||
print ' if (a > INT_MAX / b) return -1;'
|
||||
print ' return a * b;'
|
||||
print '}'
|
||||
print 'static _X_INLINE int safe_pad(int a)'
|
||||
print '{'
|
||||
print ' int ret;'
|
||||
print ' if (a < 0) return -1;'
|
||||
print ' if ((ret = safe_add(a, 3)) < 0) return -1;'
|
||||
print ' return ret & (GLuint)~3;'
|
||||
print '}'
|
||||
print ''
|
||||
|
||||
print '#ifndef __GNUC__'
|
||||
print '# define __builtin_expect(x, y) x'
|
||||
print '#endif'
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue