ooo-build r11882 - in trunk: . patches/src680
- From: rodo svn gnome org
- To: svn-commits-list gnome org
- Subject: ooo-build r11882 - in trunk: . patches/src680
- Date: Wed, 12 Mar 2008 13:30:44 +0000 (GMT)
Author: rodo
Date: Wed Mar 12 13:30:44 2008
New Revision: 11882
URL: http://svn.gnome.org/viewvc/ooo-build?rev=11882&view=rev
Log:
2008-03-12 Radek Doulik <rodo novell com>
* patches/src680/apply: added transogl-shader-transitions-1.diff
with changes described below
* build/ooh680-m10/slideshow/source/engine/OGLTrans/OGLTrans_Shaders.[ch]xx:
new Shaders class, contains shader functions, queried from OpenGL
at runtime, few helper methods
* build/ooh680-m10/slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx:
declare static OGLTransitionerImpl variables to fix build problems
with older gcc
Added:
trunk/patches/src680/transogl-shader-transitions-1.diff
Modified:
trunk/ChangeLog
trunk/patches/src680/apply
Modified: trunk/patches/src680/apply
==============================================================================
--- trunk/patches/src680/apply (original)
+++ trunk/patches/src680/apply Wed Mar 12 13:30:44 2008
@@ -1806,6 +1806,7 @@
transogl-vsync.diff
transogl-shader-transitions.diff
transogl-mesa-fallback.diff
+transogl-shader-transitions-1.diff
[ Experimental ]
# sal_uInt32 -> sal_uIntPtr for events on some places
Added: trunk/patches/src680/transogl-shader-transitions-1.diff
==============================================================================
--- (empty file)
+++ trunk/patches/src680/transogl-shader-transitions-1.diff Wed Mar 12 13:30:44 2008
@@ -0,0 +1,340 @@
+diff -Nrup /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/makefile.mk slideshow/source/engine/OGLTrans/makefile.mk
+--- /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/makefile.mk 2008-03-11 20:20:51.000000000 +0100
++++ slideshow/source/engine/OGLTrans/makefile.mk 2008-03-12 13:42:32.000000000 +0100
+@@ -55,6 +55,7 @@ ENABLE_EXCEPTIONS=TRUE
+
+ SLOFILES = \
+ $(SLO)$/OGLTrans_TransitionImpl.obj \
++ $(SLO)$/OGLTrans_Shaders.obj \
+ $(SLO)$/OGLTrans_TransitionerImpl.obj
+
+ DLLPRE=
+diff -Nrup /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx
+--- /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx 2008-03-11 20:22:53.000000000 +0100
++++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionerImpl.cxx 2008-03-12 12:43:56.000000000 +0100
+@@ -167,6 +167,11 @@ public:
+ static bool cbMesa;
+ };
+
++// declare the static variables as some gcc versions have problems declaring them automaticaly
++bool OGLTransitionerImpl::cbBrokenTexturesATI;
++float OGLTransitionerImpl::cnGLVersion;
++bool OGLTransitionerImpl::cbMesa;
++
+ void OGLTransitionerImpl::initialize( const uno::Reference< presentation::XSlideShowView >& xView )
+ {
+ // not thread safe
+diff -Nrup /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx
+--- /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx 2008-03-11 20:20:51.000000000 +0100
++++ slideshow/source/engine/OGLTrans/OGLTrans_TransitionImpl.cxx 2008-03-12 13:42:15.000000000 +0100
+@@ -32,10 +32,10 @@
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+-#define GL_GLEXT_PROTOTYPES 1
++
+ #include "OGLTrans_TransitionImpl.hxx"
++#include "OGLTrans_Shaders.hxx"
+ #include <GL/gl.h>
+-#include <GL/glext.h>
+ #include <math.h>
+
+ void OGLTransitionImpl::clear()
+@@ -53,17 +53,17 @@ void OGLTransitionImpl::clear()
+
+ #ifdef GL_VERSION_2_0
+ if( mProgramObject ) {
+- glDeleteProgram( mProgramObject );
++ OGLShaders::glDeleteProgram( mProgramObject );
+ mProgramObject = 0;
+ }
+
+ if( mVertexObject ) {
+- glDeleteShader( mVertexObject );
++ OGLShaders::glDeleteShader( mVertexObject );
+ mVertexObject = 0;
+ }
+
+ if( mFragmentObject ) {
+- glDeleteShader( mFragmentObject );
++ OGLShaders::glDeleteShader( mFragmentObject );
+ mFragmentObject = 0;
+ }
+ #endif
+@@ -1017,55 +1017,6 @@ void OGLTransitionImpl::makeFadeSmoothly
+ mbUseMipMapLeaving = mbUseMipMapEntering = false;
+ }
+
+-static GLuint linkProgram( const char *vertexShader, const char *fragmentShader )
+-{
+-#ifdef GL_VERSION_2_0
+- GLhandleARB vertexObject, fragmentObject, programObject;
+- GLint vertexCompiled, fragmentCompiled, programLinked;
+- char log[1024];
+-
+- vertexObject = glCreateShaderObjectARB( GL_VERTEX_SHADER_ARB );
+- fragmentObject = glCreateShader( GL_FRAGMENT_SHADER );
+- OSL_TRACE("checkpoint 1: shaders created (%d) vertex: %d fragment: %d", glGetError() == GL_NO_ERROR, vertexObject, fragmentObject );
+-
+-
+- glShaderSourceARB( vertexObject, 1, &vertexShader, NULL );
+- glShaderSourceARB( fragmentObject, 1, &fragmentShader, NULL );
+-
+- glCompileShader( vertexObject );
+- glGetInfoLogARB( vertexObject, sizeof( log ), NULL, log );
+- OSL_TRACE("vertex compile log: %s", log);
+- glGetShaderiv( vertexObject, GL_COMPILE_STATUS, &vertexCompiled );
+- glCompileShader( fragmentObject );
+- glGetInfoLogARB( fragmentObject, sizeof( log ), NULL, log );
+- OSL_TRACE("fragment compile log: %s", log);
+- glGetShaderiv( fragmentObject, GL_COMPILE_STATUS, &fragmentCompiled );
+-
+- if( !vertexCompiled || !fragmentCompiled )
+- return 0;
+-
+- OSL_TRACE("checkpoint 2: shaders compiled (%d)", glGetError() == GL_NO_ERROR);
+-
+- programObject = glCreateProgram();
+- glAttachShader( programObject, vertexObject );
+- glAttachShader( programObject, fragmentObject );
+-
+- glLinkProgram( programObject );
+- glGetInfoLogARB( programObject, sizeof( log ), NULL, log );
+- OSL_TRACE("program link log: %s", log);
+- glGetProgramiv( programObject, GL_LINK_STATUS, &programLinked );
+-
+- if( !programLinked )
+- return 0;
+-
+- OSL_TRACE("checkpoint 3: program linked (%d)", glGetError() == GL_NO_ERROR);
+-
+- return programObject;
+-#else
+- return 0;
+-#endif
+-}
+-
+ static const char* basicVertexShader = "\n\
+ varying vec2 v_texturePosition;\n\
+ \n\
+@@ -1195,11 +1146,11 @@ void OGLTransitionImpl::preparePermShade
+ {
+ #ifdef GL_VERSION_2_0
+ if( mProgramObject ) {
+- glUseProgram( mProgramObject );
++ OGLShaders::glUseProgram( mProgramObject );
+
+- GLint location = glGetUniformLocation( mProgramObject, "leavingSlideTexture" );
++ GLint location = OGLShaders::glGetUniformLocation( mProgramObject, "leavingSlideTexture" );
+ if( location != -1 ) {
+- glUniform1i( location, 0 ); // texture unit 0
++ OGLShaders::glUniform1i( location, 0 ); // texture unit 0
+ }
+
+ glActiveTexture(GL_TEXTURE1);
+@@ -1207,14 +1158,14 @@ void OGLTransitionImpl::preparePermShade
+ initPermTexture( &maHelperTexture );
+ glActiveTexture(GL_TEXTURE0);
+
+- location = glGetUniformLocation( mProgramObject, "permTexture" );
++ location = OGLShaders::glGetUniformLocation( mProgramObject, "permTexture" );
+ if( location != -1 ) {
+- glUniform1i( location, 1 ); // texture unit 1
++ OGLShaders::glUniform1i( location, 1 ); // texture unit 1
+ }
+
+- location = glGetUniformLocation( mProgramObject, "enteringSlideTexture" );
++ location = OGLShaders::glGetUniformLocation( mProgramObject, "enteringSlideTexture" );
+ if( location != -1 ) {
+- glUniform1i( location, 2 ); // texture unit 2
++ OGLShaders::glUniform1i( location, 2 ); // texture unit 2
+ }
+ }
+ #endif
+@@ -1222,7 +1173,7 @@ void OGLTransitionImpl::preparePermShade
+
+ void OGLTransitionImpl::prepareStatic( ::sal_Int32 /* glLeavingSlideTex */, ::sal_Int32 /* glEnteringSlideTex */ )
+ {
+- mProgramObject = linkProgram( basicVertexShader, staticFragmentShader );
++ mProgramObject = OGLShaders::LinkProgram( basicVertexShader, staticFragmentShader );
+
+ preparePermShader();
+ }
+@@ -1234,9 +1185,9 @@ void OGLTransitionImpl::displaySlidesSha
+
+ #ifdef GL_VERSION_2_0
+ if( mProgramObject ) {
+- GLint location = glGetUniformLocation( mProgramObject, "time" );
++ GLint location = OGLShaders::glGetUniformLocation( mProgramObject, "time" );
+ if( location != -1 ) {
+- glUniform1f( location, nTime );
++ OGLShaders::glUniform1f( location, nTime );
+ }
+ }
+ #endif
+@@ -1266,7 +1217,7 @@ void OGLTransitionImpl::makeStatic()
+
+ void OGLTransitionImpl::prepareDissolve( ::sal_Int32 /* glLeavingSlideTex */, ::sal_Int32 /* glEnteringSlideTex */ )
+ {
+- mProgramObject = linkProgram( basicVertexShader, dissolveFragmentShader );
++ mProgramObject = OGLShaders::LinkProgram( basicVertexShader, dissolveFragmentShader );
+
+ preparePermShader();
+ }
+diff -Nrup /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/OGLTrans_TransitionShaders.cxx slideshow/source/engine/OGLTrans/OGLTrans_TransitionShaders.cxx
+--- /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/OGLTrans_TransitionShaders.cxx 1970-01-01 01:00:00.000000000 +0100
++++ slideshow/source/engine/OGLTrans/OGLTrans_Shaders.cxx 2008-03-12 13:46:05.000000000 +0100
+@@ -0,0 +1,109 @@
++#include <osl/diagnose.hxx>
++
++#include "OGLTrans_Shaders.hxx"
++
++namespace unx
++{
++#include <GL/glx.h>
++#include <GL/glxext.h>
++}
++
++namespace OGLShaders {
++
++bool cbInitialized = false;
++
++PFNGLCREATESHADERPROC glCreateShader = NULL;
++PFNGLSHADERSOURCEPROC glShaderSource = NULL;
++PFNGLCOMPILESHADERPROC glCompileShader = NULL;
++PFNGLGETSHADERIVPROC glGetShaderiv = NULL;
++PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog = NULL;
++PFNGLDELETESHADERPROC glDeleteShader = NULL;
++PFNGLCREATEPROGRAMPROC glCreateProgram = NULL;
++PFNGLATTACHSHADERPROC glAttachShader = NULL;
++PFNGLLINKPROGRAMPROC glLinkProgram = NULL;
++PFNGLGETPROGRAMIVPROC glGetProgramiv = NULL;
++PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog = NULL;
++PFNGLUSEPROGRAMPROC glUseProgram = NULL;
++PFNGLDELETEPROGRAMPROC glDeleteProgram = NULL;
++PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation = NULL;
++PFNGLUNIFORM1IPROC glUniform1i = NULL;
++PFNGLUNIFORM1FPROC glUniform1f = NULL;
++
++bool Initialize()
++{
++ if( !cbInitialized ) {
++ glCreateShader = (PFNGLCREATESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glCreateShader" );
++ glShaderSource = (PFNGLSHADERSOURCEPROC) unx::glXGetProcAddress( (unsigned char *) "glShaderSource" );
++ glCompileShader = (PFNGLCOMPILESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glCompileShader" );
++ glGetShaderiv = (PFNGLGETSHADERIVPROC) unx::glXGetProcAddress( (unsigned char *) "glGetShaderiv" );
++ glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) unx::glXGetProcAddress( (unsigned char *) "glGetShaderInfoLog" );
++ glDeleteShader = (PFNGLDELETESHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glDeleteShader" );
++ glCreateProgram = (PFNGLCREATEPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glCreateProgram" );
++ glAttachShader = (PFNGLATTACHSHADERPROC) unx::glXGetProcAddress( (unsigned char *) "glAttachShader" );
++ glLinkProgram = (PFNGLLINKPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glLinkProgram" );
++ glGetProgramiv = (PFNGLGETPROGRAMIVPROC) unx::glXGetProcAddress( (unsigned char *) "glGetProgramiv" );
++ glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) unx::glXGetProcAddress( (unsigned char *) "glGetProgramInfoLog" );
++ glUseProgram = (PFNGLUSEPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glUseProgram" );
++ glDeleteProgram = (PFNGLDELETEPROGRAMPROC) unx::glXGetProcAddress( (unsigned char *) "glDeleteProgram" );
++ glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) unx::glXGetProcAddress( (unsigned char *) "glGetUniformLocation" );
++ glUniform1i = (PFNGLUNIFORM1IPROC) unx::glXGetProcAddress( (unsigned char *) "glUniform1i" );
++ glUniform1f = (PFNGLUNIFORM1FPROC) unx::glXGetProcAddress( (unsigned char *) "glUniform1f" );
++
++ cbInitialized = true;
++ }
++
++ return glCreateShader != NULL;
++}
++
++GLuint LinkProgram( const char *vertexShader, const char *fragmentShader )
++{
++#ifdef GL_VERSION_2_0
++ if( !Initialize() )
++ return 0;
++
++ GLhandleARB vertexObject, fragmentObject, programObject;
++ GLint vertexCompiled, fragmentCompiled, programLinked;
++ char log[1024];
++
++ vertexObject = glCreateShader( GL_VERTEX_SHADER );
++ fragmentObject = glCreateShader( GL_FRAGMENT_SHADER );
++ OSL_TRACE("checkpoint 1: shaders created (%d) vertex: %d fragment: %d", glGetError() == GL_NO_ERROR, vertexObject, fragmentObject );
++
++
++ glShaderSource( vertexObject, 1, &vertexShader, NULL );
++ glShaderSource( fragmentObject, 1, &fragmentShader, NULL );
++
++ glCompileShader( vertexObject );
++ glGetShaderInfoLog( vertexObject, sizeof( log ), NULL, log );
++ OSL_TRACE("vertex compile log: %s", log);
++ glGetShaderiv( vertexObject, GL_COMPILE_STATUS, &vertexCompiled );
++ glCompileShader( fragmentObject );
++ glGetShaderInfoLog( fragmentObject, sizeof( log ), NULL, log );
++ OSL_TRACE("fragment compile log: %s", log);
++ glGetShaderiv( fragmentObject, GL_COMPILE_STATUS, &fragmentCompiled );
++
++ if( !vertexCompiled || !fragmentCompiled )
++ return 0;
++
++ OSL_TRACE("checkpoint 2: shaders compiled (%d)", glGetError() == GL_NO_ERROR);
++
++ programObject = glCreateProgram();
++ glAttachShader( programObject, vertexObject );
++ glAttachShader( programObject, fragmentObject );
++
++ glLinkProgram( programObject );
++ glGetProgramInfoLog( programObject, sizeof( log ), NULL, log );
++ OSL_TRACE("program link log: %s", log);
++ glGetProgramiv( programObject, GL_LINK_STATUS, &programLinked );
++
++ if( !programLinked )
++ return 0;
++
++ OSL_TRACE("checkpoint 3: program linked (%d)", glGetError() == GL_NO_ERROR);
++
++ return programObject;
++#else
++ return 0;
++#endif
++}
++}
+diff -Nrup /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/OGLTrans_TransitionShaders.hxx slideshow/source/engine/OGLTrans/OGLTrans_TransitionShaders.hxx
+--- /net/rychlik/home/rodo/svn/ooo-build-1/build/ooh680-m9/slideshow/source/engine/OGLTrans/OGLTrans_TransitionShaders.hxx 1970-01-01 01:00:00.000000000 +0100
++++ slideshow/source/engine/OGLTrans/OGLTrans_Shaders.hxx 2008-03-12 13:46:17.000000000 +0100
+@@ -0,0 +1,40 @@
++#ifndef INCLUDED_OGLTRANS_SHADERS_HXX_
++#define INCLUDED_OGLTRANS_SHADERS_HXX_
++
++#include <GL/gl.h>
++#include <GL/glext.h>
++
++class OGLShaders {
++ static bool Initialize();
++ static bool cbInitialized;
++
++public:
++
++ static GLuint LinkProgram( const char *vertexShader, const char *fragmentShader );
++
++ /** GL shader functions
++ */
++#ifdef GL_VERSION_2_0
++
++ static PFNGLCREATESHADERPROC glCreateShader;
++ static PFNGLSHADERSOURCEPROC glShaderSource;
++ static PFNGLCOMPILESHADERPROC glCompileShader;
++ static PFNGLGETSHADERIVPROC glGetShaderiv;
++ static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
++ static PFNGLDELETESHADERPROC glDeleteShader;
++
++ static PFNGLCREATEPROGRAMPROC glCreateProgram;
++ static PFNGLATTACHSHADERPROC glAttachShader;
++ static PFNGLLINKPROGRAMPROC glLinkProgram;
++ static PFNGLGETPROGRAMIVPROC glGetProgramiv;
++ static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
++ static PFNGLUSEPROGRAMPROC glUseProgram;
++ static PFNGLDELETEPROGRAMPROC glDeleteProgram;
++
++ static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
++ static PFNGLUNIFORM1IPROC glUniform1i;
++ static PFNGLUNIFORM1FPROC glUniform1f;
++#endif
++};
++
++#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]