Re: [PATCH 3/5] wined3d: Implement WINED3DSIH_ROUND_NI in the GLSL shader backend.

2012-10-19 Thread Matteo Bruni
2012/10/19 Henri Verbeet :
> On 19 October 2012 15:20, Matteo Bruni  wrote:
>> 2012/10/18 Henri Verbeet :
>>> ---
>>>  dlls/wined3d/glsl_shader.c |3 ++-
>>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
>>> index 57119e1..993b547 100644
>>> --- a/dlls/wined3d/glsl_shader.c
>>> +++ b/dlls/wined3d/glsl_shader.c
>>> @@ -2530,6 +2530,7 @@ static void shader_glsl_map2gl(const struct 
>>> wined3d_shader_instruction *ins)
>>>  case WINED3DSIH_EXP: instruction = "exp2"; break;
>>>  case WINED3DSIH_DSX: instruction = "dFdx"; break;
>>>  case WINED3DSIH_DSY: instruction = "ycorrection.y * dFdy"; break;
>>> +case WINED3DSIH_ROUND_NI: instruction = "floor"; break;
>>
>> Hmm, does ROUND_NI really translate to floor() (as opposed to round())
>> or is that because round() is not supported in GLSL 1.20?
>> In the latter case maybe a FIXME would help.
>>
> ROUND_NI rounds toward -INF, which is what floor() does. You're
> probably thinking of ROUND_NE which would translate to roundEven().

Indeed...




Re: [PATCH 3/5] wined3d: Implement WINED3DSIH_ROUND_NI in the GLSL shader backend.

2012-10-19 Thread Henri Verbeet
On 19 October 2012 15:20, Matteo Bruni  wrote:
> 2012/10/18 Henri Verbeet :
>> ---
>>  dlls/wined3d/glsl_shader.c |3 ++-
>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
>> index 57119e1..993b547 100644
>> --- a/dlls/wined3d/glsl_shader.c
>> +++ b/dlls/wined3d/glsl_shader.c
>> @@ -2530,6 +2530,7 @@ static void shader_glsl_map2gl(const struct 
>> wined3d_shader_instruction *ins)
>>  case WINED3DSIH_EXP: instruction = "exp2"; break;
>>  case WINED3DSIH_DSX: instruction = "dFdx"; break;
>>  case WINED3DSIH_DSY: instruction = "ycorrection.y * dFdy"; break;
>> +case WINED3DSIH_ROUND_NI: instruction = "floor"; break;
>
> Hmm, does ROUND_NI really translate to floor() (as opposed to round())
> or is that because round() is not supported in GLSL 1.20?
> In the latter case maybe a FIXME would help.
>
ROUND_NI rounds toward -INF, which is what floor() does. You're
probably thinking of ROUND_NE which would translate to roundEven().




Re: [PATCH 3/5] wined3d: Implement WINED3DSIH_ROUND_NI in the GLSL shader backend.

2012-10-19 Thread Matteo Bruni
2012/10/18 Henri Verbeet :
> ---
>  dlls/wined3d/glsl_shader.c |3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
> index 57119e1..993b547 100644
> --- a/dlls/wined3d/glsl_shader.c
> +++ b/dlls/wined3d/glsl_shader.c
> @@ -2530,6 +2530,7 @@ static void shader_glsl_map2gl(const struct 
> wined3d_shader_instruction *ins)
>  case WINED3DSIH_EXP: instruction = "exp2"; break;
>  case WINED3DSIH_DSX: instruction = "dFdx"; break;
>  case WINED3DSIH_DSY: instruction = "ycorrection.y * dFdy"; break;
> +case WINED3DSIH_ROUND_NI: instruction = "floor"; break;

Hmm, does ROUND_NI really translate to floor() (as opposed to round())
or is that because round() is not supported in GLSL 1.20?
In the latter case maybe a FIXME would help.