[Mesa-dev] [PATCH] glsl: Use INFINITY instead of std::numeric_limits<float>::infinity().
Emil Velikov
emil.l.velikov at gmail.com
Thu Mar 19 10:22:43 PDT 2015
On 19/03/15 16:59, Jose Fonseca wrote:
> On 19/03/15 16:51, Emil Velikov wrote:
>> On 19/03/15 15:30, Jose Fonseca wrote:
>>> On 18/03/15 17:18, Matt Turner wrote:
>>>> ---
>>>> src/glsl/builtin_functions.cpp | 4 ++--
>>>> src/glsl/s_expression.cpp | 4 ++--
>>>> 2 files changed, 4 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/src/glsl/builtin_functions.cpp
>>>> b/src/glsl/builtin_functions.cpp
>>>> index c607572..524b8d6 100644
>>>> --- a/src/glsl/builtin_functions.cpp
>>>> +++ b/src/glsl/builtin_functions.cpp
>>>> @@ -60,7 +60,7 @@
>>>> #include "ir_builder.h"
>>>> #include "glsl_parser_extras.h"
>>>> #include "program/prog_instruction.h"
>>>> -#include <limits>
>>>> +#include <math.h>
>>>>
>>>> #define M_PIf ((float) M_PI)
>>>> #define M_PI_2f ((float) M_PI_2)
>>>> @@ -3215,7 +3215,7 @@
>>>> builtin_builder::_isinf(builtin_available_predicate avail, const
>>>> glsl_type *type
>>>>
>>>> ir_constant_data infinities;
>>>> for (int i = 0; i < type->vector_elements; i++) {
>>>> - infinities.f[i] = std::numeric_limits<float>::infinity();
>>>> + infinities.f[i] = INFINITY;
>>>> }
>>>>
>>>> body.emit(ret(equal(abs(x), imm(type, infinities))));
>>>> diff --git a/src/glsl/s_expression.cpp b/src/glsl/s_expression.cpp
>>>> index 7eaa491..f82e155 100644
>>>> --- a/src/glsl/s_expression.cpp
>>>> +++ b/src/glsl/s_expression.cpp
>>>> @@ -23,8 +23,8 @@
>>>> */
>>>>
>>>> #include <assert.h>
>>>> -#include <limits>
>>>> #include <stdio.h>
>>>> +#include <math.h>
>>>> #include "s_expression.h"
>>>>
>>>> s_symbol::s_symbol(const char *str, size_t n)
>>>> @@ -70,7 +70,7 @@ read_atom(void *ctx, const char *&src, char
>>>> *&symbol_buffer)
>>>> // requires strtof to parse '+INF' as +Infinity, but we still
>>>> support some
>>>> // non-C99-compliant compilers (e.g. MSVC).
>>>> if (n == 4 && strncmp(src, "+INF", 4) == 0) {
>>>> - expr = new(ctx) s_float(std::numeric_limits<float>::infinity());
>>>> + expr = new(ctx) s_float(INFINITY);
>>>> } else {
>>>> // Check if the atom is a number.
>>>> char *float_end = NULL;
>>>>
>>>
>>> FWIW, std::numeric_limits is actually the "C++ way" of doing this, but
>>> given we have a mixture of C99 in Mesa, using INFIFITY everywhere is
>>> equally fine. Either way, there should be no problems for MSVC.
>>>
>> Shouldn't one include c99_math.h instead of the normal header ?
>
> Ah, yes indeed.
>
Seems like I've dropped mesa-dev from the CC list :-\
Adding it back.
Emil
More information about the mesa-dev
mailing list