rendered paste bodydiff --git a/include/compiz-core.h b/include/compiz-core.h
index 9e4e29f..1ebbc99 100644
--- a/include/compiz-core.h
+++ b/include/compiz-core.h
@@ -28,7 +28,7 @@
#include <compiz-plugin.h>
-#define CORE_ABIVERSION 20080401
+#define CORE_ABIVERSION 20080408
#include <stdio.h>
#include <sys/time.h>
@@ -1824,6 +1824,9 @@ typedef void (*GLProgramParameter4fProc) (GLenum target,
GLfloat y,
GLfloat z,
GLfloat w);
+typedef void (*GLGetProgramivProc) (GLenum target,
+ GLenum pname,
+ int *params);
typedef void (*GLGenFramebuffersProc) (GLsizei n,
GLuint *framebuffers);
@@ -2179,6 +2182,7 @@ struct _CompScreen {
GLProgramStringProc programString;
GLProgramParameter4fProc programEnvParameter4f;
GLProgramParameter4fProc programLocalParameter4f;
+ GLGetProgramivProc getProgramiv;
GLGenFramebuffersProc genFramebuffers;
GLDeleteFramebuffersProc deleteFramebuffers;
diff --git a/plugins/blur.c b/plugins/blur.c
index 620a5fa..faa3185 100644
--- a/plugins/blur.c
+++ b/plugins/blur.c
@@ -2944,6 +2944,40 @@ blurInitScreen (CompPlugin *p,
else
bs->alphaBlur = FALSE;
+ if (s->fragmentProgram)
+ {
+ int tmp[4];
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_INSTRUCTIONS_ARB, tmp);
+ printf("Max instructions : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_TEMPORARIES_ARB, tmp);
+ printf("Max temporaries : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_PARAMETERS_ARB, tmp);
+ printf("Max parameters : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_ATTRIBS_ARB, tmp);
+ printf("Max attribs : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB, tmp);
+ printf("Max alu instr. : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB, tmp);
+ printf("Max tex instr. : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB, tmp);
+ printf("Max tex indirect : %d\n", tmp[0]);
+
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB, tmp);
+ printf("Native Max instructions : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB, tmp);
+ printf("Native Max temporaries : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB, tmp);
+ printf("Native Max parameters : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB, tmp);
+ printf("Native Max attribs : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB, tmp);
+ printf("Native Max alu instr. : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB, tmp);
+ printf("Native Max tex instr. : %d\n", tmp[0]);
+ s->getProgramiv (GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB, tmp);
+ printf("Native Max tex indirect : %d\n", tmp[0]);
+ }
+
WRAP (bs, s, preparePaintScreen, blurPreparePaintScreen);
WRAP (bs, s, donePaintScreen, blurDonePaintScreen);
WRAP (bs, s, paintOutput, blurPaintOutput);
diff --git a/src/screen.c b/src/screen.c
index a033da5..6b91423 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2026,13 +2026,16 @@ addScreen (CompDisplay *display,
getProcAddress (s, "glProgramEnvParameter4fARB");
s->programLocalParameter4f = (GLProgramParameter4fProc)
getProcAddress (s, "glProgramLocalParameter4fARB");
-
- if (s->genPrograms &&
- s->deletePrograms &&
- s->bindProgram &&
- s->programString &&
- s->programEnvParameter4f &&
- s->programLocalParameter4f)
+ s->getProgramiv = (GLGetProgramivProc)
+ getProcAddress (s, "glGetProgramivARB");
+
+ if (s->genPrograms &&
+ s->deletePrograms &&
+ s->bindProgram &&
+ s->programString &&
+ s->programEnvParameter4f &&
+ s->programLocalParameter4f &&
+ s->getProgramiv)
s->fragmentProgram = 1;
}