1 --- slideshow/source/engine/OGLTrans/makefile.mk.toglst1~ 2008-07-07 21:07:47.067846691 +0200
2 +++ slideshow/source/engine/OGLTrans/makefile.mk 2008-07-07 21:17:07.477845168 +0200
3 @@ -51,6 +51,7 @@ ENABLE_EXCEPTIONS=TRUE
6 $(SLO)$/OGLTrans_TransitionImpl.obj \
7 + $(SLO)$/OGLTrans_Shaders.obj \
8 $(SLO)$/OGLTrans_TransitionerImpl.obj
11 --- slideshow/source/engine/OGLTrans/OGLTrans_Shaders.cxx.toglst1~ 2008-07-07 21:17:07.478845854 +0200
12 +++ slideshow/source/engine/OGLTrans/OGLTrans_Shaders.cxx 2008-07-07 21:17:07.478845854 +0200
14 +#include <osl/diagnose.hxx>
16 +#include "OGLTrans_Shaders.hxx"
21 +#include <GL/glxext.h>
24 +bool OGLShaders::cbInitialized = false;
26 +#ifdef GL_VERSION_2_0
28 +PFNGLCREATESHADERPROC OGLShaders::glCreateShader = NULL;
29 +PFNGLSHADERSOURCEPROC OGLShaders::glShaderSource = NULL;
30 +PFNGLCOMPILESHADERPROC OGLShaders::glCompileShader = NULL;
31 +PFNGLGETSHADERIVPROC OGLShaders::glGetShaderiv = NULL;
32 +PFNGLGETSHADERINFOLOGPROC OGLShaders::glGetShaderInfoLog = NULL;
33 +PFNGLDELETESHADERPROC OGLShaders::glDeleteShader = NULL;
34 +PFNGLCREATEPROGRAMPROC OGLShaders::glCreateProgram = NULL;
35 +PFNGLATTACHSHADERPROC OGLShaders::glAttachShader = NULL;
36 +PFNGLLINKPROGRAMPROC OGLShaders::glLinkProgram = NULL;
37 +PFNGLGETPROGRAMIVPROC OGLShaders::glGetProgramiv = NULL;
38 +PFNGLGETPROGRAMINFOLOGPROC OGLShaders::glGetProgramInfoLog = NULL;
39 +PFNGLUSEPROGRAMPROC OGLShaders::glUseProgram = NULL;
40 +PFNGLDELETEPROGRAMPROC OGLShaders::glDeleteProgram = NULL;
41 +PFNGLGETUNIFORMLOCATIONPROC OGLShaders::glGetUniformLocation = NULL;
42 +PFNGLUNIFORM1IPROC OGLShaders::glUniform1i = NULL;
43 +PFNGLUNIFORM1FPROC OGLShaders::glUniform1f = NULL;
46 +bool OGLShaders::Initialize()
48 +#ifdef GL_VERSION_2_0
49 + if( !cbInitialized ) {
50 + glCreateShader = (PFNGLCREATESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glCreateShader" );
51 + glShaderSource = (PFNGLSHADERSOURCEPROC) unx::glXGetProcAddress( (unsigned char *) "glShaderSource" );
52 + glCompileShader = (PFNGLCOMPILESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glCompileShader" );
53 + glGetShaderiv = (PFNGLGETSHADERIVPROC) unx::glXGetProcAddress( (unsigned char *) "glGetShaderiv" );
54 + glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) unx::glXGetProcAddress( (unsigned char *) "glGetShaderInfoLog" );
55 + glDeleteShader = (PFNGLDELETESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glDeleteShader" );
56 + glCreateProgram = (PFNGLCREATEPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glCreateProgram" );
57 + glAttachShader = (PFNGLATTACHSHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glAttachShader" );
58 + glLinkProgram = (PFNGLLINKPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glLinkProgram" );
59 + glGetProgramiv = (PFNGLGETPROGRAMIVPROC) unx::glXGetProcAddress( (unsigned char *) "glGetProgramiv" );
60 + glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) unx::glXGetProcAddress( (unsigned char *) "glGetProgramInfoLog" );
61 + glUseProgram = (PFNGLUSEPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glUseProgram" );
62 + glDeleteProgram = (PFNGLDELETEPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glDeleteProgram" );
63 + glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) unx::glXGetProcAddress( (unsigned char *) "glGetUniformLocation" );
64 + glUniform1i = (PFNGLUNIFORM1IPROC) unx::glXGetProcAddress( (unsigned char *) "glUniform1i" );
65 + glUniform1f = (PFNGLUNIFORM1FPROC) unx::glXGetProcAddress( (unsigned char *) "glUniform1f" );
66 + cbInitialized = true;
69 + return glCreateShader != NULL;
75 +GLuint OGLShaders::LinkProgram( const char *vertexShader, const char *fragmentShader )
77 +#ifdef GL_VERSION_2_0
81 + GLhandleARB vertexObject, fragmentObject, programObject;
82 + GLint vertexCompiled, fragmentCompiled, programLinked;
85 + vertexObject = glCreateShader( GL_VERTEX_SHADER );
86 + fragmentObject = glCreateShader( GL_FRAGMENT_SHADER );
87 + OSL_TRACE("checkpoint 1: shaders created (%d) vertex: %d fragment: %d", glGetError() == GL_NO_ERROR, vertexObject, fragmentObject );
90 + glShaderSource( vertexObject, 1, &vertexShader, NULL );
91 + glShaderSource( fragmentObject, 1, &fragmentShader, NULL );
93 + glCompileShader( vertexObject );
94 + glGetShaderInfoLog( vertexObject, sizeof( log ), NULL, log );
95 + OSL_TRACE("vertex compile log: %s", log);
96 + glGetShaderiv( vertexObject, GL_COMPILE_STATUS, &vertexCompiled );
97 + glCompileShader( fragmentObject );
98 + glGetShaderInfoLog( fragmentObject, sizeof( log ), NULL, log );
99 + OSL_TRACE("fragment compile log: %s", log);
100 + glGetShaderiv( fragmentObject, GL_COMPILE_STATUS, &fragmentCompiled );
102 + if( !vertexCompiled || !fragmentCompiled )
105 + OSL_TRACE("checkpoint 2: shaders compiled (%d)", glGetError() == GL_NO_ERROR);
107 + programObject = glCreateProgram();
108 + glAttachShader( programObject, vertexObject );
109 + glAttachShader( programObject, fragmentObject );
111 + glLinkProgram( programObject );
112 + glGetProgramInfoLog( programObject, sizeof( log ), NULL, log );
113 + OSL_TRACE("program link log: %s", log);
114 + glGetProgramiv( programObject, GL_LINK_STATUS, &programLinked );
116 + if( !programLinked )
119 + OSL_TRACE("checkpoint 3: program linked (%d)", glGetError() == GL_NO_ERROR);
121 + return programObject;
127 --- slideshow/source/engine/OGLTrans/OGLTrans_Shaders.hxx.toglst1~ 2008-07-07 21:17:07.479845702 +0200
128 +++ slideshow/source/engine/OGLTrans/OGLTrans_Shaders.hxx 2008-07-07 21:17:07.479845702 +0200
130 +#ifndef INCLUDED_OGLTRANS_SHADERS_HXX_
131 +#define INCLUDED_OGLTRANS_SHADERS_HXX_
133 +#define GL_GLEXT_PROTOTYPES 1
135 +#include <GL/glext.h>
138 + static bool Initialize();
139 + static bool cbInitialized;
143 + static GLuint LinkProgram( const char *vertexShader, const char *fragmentShader );
145 + /** GL shader functions
147 +#ifdef GL_VERSION_2_0
149 + static PFNGLCREATESHADERPROC glCreateShader;
150 + static PFNGLSHADERSOURCEPROC glShaderSource;
151 + static PFNGLCOMPILESHADERPROC glCompileShader;
152 + static PFNGLGETSHADERIVPROC glGetShaderiv;
153 + static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
154 + static PFNGLDELETESHADERPROC glDeleteShader;
156 + static PFNGLCREATEPROGRAMPROC glCreateProgram;
157 + static PFNGLATTACHSHADERPROC glAttachShader;
158 + static PFNGLLINKPROGRAMPROC glLinkProgram;
159 + static PFNGLGETPROGRAMIVPROC glGetProgramiv;
160 + static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
161 + static PFNGLUSEPROGRAMPROC glUseProgram;
162 + static PFNGLDELETEPROGRAMPROC glDeleteProgram;
164 + static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
165 + static PFNGLUNIFORM1IPROC glUniform1i;
166 + static PFNGLUNIFORM1FPROC glUniform1f;
171 --- slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx.toglst1~ 2008-07-07 21:16:28.811846488 +0200
172 +++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx 2008-07-07 21:17:07.481845328 +0200
173 @@ -181,6 +181,11 @@ public:
177 +// declare the static variables as some gcc versions have problems declaring them automaticaly
178 +bool OGLTransitionerImpl::cbBrokenTexturesATI;
179 +float OGLTransitionerImpl::cnGLVersion;
180 +bool OGLTransitionerImpl::cbMesa;
182 void OGLTransitionerImpl::initialize( const uno::Reference< presentation::XSlideShowView >& xView )
185 --- slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx.toglst1~ 2008-07-07 21:07:47.090846542 +0200
186 +++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx 2008-07-07 21:18:00.043847201 +0200
188 * for a copy of the LGPLv3 License.
190 ************************************************************************/
191 -#define GL_GLEXT_PROTOTYPES 1
192 -#include "OGLTrans_TransitionImpl.hxx"
194 +#include "OGLTrans_TransitionImpl.hxx"
195 +#include "OGLTrans_Shaders.hxx"
197 -#include <GL/glext.h>
201 @@ -50,17 +49,17 @@ void OGLTransitionImpl::clear()
203 #ifdef GL_VERSION_2_0
204 if( mProgramObject ) {
205 - glDeleteProgram( mProgramObject );
206 + OGLShaders::glDeleteProgram( mProgramObject );
210 if( mVertexObject ) {
211 - glDeleteShader( mVertexObject );
212 + OGLShaders::glDeleteShader( mVertexObject );
216 if( mFragmentObject ) {
217 - glDeleteShader( mFragmentObject );
218 + OGLShaders::glDeleteShader( mFragmentObject );
222 @@ -1015,55 +1014,6 @@ void OGLTransitionImpl::makeFadeSmoothly
223 mbUseMipMapLeaving = mbUseMipMapEntering = false;
226 -static GLuint linkProgram( const char *vertexShader, const char *fragmentShader )
228 -#ifdef GL_VERSION_2_0
229 - GLhandleARB vertexObject, fragmentObject, programObject;
230 - GLint vertexCompiled, fragmentCompiled, programLinked;
233 - vertexObject = glCreateShaderObjectARB( GL_VERTEX_SHADER_ARB );
234 - fragmentObject = glCreateShader( GL_FRAGMENT_SHADER );
235 - OSL_TRACE("checkpoint 1: shaders created (%d) vertex: %d fragment: %d", glGetError() == GL_NO_ERROR, vertexObject, fragmentObject );
238 - glShaderSourceARB( vertexObject, 1, &vertexShader, NULL );
239 - glShaderSourceARB( fragmentObject, 1, &fragmentShader, NULL );
241 - glCompileShader( vertexObject );
242 - glGetInfoLogARB( vertexObject, sizeof( log ), NULL, log );
243 - OSL_TRACE("vertex compile log: %s", log);
244 - glGetShaderiv( vertexObject, GL_COMPILE_STATUS, &vertexCompiled );
245 - glCompileShader( fragmentObject );
246 - glGetInfoLogARB( fragmentObject, sizeof( log ), NULL, log );
247 - OSL_TRACE("fragment compile log: %s", log);
248 - glGetShaderiv( fragmentObject, GL_COMPILE_STATUS, &fragmentCompiled );
250 - if( !vertexCompiled || !fragmentCompiled )
253 - OSL_TRACE("checkpoint 2: shaders compiled (%d)", glGetError() == GL_NO_ERROR);
255 - programObject = glCreateProgram();
256 - glAttachShader( programObject, vertexObject );
257 - glAttachShader( programObject, fragmentObject );
259 - glLinkProgram( programObject );
260 - glGetInfoLogARB( programObject, sizeof( log ), NULL, log );
261 - OSL_TRACE("program link log: %s", log);
262 - glGetProgramiv( programObject, GL_LINK_STATUS, &programLinked );
264 - if( !programLinked )
267 - OSL_TRACE("checkpoint 3: program linked (%d)", glGetError() == GL_NO_ERROR);
269 - return programObject;
275 static const char* basicVertexShader = "\n\
276 varying vec2 v_texturePosition;\n\
278 @@ -1193,11 +1143,11 @@ void OGLTransitionImpl::preparePermShade
280 #ifdef GL_VERSION_2_0
281 if( mProgramObject ) {
282 - glUseProgram( mProgramObject );
283 + OGLShaders::glUseProgram( mProgramObject );
285 - GLint location = glGetUniformLocation( mProgramObject, "leavingSlideTexture" );
286 + GLint location = OGLShaders::glGetUniformLocation( mProgramObject, "leavingSlideTexture" );
287 if( location != -1 ) {
288 - glUniform1i( location, 0 ); // texture unit 0
289 + OGLShaders::glUniform1i( location, 0 ); // texture unit 0
292 glActiveTexture(GL_TEXTURE1);
293 @@ -1205,14 +1155,14 @@ void OGLTransitionImpl::preparePermShade
294 initPermTexture( &maHelperTexture );
295 glActiveTexture(GL_TEXTURE0);
297 - location = glGetUniformLocation( mProgramObject, "permTexture" );
298 + location = OGLShaders::glGetUniformLocation( mProgramObject, "permTexture" );
299 if( location != -1 ) {
300 - glUniform1i( location, 1 ); // texture unit 1
301 + OGLShaders::glUniform1i( location, 1 ); // texture unit 1
304 - location = glGetUniformLocation( mProgramObject, "enteringSlideTexture" );
305 + location = OGLShaders::glGetUniformLocation( mProgramObject, "enteringSlideTexture" );
306 if( location != -1 ) {
307 - glUniform1i( location, 2 ); // texture unit 2
308 + OGLShaders::glUniform1i( location, 2 ); // texture unit 2
312 @@ -1220,7 +1170,7 @@ void OGLTransitionImpl::preparePermShade
314 void OGLTransitionImpl::prepareStatic( ::sal_Int32 /* glLeavingSlideTex */, ::sal_Int32 /* glEnteringSlideTex */ )
316 - mProgramObject = linkProgram( basicVertexShader, staticFragmentShader );
317 + mProgramObject = OGLShaders::LinkProgram( basicVertexShader, staticFragmentShader );
321 @@ -1232,16 +1182,16 @@ void OGLTransitionImpl::displaySlidesSha
323 #ifdef GL_VERSION_2_0
324 if( mProgramObject ) {
325 - GLint location = glGetUniformLocation( mProgramObject, "time" );
326 + GLint location = OGLShaders::glGetUniformLocation( mProgramObject, "time" );
327 if( location != -1 ) {
328 - glUniform1f( location, nTime );
329 + OGLShaders::glUniform1f( location, nTime );
334 glActiveTexture( GL_TEXTURE2 );
335 glBindTexture( GL_TEXTURE_2D, glEnteringSlideTex );
336 glActiveTexture( GL_TEXTURE0 );
339 displaySlide( nTime, glLeavingSlideTex, maLeavingSlidePrimitives, SlideWidthScale, SlideHeightScale );
341 @@ -1264,7 +1214,7 @@ void OGLTransitionImpl::makeStatic()
343 void OGLTransitionImpl::prepareDissolve( ::sal_Int32 /* glLeavingSlideTex */, ::sal_Int32 /* glEnteringSlideTex */ )
345 - mProgramObject = linkProgram( basicVertexShader, dissolveFragmentShader );
346 + mProgramObject = OGLShaders::LinkProgram( basicVertexShader, dissolveFragmentShader );