5 replies to this topic
#1 Members - Reputation: 274
Posted 31 March 2012 - 06:42 PM
I tend to write GLSL code like this:
>>>
const vec2 somethingConstant = vec2( 2.0 );
...
bla = blu * somethingConstant;
<<<
Hence I move constants out to a common place using the const keyword and using them even if they are used only one. Now with ATI and texelFetchOffset I ran into a crash when I used such a const constant as offset. Using it directly it worked without crashing (hence texelFetchOffset( sampler, tc, lod, ivec2(0,1) ) for example). There I had to turn the constant inline to prevent the crash. Hence the above example would look like this in the inline version:
>>>
bla = blu * vec2( 2.0 );
<<<
Which version is better? Is it better to do all "const" or all "inline"? Does one version require more ALU instructions or are they more or less equal? Is one more "resistent" towards broken compilers like in the above mentioned ATI case?
>>>
const vec2 somethingConstant = vec2( 2.0 );
...
bla = blu * somethingConstant;
<<<
Hence I move constants out to a common place using the const keyword and using them even if they are used only one. Now with ATI and texelFetchOffset I ran into a crash when I used such a const constant as offset. Using it directly it worked without crashing (hence texelFetchOffset( sampler, tc, lod, ivec2(0,1) ) for example). There I had to turn the constant inline to prevent the crash. Hence the above example would look like this in the inline version:
>>>
bla = blu * vec2( 2.0 );
<<<
Which version is better? Is it better to do all "const" or all "inline"? Does one version require more ALU instructions or are they more or less equal? Is one more "resistent" towards broken compilers like in the above mentioned ATI case?
Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine
Sponsor:
#2 Members - Reputation: 785
Posted 31 March 2012 - 07:30 PM
That's not called an inline. It is called a immediate value. The compiler may or may not make it as part of the instruction. If it can't, then it would put the value in a register and reference it.
As for the crash, a driver should never crash.
You can post your problem at the OpenGL Driver forum
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=13&page=1
As for the crash, a driver should never crash.
You can post your problem at the OpenGL Driver forum
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=13&page=1
Sig: http://glhlib.sourceforge.net
an open source GLU replacement library. Much more modern than GLU.
float matrix[16], inverse_matrix[16];
glhLoadIdentityf2(matrix);
glhTranslatef2(matrix, 0.0, 0.0, 5.0);
glhRotateAboutXf2(matrix, angleInRadians);
glhScalef2(matrix, 1.0, 1.0, -1.0);
glhQuickInvertMatrixf2(matrix, inverse_matrix);
glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);
an open source GLU replacement library. Much more modern than GLU.
float matrix[16], inverse_matrix[16];
glhLoadIdentityf2(matrix);
glhTranslatef2(matrix, 0.0, 0.0, 5.0);
glhRotateAboutXf2(matrix, angleInRadians);
glhScalef2(matrix, 1.0, 1.0, -1.0);
glhQuickInvertMatrixf2(matrix, inverse_matrix);
glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);
#3 Members - Reputation: 274
Posted 01 April 2012 - 04:09 AM
So both versions should be the same or does one always use a register and the other not?That's not called an inline. It is called a immediate value. The compiler may or may not make it as part of the instruction. If it can't, then it would put the value in a register and reference it.
It's a known bug over there but ATI doesn't give a damn about it nor doesn't want to fix it so hack-time it is.As for the crash, a driver should never crash.
You can post your problem at the OpenGL Driver forum
http://www.opengl.or...Board=13&page=1
Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine
#4 Members - Reputation: 274
Posted 01 April 2012 - 04:10 AM
nor does it want to fit it...(...) it nor doesn't want to fix it (...)
why the hell is there no edit button anymore? How I hate "verschlimmbesserungen" U_U
Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine






