[Mesa-dev] [PATCH v1] mesa: rotation of 0-vector

Brian Paul brianp at vmware.com
Wed Sep 12 14:44:29 UTC 2018


On 09/12/2018 07:30 AM, Sergii Romantsov wrote:
> Specification doesn't define behaviour for rotation of 0-vector.
> But khronos.org says that vector has to be normalized.
> As workaround assumed that for 0-vector x-position will be
> defined as 1.0f.
> 
> Bugzilla: https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.freedesktop.org%2Fshow_bug.cgi%3Fid%3D100960&data=02%7C01%7Cbrianp%40vmware.com%7Cfde139ec0f4448b8090d08d618b3f0ce%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C1%7C0%7C636723558454036605&sdata=IAlt%2FkpHJyb5JHRYaOTfhf5v9V7Xl5iQBNBdqe2PHQs%3D&reserved=0
> Signed-off-by: Sergii Romantsov <sergii.romantsov at globallogic.com>
> ---
>   src/mesa/main/matrix.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/src/mesa/main/matrix.c b/src/mesa/main/matrix.c
> index 8065a83..631b203 100644
> --- a/src/mesa/main/matrix.c
> +++ b/src/mesa/main/matrix.c
> @@ -415,6 +415,11 @@ _mesa_Rotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z )
>   
>      FLUSH_VERTICES(ctx, 0);
>      if (angle != 0.0F) {
> +      /* khronos.org says that ||( x,y,z )|| = 1 (if not, the GL will normalize this vector)
> +      * So that is kind of workaround for empty-vectors.
> +      * */

Comment style should be:

/* khronos.org says ...
  * So that ...
  */

You might also note the bug number in the code in case anyone wonders 
what app would hit this.


> +      if (x == 0 && y == 0 && z == 0)
> +         x = 1.0f;

You may as well use 0.0f in the test too, just to be sure no silly 
int/float/double conversion happens.

>         _math_matrix_rotate( ctx->CurrentStack->Top, angle, x, y, z);
>         ctx->NewState |= ctx->CurrentStack->DirtyFlag;
>      }
> 

-Brian



More information about the mesa-dev mailing list