2006-09-16 12:43:28 |
gandalfn |
description |
on edgy, when you start compiz on aiglx, this report GL_ARB_fragment is not supported.
here a patch which activate GLX ARB fragment with AiGLX work fine with i810 card need some test with all other card.
diff -urNad xorg.orig/GL/glx/g_disptab_EXT.c xorg/GL/glx/g_disptab_EXT.c
--- xorg.orig/GL/glx/g_disptab_EXT.c 2006-03-17 01:35:18.000000000 +0100
+++ xorg/GL/glx/g_disptab_EXT.c 2006-06-09 19:39:39.000000000 +0200
@@ -2185,28 +2185,28 @@
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4180 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4190 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
+ __glXDisp_BindProgramNV, /* 4180 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
+ __glXDisp_ProgramEnvParameter4fvARB, /* 4184 */
+ __glXDisp_ProgramEnvParameter4dvARB, /* 4185 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4200 */
__glXNoSuchRenderOpcode,
+ __glXDisp_VertexAttrib1svARB, /* 4189 */
+ __glXDisp_VertexAttrib2svARB, /* 4190 */
+ __glXDisp_VertexAttrib3svARB, /* 4191 */
+ __glXDisp_VertexAttrib4svARB, /* 4192 */
+ __glXDisp_VertexAttrib1fvARB, /* 4193 */
+ __glXDisp_VertexAttrib2fvARB, /* 4194 */
+ __glXDisp_VertexAttrib3fvARB, /* 4195 */
+ __glXDisp_VertexAttrib4fvARB, /* 4196 */
+ __glXDisp_VertexAttrib1dvARB, /* 4197 */
+ __glXDisp_VertexAttrib2dvARB, /* 4198 */
+ __glXDisp_VertexAttrib3dvARB, /* 4199 */
+ __glXDisp_VertexAttrib4dvARB, /* 4200 */
+ __glXDisp_VertexAttrib4NubvARB, /* 4201 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
@@ -2220,9 +2220,9 @@
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
+ __glXDisp_ProgramLocalParameter4fvARB, /* 4215 */
+ __glXDisp_ProgramLocalParameter4dvARB, /* 4216 */
+ __glXDisp_ProgramStringARB, /* 4217 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode, /* 4219 */
#ifndef MISSING_GL_EXTS
@@ -2241,16 +2241,16 @@
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
+ __glXDisp_VertexAttrib4bvARB, /* 4230 */
+ __glXDisp_VertexAttrib4ivARB, /* 4231 */
+ __glXDisp_VertexAttrib4ubvARB, /* 4232 */
+ __glXDisp_VertexAttrib4usvARB, /* 4233 */
+ __glXDisp_VertexAttrib4uivARB, /* 4234 */
+ __glXDisp_VertexAttrib4NbvARB, /* 4235 */
+ __glXDisp_VertexAttrib4NsvARB, /* 4236 */
+ __glXDisp_VertexAttrib4NivARB, /* 4237 */
+ __glXDisp_VertexAttrib4NusvARB, /* 4238 */
+ __glXDisp_VertexAttrib4NuivARB, /* 4239 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
@@ -4494,28 +4494,28 @@
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4180 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4190 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
+ __glXDispSwap_BindProgramNV, /* 4180 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
+ __glXDispSwap_ProgramEnvParameter4fvARB, /* 4184 */
+ __glXDispSwap_ProgramEnvParameter4dvARB, /* 4185 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4200 */
__glXNoSuchRenderOpcode,
+ __glXDispSwap_VertexAttrib1svARB, /* 4189 */
+ __glXDispSwap_VertexAttrib2svARB, /* 4190 */
+ __glXDispSwap_VertexAttrib3svARB, /* 4191 */
+ __glXDispSwap_VertexAttrib4svARB, /* 4192 */
+ __glXDispSwap_VertexAttrib1fvARB, /* 4193 */
+ __glXDispSwap_VertexAttrib2fvARB, /* 4194 */
+ __glXDispSwap_VertexAttrib3fvARB, /* 4195 */
+ __glXDispSwap_VertexAttrib4fvARB, /* 4196 */
+ __glXDispSwap_VertexAttrib1dvARB, /* 4197 */
+ __glXDispSwap_VertexAttrib2dvARB, /* 4198 */
+ __glXDispSwap_VertexAttrib3dvARB, /* 4199 */
+ __glXDispSwap_VertexAttrib4dvARB, /* 4200 */
+ __glXDispSwap_VertexAttrib4NubvARB, /* 4201 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
@@ -4529,9 +4529,9 @@
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
+ __glXDispSwap_ProgramLocalParameter4fvARB, /* 4215 */
+ __glXDispSwap_ProgramLocalParameter4dvARB, /* 4216 */
+ __glXDispSwap_ProgramStringARB, /* 4217 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode, /* 4219 */
#ifndef MISSING_GL_EXTS
@@ -4550,16 +4550,16 @@
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
+ __glXDispSwap_VertexAttrib4bvARB, /* 4230 */
+ __glXDispSwap_VertexAttrib4ivARB, /* 4231 */
+ __glXDispSwap_VertexAttrib4ubvARB, /* 4232 */
+ __glXDispSwap_VertexAttrib4usvARB, /* 4233 */
+ __glXDispSwap_VertexAttrib4uivARB, /* 4234 */
+ __glXDispSwap_VertexAttrib4NbvARB, /* 4235 */
+ __glXDispSwap_VertexAttrib4NsvARB, /* 4236 */
+ __glXDispSwap_VertexAttrib4NivARB, /* 4237 */
+ __glXDispSwap_VertexAttrib4NusvARB, /* 4238 */
+ __glXDispSwap_VertexAttrib4NuivARB, /* 4239 */
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
__glXNoSuchRenderOpcode,
diff -urNad xorg.orig/GL/glx/glxcmds.c xorg/GL/glx/glxcmds.c
--- xorg.orig/GL/glx/glxcmds.c 2006-06-09 19:39:09.000000000 +0200
+++ xorg/GL/glx/glxcmds.c 2006-06-09 19:39:39.000000000 +0200
@@ -2340,6 +2340,30 @@
return __glXCreateGLXPixmapWithConfigSGIX(cl, pc);
case X_GLXvop_GetDrawableAttributesSGIX:
return __glXGetDrawableAttributesSGIX(cl, pc);
+ case X_GLvop_DeleteProgramARB:
+ return __glXDisp_DeleteProgramsNV(cl, pc);
+ case X_GLvop_GenProgramsARB:
+ return __glXDisp_GenProgramsNV(cl, pc);
+ case X_GLvop_GetProgramEnvParameterfvARB:
+ return __glXDisp_GetProgramEnvParameterfvARB(cl, pc);
+ case X_GLvop_GetProgramEnvParameterdvARB:
+ return __glXDisp_GetProgramEnvParameterdvARB(cl, pc);
+ case X_GLvop_GetProgramLocalParameterfvARB:
+ return __glXDisp_GetProgramLocalParameterfvARB(cl, pc);
+ case X_GLvop_GetProgramLocalParameterdvARB:
+ return __glXDisp_GetProgramLocalParameterdvARB(cl, pc);
+ case X_GLvop_GetProgramivARB:
+ return __glXDisp_GetProgramivARB(cl, pc);
+ case X_GLvop_GetProgramStringARB:
+ return __glXDisp_GetProgramStringARB(cl, pc);
+ case X_GLvop_GetVertexAttribdvARB:
+ return __glXDisp_GetVertexAttribdvARB(cl, pc);
+ case X_GLvop_GetVertexAttribfvARB:
+ return __glXDisp_GetVertexAttribfvARB(cl, pc);
+ case X_GLvop_GetVertexAttribivARB:
+ return __glXDisp_GetVertexAttribivARB(cl, pc);
+ case X_GLvop_IsProgramARB:
+ return __glXDisp_IsProgramNV(cl, pc);
case X_GLvop_IsRenderbufferEXT:
return __glXDisp_IsRenderbufferEXT(cl, pc);
case X_GLvop_GenRenderbuffersEXT:
diff -urNad xorg.orig/GL/glx/glxcmdsswap.c xorg/GL/glx/glxcmdsswap.c
--- xorg.orig/GL/glx/glxcmdsswap.c 2006-06-09 19:39:09.000000000 +0200
+++ xorg/GL/glx/glxcmdsswap.c 2006-06-09 19:39:39.000000000 +0200
@@ -973,6 +973,30 @@
return __glXSwapCreateGLXPixmapWithConfigSGIX(cl, pc);
case X_GLXvop_GetDrawableAttributesSGIX:
return __glXSwapGetDrawableAttributesSGIX(cl, pc);
+ case X_GLvop_DeleteProgramARB:
+ return __glXDispSwap_DeleteProgramsNV(cl, pc);
+ case X_GLvop_GenProgramsARB:
+ return __glXDispSwap_GenProgramsNV(cl, pc);
+ case X_GLvop_GetProgramEnvParameterfvARB:
+ return __glXDispSwap_GetProgramEnvParameterfvARB(cl, pc);
+ case X_GLvop_GetProgramEnvParameterdvARB:
+ return __glXDispSwap_GetProgramEnvParameterdvARB(cl, pc);
+ case X_GLvop_GetProgramLocalParameterfvARB:
+ return __glXDispSwap_GetProgramLocalParameterfvARB(cl, pc);
+ case X_GLvop_GetProgramLocalParameterdvARB:
+ return __glXDispSwap_GetProgramLocalParameterdvARB(cl, pc);
+ case X_GLvop_GetProgramivARB:
+ return __glXDispSwap_GetProgramivARB(cl, pc);
+ case X_GLvop_GetProgramStringARB:
+ return __glXDispSwap_GetProgramStringARB(cl, pc);
+ case X_GLvop_GetVertexAttribdvARB:
+ return __glXDispSwap_GetVertexAttribdvARB(cl, pc);
+ case X_GLvop_GetVertexAttribfvARB:
+ return __glXDispSwap_GetVertexAttribfvARB(cl, pc);
+ case X_GLvop_GetVertexAttribivARB:
+ return __glXDispSwap_GetVertexAttribivARB(cl, pc);
+ case X_GLvop_IsProgramARB:
+ return __glXDispSwap_IsProgramNV(cl, pc);
case X_GLvop_IsRenderbufferEXT:
return __glXDispSwap_IsRenderbufferEXT(cl, pc);
case X_GLvop_GenRenderbuffersEXT:
diff -urNad xorg.orig/GL/glx/glxscreens.c xorg/GL/glx/glxscreens.c
--- xorg.orig/GL/glx/glxscreens.c 2006-06-09 19:39:09.000000000 +0200
+++ xorg/GL/glx/glxscreens.c 2006-06-09 19:39:39.000000000 +0200
@@ -65,6 +65,8 @@
"GL_ARB_transpose_matrix "
"GL_ARB_window_pos "
"GL_ARB_texture_non_power_of_two "
+ "GL_ARB_vertex_program "
+ "GL_ARB_fragment_program "
"GL_EXT_abgr "
"GL_EXT_bgra "
"GL_EXT_blend_color "
diff -urNad xorg.orig/GL/glx/rensizetab.c xorg/GL/glx/rensizetab.c
--- xorg.orig/GL/glx/rensizetab.c 2006-03-17 01:35:18.000000000 +0100
+++ xorg/GL/glx/rensizetab.c 2006-06-09 19:39:39.000000000 +0200
@@ -2403,12 +2403,28 @@
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
+ /* BindProgramNV 4180 */ { 12, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
+ /* ProgramEnvParameter4fvARB 4184 */ { 28, 0 },
+ /* ProgramEnvParameter4dvARB 4185 */ { 44, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
+ /* VertexAttrib1svARB 4189 */ { 12, 0 },
+ /* VertexAttrib2svARB 4190 */ { 12, 0 },
+ /* VertexAttrib3svARB 4191 */ { 16, 0 },
+ /* VertexAttrib4svARB 4192 */ { 16, 0 },
+ /* VertexAttrib1fvARB 4193 */ { 12, 0 },
+ /* VertexAttrib2fvARB 4194 */ { 16, 0 },
+ /* VertexAttrib3fvARB 4195 */ { 20, 0 },
+ /* VertexAttrib4fvARB 4196 */ { 24, 0 },
+ /* VertexAttrib1dvARB 4197 */ { 16, 0 },
+ /* VertexAttrib2dvARB 4198 */ { 24, 0 },
+ /* VertexAttrib3dvARB 4199 */ { 32, 0 },
+ /* VertexAttrib4dvARB 4200 */ { 40, 0 },
+ /* VertexAttrib4NubvARB 4201 */ { 12, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
@@ -2422,25 +2438,9 @@
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
+ /* ProgramLocalParameter4fvARB 4215 */ { 28, 0 },
+ /* ProgramLocalParameter4dvARB 4216 */ { 44, 0 },
+ /* ProgramStringARB 4217 */ { 16, __glXProgramStringARBReqSize },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
/* ActiveStencilFaceEXT 4220 */ { 8, 0 },
@@ -2453,16 +2453,16 @@
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
+ /* VertexAttrib4bvARB 4230 */ { 12, 0 },
+ /* VertexAttrib4ivARB 4231 */ { 24, 0 },
+ /* VertexAttrib4ubvARB 4232 */ { 12, 0 },
+ /* VertexAttrib4usvARB 4233 */ { 16, 0 },
+ /* VertexAttrib4uivARB 4234 */ { 24, 0 },
+ /* VertexAttrib4NbvARB 4235 */ { 12, 0 },
+ /* VertexAttrib4NsvARB 4236 */ { 16, 0 },
+ /* VertexAttrib4NivARB 4237 */ { 24, 0 },
+ /* VertexAttrib4NusvARB 4238 */ { 16, 0 },
+ /* VertexAttrib4NuivARB 4239 */ { 24, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
/* no such opcode */ { 0, 0 },
diff -urNad xorg.orig/GL/glx/single2.c xorg/GL/glx/single2.c
--- xorg.orig/GL/glx/single2.c 2006-04-07 03:23:42.000000000 +0200
+++ xorg/GL/glx/single2.c 2006-06-09 19:39:39.000000000 +0200
@@ -393,3 +393,68 @@
{
return DoGetString(cl, pc, GL_FALSE);
}
+
+int DoGetProgramString(__GLXclientState *cl, GLbyte *pc, GLboolean need_swap)
+{
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ ClientPtr client;
+ __GLXcontext *cx;
+ GLenum target;
+ GLenum pname;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ int error;
+ char *string = NULL;
+ GLint length = 0;
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+
+ if ( need_swap ) {
+ __GLX_SWAP_INT(req->contextTag);
+ __GLX_SWAP_INT(pc);
+ __GLX_SWAP_INT(pc + 4);
+ }
+
+ cx = __glXForceCurrent(cl, req->contextTag, &error);
+ if (!cx) {
+ return error;
+ }
+
+ target = *(GLenum *)(pc);
+ pname = *(GLenum *)(pc + 4);
+
+ CALL_GetProgramivNV( GET_DISPATCH(),
+ (target, GL_PROGRAM_LENGTH_ARB, &length) );
+
+ if (length)
+ {
+ string = xalloc (length + 1);
+ if (string)
+ {
+ CALL_GetProgramStringARB( GET_DISPATCH(), (target, pname, string) );
+ }
+ else
+ length = 0;
+ }
+
+ client = cl->client;
+
+ __GLX_BEGIN_REPLY(length);
+ __GLX_PUT_SIZE(length);
+
+ if ( need_swap ) {
+ __GLX_SWAP_REPLY_SIZE();
+ __GLX_SWAP_REPLY_HEADER();
+ }
+
+ __GLX_SEND_HEADER();
+ WriteToClient(client, length, (char *) string);
+ if (string != NULL) {
+ xfree(string);
+ }
+ return Success;
+}
+
+int __glXDisp_GetProgramStringARB(__GLXclientState *cl, GLbyte *pc)
+{
+ return DoGetProgramString(cl, pc, GL_FALSE);
+}
diff -urNad xorg.orig/GL/glx/single2swap.c xorg/GL/glx/single2swap.c
--- xorg.orig/GL/glx/single2swap.c 2006-03-20 21:10:29.000000000 +0100
+++ xorg/GL/glx/single2swap.c 2006-06-09 19:39:39.000000000 +0200
@@ -271,3 +271,8 @@
{
return DoGetString(cl, pc, GL_TRUE);
}
+
+int __glXDispSwap_GetProgramStringARB(__GLXclientState *cl, GLbyte *pc)
+{
+ return DoGetProgramString(cl, pc, GL_TRUE);
+}
|
on edgy, when you start compiz on aiglx, this report GL_ARB_fragment is not supported.
here a patch which activate GLX ARB fragment with AiGLX work fine with i810 card need some test with all other card. |
|