Please do not reply to this email: if you want to comment on the bug, go to
the URL shown below and enter yourcomments there.
https://bugs.freedesktop.org/show_bug.cgi?id=8896
Summary: X error when using off-screen rendering with DRI enabled
Product: DRI
Version: unspecified
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: General
AssignedTo: [email protected]
ReportedBy: [EMAIL PROTECTED]
Hi,
I have written a small programme using GTK+ and GtkGLExt. When "dri" is
disabled, my programme runs fine. But when "dri" is enabled, my programme
crashes with the following error message:
myprompt> ./test_glext --sync
[*** I got as far as glXMakeCurrent ***]
The program 'test_glext' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
(Details: serial 266 error_code 2 request_code 128 minor_code 7)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
I originally suspected this could be a graphics driver problem. So I set out to
try my program out on both my systems. Here is what I found:
. First machine:
Card: Intel 915 GM
X Protocol Version 11, Revision 0, Release 7.0
Build Operating System:Linux 2.6.12-1-686 i686
Kernel: 2.6.18
Processor: one Intel Pentium M processor 2.00GHz (32 bit)
with Driver "i810" + Direct Rendering ENABLED = X error
with Driver "i810" + Direct Rendering DISABLED = Works
. Second machine:
Card: ATI Radeon 9200 PRO/SE (Rev 280)
X Protocol Version 11, Revision 0, Release 7.0
Build Operating System: Linux 2.6.16-1-vserver-amd64-k8 x86_64
Kernel: 2.6.17-2-amd64
Processor: two AMD Opteron Processor 250 (64 bit)
with Driver "fglrx" + Direct Rendering ENABLED = X error
with Driver "ati" + Direct Rendering ENABLED = X error
with Driver "ati" + Direct Rendering DISABLED = Works
So it then appeared as though the problem was with DRI. I started breaking down
my code to find exactly where the crash occurs and tracked it down to the
function
gdk_gl_drawable_gl_begin(gldrawable, glcontext)
I downloaded the code for GtkGLExt to find where within this function the crash
occurs. I tracked it down to the function
glXMakeCurrent(xdisplay, glxpixmap, glxcontext)
So it would appear that the problem is not with GtkGLExt. Which brought me back
to suspecting a problem with "dri". I recently found on the DRI User Guide:
http://dri.sourceforge.net/doc/DRIuserguide.html
The following message:
11.2 GLX
...
GLXPixmap rendering is only supported for indirect rendering contexts. This is a
common OpenGL limitation. Attempting to use a direct rendering context with a
GLXPixmap will result in an X protocol error.
This seems highly relevant to the bug I am experiencing so if someone could give
me details about this, I would greatly appreciate it.
Anyways, I pasted below the code which replicates the bug. Could someone help me
resolve this problem?
Thanks,
cbeau.
/* Test programme demonstrating the crash when "dri" is enabled */
#include <stdlib.h>
#include <gtk/gtk.h>
#include <gtk/gtkgl.h>
#include <gdk/x11/gdkglx.h>
int main(int argc, char **argv)
{
GtkWidget *main_window, *image;
GdkGLConfig *glconfig;
GdkPixmap *pixmap;
GdkGLPixmap *glpixmap;
GdkGLContext *glcontext;
GdkGLDrawable *gldrawable;
GLXPixmap glxpixmap;
GLXContext glxcontext;
gtk_init(&argc,&argv);
/* Allowing GtkGLExt to retreive its command line options */
gdk_gl_init(&argc,&argv);
/* Check if the OpenGL extension is supported. */
if( gdk_gl_query_extension() == FALSE ) {
g_print("OpenGL extension not supported\n");
exit(1);
}
/* Create new top level window. */
main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/* Set the main window's title */
gtk_window_set_title(GTK_WINDOW(main_window), "Testing GdkGLExt");
/* Add the destroy even to the main window */
gtk_quit_add_destroy(1,GTK_OBJECT(main_window));
/* Connect the destroy event to gtk_main_quit */
gtk_signal_connect(GTK_OBJECT(main_window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
/* Create OpenGL config */
/* No double-buffer because rendering to Off-screen Pixmap */
glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGBA|GDK_GL_MODE_DEPTH);
if( glconfig == NULL ) {
g_print ("*** Problem with GtkGLExt.\n");
exit(1);
}
/* Create a GdkPixmap */
pixmap = gdk_pixmap_new(NULL,100,100,gdk_gl_config_get_depth(glconfig));
/* Set GL capability of GdkPixmap */
glpixmap = gdk_pixmap_set_gl_capability(pixmap,glconfig,NULL);
/* Bind GdkPixmap to the GtkImage for display */
image = gtk_image_new_from_pixmap(pixmap,NULL);
/* Get GL drawable (rendering surface) from GL-capable GdkPixmap */
gldrawable = gdk_pixmap_get_gl_drawable(pixmap);
/* Create a new GL context (rendering context) from GL drawable */
glcontext = gdk_gl_context_new(gldrawable,NULL,TRUE,GDK_GL_RGBA_TYPE);
/* Add GtkImage to which the GdkPixmap is attached to main_window */
gtk_container_add(GTK_CONTAINER(main_window),image);
gtk_widget_show_all(main_window);
/* The code below is from the gl_begin function of gtkglext */
/* as defined in gdk/x11/gdkglpixmap-x11.c (with slight modifs) */
glxpixmap = GDK_GL_PIXMAP_GLXPIXMAP(glpixmap);
glxcontext = GDK_GL_CONTEXT_GLXCONTEXT(glcontext);
Display* xdisplay = GDK_GL_CONFIG_XDISPLAY(glconfig);
/* This crashes if DRI enabled but works if DRI disabled */
fprintf( stderr, "[*** I got as far as glXMakeCurrent ***]\n" );
glXMakeCurrent(xdisplay,glxpixmap,glxcontext);
fprintf( stderr, "[*** I survived glXMakeCurrent ***]\n" );
gtk_main();
return(0);
}
--
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
--
_______________________________________________
Dri-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dri-devel