diff --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 -#define CORE_ABIVERSION 20080401 +#define CORE_ABIVERSION 20080408 #include #include @@ -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; }