X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglx%2Fpackrender.h;h=461180cd7b1de219873f30e83b0821424ba4b5f2;hb=396b41095944ea3675d30c0d47ca8c01db2b4c8f;hp=30f6d44bbd227f05dc96becc8279d78aa6eb844c;hpb=bcc13b74443137043e8a34f8cb64a5add0d8af93;p=mesa.git diff --git a/src/glx/packrender.h b/src/glx/packrender.h index 30f6d44bbd2..461180cd7b1 100644 --- a/src/glx/packrender.h +++ b/src/glx/packrender.h @@ -54,7 +54,7 @@ /* Setup for all commands */ #define __GLX_DECLARE_VARIABLES() \ - __GLXcontext *gc; \ + struct glx_context *gc; \ GLubyte *pc, *pixelHeaderPC; \ GLuint compsize, cmdlen @@ -155,59 +155,38 @@ /* Single item copy macros */ #define __GLX_PUT_CHAR(offset,a) \ - *((INT8 *) (pc + offset)) = a + do { \ + int8_t __tmp = (a); \ + memcpy((pc + (offset)), &__tmp, 1); \ + } while (0) -#ifndef _CRAY #define __GLX_PUT_SHORT(offset,a) \ - *((INT16 *) (pc + offset)) = a + do { \ + int16_t __tmp = (a); \ + memcpy((pc + (offset)), &__tmp, 2); \ + } while (0) #define __GLX_PUT_LONG(offset,a) \ - *((INT32 *) (pc + offset)) = a + do { \ + int32_t __tmp = (a); \ + memcpy((pc + (offset)), &__tmp, 4); \ + } while (0) #define __GLX_PUT_FLOAT(offset,a) \ - *((FLOAT32 *) (pc + offset)) = a - -#else -#define __GLX_PUT_SHORT(offset,a) \ - { GLubyte *cp = (pc+offset); \ - int shift = (64-16) - ((int)(cp) >> (64-6)); \ - *(int *)cp = (*(int *)cp & ~(0xffff << shift)) | ((a & 0xffff) << shift); } - -#define __GLX_PUT_LONG(offset,a) \ - { GLubyte *cp = (pc+offset); \ - int shift = (64-32) - ((int)(cp) >> (64-6)); \ - *(int *)cp = (*(int *)cp & ~(0xffffffff << shift)) | ((a & 0xffffffff) << shift); } - -#define __GLX_PUT_FLOAT(offset,a) \ - gl_put_float((pc + offset),a) + do { \ + float __tmp = (a); \ + memcpy((pc + (offset)), &__tmp, 4); \ + } while (0) #define __GLX_PUT_DOUBLE(offset,a) \ - gl_put_double(pc + offset, a) - -extern void gl_put_float( /*GLubyte *, struct cray_single */ ); -extern void gl_put_double( /*GLubyte *, struct cray_double */ ); -#endif - -#ifndef _CRAY - -#ifdef __GLX_ALIGN64 -/* -** This can certainly be done better for a particular machine -** architecture! -*/ -#define __GLX_PUT_DOUBLE(offset,a) \ - __GLX_MEM_COPY(pc + offset, &a, 8) -#else -#define __GLX_PUT_DOUBLE(offset,a) \ - *((FLOAT64 *) (pc + offset)) = a -#endif - -#endif + do { \ + double __tmp = (a); \ + memcpy((pc + (offset)), &__tmp, 8); \ + } while (0) #define __GLX_PUT_CHAR_ARRAY(offset,a,alen) \ __GLX_MEM_COPY(pc + offset, a, alen * __GLX_SIZE_INT8) -#ifndef _CRAY #define __GLX_PUT_SHORT_ARRAY(offset,a,alen) \ __GLX_MEM_COPY(pc + offset, a, alen * __GLX_SIZE_INT16) @@ -220,24 +199,5 @@ extern void gl_put_double( /*GLubyte *, struct cray_double */ ); #define __GLX_PUT_DOUBLE_ARRAY(offset,a,alen) \ __GLX_MEM_COPY(pc + offset, a, alen * __GLX_SIZE_FLOAT64) -#else -#define __GLX_PUT_SHORT_ARRAY(offset,a,alen) \ - gl_put_short_array((GLubyte *)(pc + offset), a, alen * __GLX_SIZE_INT16) - -#define __GLX_PUT_LONG_ARRAY(offset,a,alen) \ - gl_put_long_array((GLubyte *)(pc + offset), (long *)a, alen * __GLX_SIZE_INT32) - -#define __GLX_PUT_FLOAT_ARRAY(offset,a,alen) \ - gl_put_float_array((GLubyte *)(pc + offset), (float *)a, alen * __GLX_SIZE_FLOAT32) - -#define __GLX_PUT_DOUBLE_ARRAY(offset,a,alen) \ - gl_put_double_array((GLubyte *)(pc + offset), (double *)a, alen * __GLX_SIZE_FLOAT64) - -extern gl_put_short_array(GLubyte *, short *, int); -extern gl_put_long_array(GLubyte *, long *, int); -extern gl_put_float_array(GLubyte *, float *, int); -extern gl_put_double_array(GLubyte *, double *, int); - -#endif /* _CRAY */ #endif /* !__GLX_packrender_h__ */