[Mesa-dev] [PATCH 6/6] mesa: remove DEG2RAD macro
Jose Fonseca
jfonseca at vmware.com
Wed Feb 25 11:21:43 PST 2015
On 24/02/15 23:30, Brian Paul wrote:
> ---
> src/mesa/main/imports.h | 8 --------
> src/mesa/main/light.c | 2 +-
> src/mesa/math/m_matrix.c | 4 ++--
> 3 files changed, 3 insertions(+), 11 deletions(-)
>
> diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
> index 356f0e1..d886427 100644
> --- a/src/mesa/main/imports.h
> +++ b/src/mesa/main/imports.h
> @@ -79,14 +79,6 @@ typedef union { GLfloat f; GLint i; GLuint u; } fi_type;
>
>
>
> -/**********************************************************************
> - * Math macros
> - */
> -
> -/* Degrees to radians conversion: */
> -#define DEG2RAD (M_PI/180.0)
> -
> -
> #if defined(_MSC_VER)
> #if _MSC_VER < 1800 /* Not req'd on VS2013 and above */
> #define strtoll(p, e, b) _strtoi64(p, e, b)
> diff --git a/src/mesa/main/light.c b/src/mesa/main/light.c
> index c4d3a53..4021dbe 100644
> --- a/src/mesa/main/light.c
> +++ b/src/mesa/main/light.c
> @@ -156,7 +156,7 @@ _mesa_light(struct gl_context *ctx, GLuint lnum, GLenum pname, const GLfloat *pa
> return;
> FLUSH_VERTICES(ctx, _NEW_LIGHT);
> light->SpotCutoff = params[0];
> - light->_CosCutoff = (GLfloat) (cos(light->SpotCutoff * DEG2RAD));
> + light->_CosCutoff = (GLfloat) (cos(light->SpotCutoff * M_PI / 180.0));
It might be worthwhile to add parenthesis around M_PI / 180.0.
I'm not sure the compiler will fold, due to C operator precedence, and
the fact that floating point operations when not being associative:
$ cat deg2rad.c
#include <math.h>
double deg2rad(double angle) {
return angle * M_PI / 180.0;
}
$ gcc -O3 -s -S -o - deg2rad.c
.file "deg2rad.c"
.section .text.unlikely,"ax", at progbits
.LCOLDB2:
.text
.LHOTB2:
.p2align 4,,15
.globl deg2rad
.type deg2rad, @function
deg2rad:
.LFB3:
.cfi_startproc
mulsd .LC0(%rip), %xmm0
divsd .LC1(%rip), %xmm0 <===================================
ret
.cfi_endproc
.LFE3:
.size deg2rad, .-deg2rad
.section .text.unlikely
.LCOLDE2:
.text
.LHOTE2:
.section .rodata.cst8,"aM", at progbits,8
.align 8
.LC0:
.long 1413754136
.long 1074340347
.align 8
.LC1:
.long 0
.long 1080459264
.ident "GCC: (Debian 4.9.1-19) 4.9.1"
.section .note.GNU-stack,"", at progbits
Otherwise series looks good to me.
Jose
> if (light->_CosCutoff < 0)
> light->_CosCutoff = 0;
> if (light->SpotCutoff != 180.0F)
> diff --git a/src/mesa/math/m_matrix.c b/src/mesa/math/m_matrix.c
> index 9d51021..0475a7a 100644
> --- a/src/mesa/math/m_matrix.c
> +++ b/src/mesa/math/m_matrix.c
> @@ -799,8 +799,8 @@ _math_matrix_rotate( GLmatrix *mat,
> GLfloat m[16];
> GLboolean optimized;
>
> - s = (GLfloat) sin( angle * DEG2RAD );
> - c = (GLfloat) cos( angle * DEG2RAD );
> + s = (GLfloat) sin( angle * M_PI / 180.0 );
> + c = (GLfloat) cos( angle * M_PI / 180.0 );
>
> memcpy(m, Identity, sizeof(GLfloat)*16);
> optimized = GL_FALSE;
>
More information about the mesa-dev
mailing list