diff options
-rw-r--r-- | source/blender/editors/include/BIF_gl.h | 27 | ||||
-rw-r--r-- | source/blender/gpu/GPU_matrix.h | 41 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_matrix.c | 1 |
3 files changed, 42 insertions, 27 deletions
diff --git a/source/blender/editors/include/BIF_gl.h b/source/blender/editors/include/BIF_gl.h index 218bb4b5219..3db9cc8c953 100644 --- a/source/blender/editors/include/BIF_gl.h +++ b/source/blender/editors/include/BIF_gl.h @@ -48,33 +48,6 @@ * */ void cpack(unsigned int x); -#ifdef WITH_GL_PROFILE_COMPAT -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) -# define glMultMatrixf(x) \ - glMultMatrixf(_Generic((x), \ - float *: (float *)(x), \ - float [16]: (float *)(x), \ - float (*)[4]: (float *)(x), \ - float [4][4]: (float *)(x), \ - const float *: (float *)(x), \ - const float [16]: (float *)(x), \ - const float (*)[4]: (float *)(x), \ - const float [4][4]: (float *)(x)) \ -) -# define glLoadMatrixf(x) \ - glLoadMatrixf(_Generic((x), \ - float *: (float *)(x), \ - float [16]: (float *)(x), \ - float (*)[4]: (float *)(x), \ - float [4][4]: (float *)(x)) \ -) -#else -# define glMultMatrixf(x) glMultMatrixf((float *)(x)) -# define glLoadMatrixf(x) glLoadMatrixf((float *)(x)) -#endif /* C11 */ -#endif /* WITH_GL_PROFILE_COMPAT */ - - /* hacking pointsize and linewidth */ #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) # define glPointSize(f) glPointSize(U.pixelsize * _Generic((f), double: (float)(f), default: (f))) diff --git a/source/blender/gpu/GPU_matrix.h b/source/blender/gpu/GPU_matrix.h index 5af8e69a693..dd65d39822c 100644 --- a/source/blender/gpu/GPU_matrix.h +++ b/source/blender/gpu/GPU_matrix.h @@ -143,4 +143,45 @@ bool gpuMatricesDirty(void); /* since last bind */ } #endif + +#ifndef SUPPRESS_GENERIC_MATRIX_API +/* make matrix inputs generic, to avoid warnings */ +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +# define gpuMultMatrix3D(x) \ + gpuMultMatrix3D(_Generic((x), \ + float *: (const float (*)[4])(x), \ + float [16]: (const float (*)[4])(x), \ + float (*)[4]: (const float (*)[4])(x), \ + float [4][4]: (const float (*)[4])(x), \ + const float *: (const float (*)[4])(x), \ + const float [16]: (const float (*)[4])(x), \ + const float (*)[4]: (const float (*)[4])(x), \ + const float [4][4]: (const float (*)[4])(x)) \ +) +# define gpuLoadMatrix3D(x) \ + gpuLoadMatrix3D(_Generic((x), \ + float *: (const float (*)[4])(x), \ + float [16]: (const float (*)[4])(x), \ + float (*)[4]: (const float (*)[4])(x), \ + float [4][4]: (const float (*)[4])(x), \ + const float *: (const float (*)[4])(x), \ + const float [16]: (const float (*)[4])(x), \ + const float (*)[4]: (const float (*)[4])(x), \ + const float [4][4]: (const float (*)[4])(x)) \ +) +/* TODO: finish this in a simpler way --^ */ +#else +# define gpuMultMatrix3D(x) gpuMultMatrix3D((const float (*)[4])(x)) +# define gpuLoadMatrix3D(x) gpuLoadMatrix3D((const float (*)[4])(x)) + +# define gpuMultMatrix2D(x) gpuMultMatrix2D((const float (*)[3])(x)) +# define gpuLoadMatrix2D(x) gpuLoadMatrix2D((const float (*)[3])(x)) + +# define gpuGetModelViewMatrix3D(x) gpuGetModelViewMatrix3D((float (*)[4])(x)) +# define gpuGetProjectionMatrix3D(x) gpuGetProjectionMatrix3D((float (*)[4])(x)) +# define gpuGetModelViewProjectionMatrix3D(x) gpuGetModelViewProjectionMatrix3D((float (*)[4])(x)) +# define gpuGetNormalMatrix(x) gpuGetNormalMatrix((float (*)[3])(x)) +# define gpuGetNormalMatrixInverse(x) gpuGetNormalMatrixInverse((float (*)[3])(x)) +#endif /* C11 */ +#endif /* SUPPRESS_GENERIC_MATRIX_API */ #endif /* GPU_MATRIX_H */ diff --git a/source/blender/gpu/intern/gpu_matrix.c b/source/blender/gpu/intern/gpu_matrix.c index 1cdef0d40f3..cbef2d7373e 100644 --- a/source/blender/gpu/intern/gpu_matrix.c +++ b/source/blender/gpu/intern/gpu_matrix.c @@ -29,6 +29,7 @@ * \ingroup gpu */ +#define SUPPRESS_GENERIC_MATRIX_API #include "GPU_matrix.h" #include "BLI_math_matrix.h" |