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=7266          
     
           Summary: Segfault in update_input_ptrs (tnl/t_vertex.c:387) with
                    GLSL code enabled.
           Product: Mesa
           Version: CVS
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Mesa core
        AssignedTo: [email protected]
        ReportedBy: [EMAIL PROTECTED]


I've enabled the GLSL code in the r300 driver, which seems to mostly work except
for a segfault in grammar.c and update_input_ptrs (tnl/t_vertex.c:387)

I fixed the grammar.c segfault, though I'm not sure my solution is the best or
correct one... I'm not sure what's causing the segfault in update_input_ptrs,
though.

Here is the GDB backtrace, and the diff against Mesa CVS (minus the changes I
made in glslnoise.c, which are just printf's before each gl call.)

If anyone knows a better way to enable the GLSL code, or has actually managed to
get it working (with or without acceleration), I'd like to look at a diff or any
information about this.


[EMAIL PROTECTED] ~/Mesa/progs/demos $ R300_SPAN_DISABLE_LOCKING=1 gdb 
./glslnoise
GNU gdb 6.4
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu"...Using host libthread_db
library "/lib/libthread_db.so.1".

(gdb) run
Starting program: /home/z3ro/Mesa/progs/demos/glslnoise 
[Thread debugging using libthread_db enabled]
[New Thread 47636194510064 (LWP 6121)]
glCreateShaderObjectARB
glShaderSourceARB
glCompileShaderARB
glCreateProgramObjectARB
glAttachObjectARB
glLinkProgramARB
glUseProgramObjectARB
glGetUniformLocationARB
glUniform1fARB
glShaderSourceARB
glCompileShaderARB
glShaderSourceARB
glCompileShaderARB
glAttachObjectARB
glAttachObjectARB
glLinkProgramARB
glUseProgramObjectARB
glClearColor
glEnable
glEnable
GL_RENDERER = Mesa DRI R300 20040924 AGP 1x TCL
glViewport
glMatrixMode
glLoadIdentity
glFrustum
glMatrixMode
glLoadIdentity
glTranslatef
glClear
glUniform1fARB
glPushMatrix

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 47636194510064 (LWP 6121)]
0x00002b532a82a620 in update_input_ptrs (ctx=0x0, start=0) at tnl/t_vertex.c:387
387           a[j].inputptr = ((GLubyte *)vptr->data) + start * vptr->stride;
(gdb) bt
#0  0x00002b532a82a620 in update_input_ptrs (ctx=0x0, start=0) at
tnl/t_vertex.c:387 #1  0x00002b532a82a6de in _tnl_build_vertices (ctx=0x51dd50,
start=0, end=341, newinputs=0) at tnl/t_vertex.c:409 #2  0x00002b532a81c73c in
run_render (ctx=0x51dd50, stage=0x0) at tnl/t_vb_render.c:290 #3 
0x00002b532a80ca64 in _tnl_run_pipeline (ctx=0x51dd50) at tnl/t_pipeline.c:159 
#4
 0x00002b532a834863 in _tnl_flush_vtx (ctx=0x51dd50) at tnl/t_vtx_exec.c:281 #5 
0x00002b532a82d712 in _tnl_wrap_buffers (ctx=0x51dd50) at tnl/t_vtx_api.c:85 #6 
0x00002b532a82d7c6 in _tnl_wrap_filled_vertex (ctx=0x0) at tnl/t_vtx_api.c:122 
#7
 0x00002b532a83046a in attrib_0_3 (v=0x7fff81e5fda0) at tnl/t_vtx_generic.c:100
#8  0x00002b532a8327aa in _tnl_Vertex3f (x=0, y=1, z=0) at
tnl/t_vtx_generic.c:235 #9  0x00002b53290766f8 in glVertex3f (x=0.190983027,
y=0.587785363, z=-1.90211296) at glapitemp.h:755 #10 0x00002b5328edd671 in
gluSphere (qobj=0xbea5f0, radius=2, slices=20, stacks=-1076945986) at
libutil/quad.c:992 #11 0x00002b5328d8923a in glutSolidSphere (radius=2,
slices=20, stacks=10) at glut_shapes.c:89 #12 0x0000000000401442 in Redisplay ()
at glslnoise.c:55 #13 0x00002b5328d82a33 in processWindowWorkList
(window=0x509640) at glut_event.c:1302 #14 0x00002b5328d82ad1 in
__glutProcessWindowWorkLists () at glut_event.c:1349 #15 0x00002b5328d82b2f in
glutMainLoop () at glut_event.c:1370 #16 0x0000000000401972 in main (argc=1,
argv=0x7fff81e62e18) at glslnoise.c:214 (gdb) 


Index: src/mesa/drivers/dri/r300/r300_context.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/r300/r300_context.c,v
retrieving revision 1.54
diff -u -r1.54 r300_context.c
--- src/mesa/drivers/dri/r300/r300_context.c    11 Jun 2006 09:12:27 -0000      
1.54
+++ src/mesa/drivers/dri/r300/r300_context.c    18 Jun 2006 11:26:06 -0000
@@ -83,9 +83,20 @@
 #define need_GL_EXT_blend_equation_separate
 #define need_GL_EXT_blend_func_separate
 #define need_GL_NV_vertex_program
+
+#define need_GL_ARB_shader_objects
+#define need_GL_ARB_shading_language_100
+#define need_GL_ARB_vertex_shader
+#define need_GL_ARB_fragment_shader
+
 #include "extension_helper.h"
 
 const struct dri_extension card_extensions[] = {
+  {"GL_ARB_shader_objects", GL_ARB_shader_objects_functions},
+  {"GL_ARB_shading_language_100", NULL},
+  {"GL_ARB_vertex_shader", GL_ARB_vertex_shader_functions},
+  {"GL_ARB_fragment_shader", GL_ARB_vertex_shader_functions},
+
   {"GL_ARB_multisample",               GL_ARB_multisample_functions},
   {"GL_ARB_multitexture",              NULL},
   {"GL_ARB_texture_border_clamp",      NULL},
Index: src/mesa/drivers/dri/r300/r300_render.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/r300/r300_render.c,v
retrieving revision 1.106
diff -u -r1.106 r300_render.c
--- src/mesa/drivers/dri/r300/r300_render.c     23 Apr 2006 08:04:50 -0000      
1.106
+++ src/mesa/drivers/dri/r300/r300_render.c     18 Jun 2006 11:26:22 -0000
@@ -462,6 +462,11 @@
 {
        int i;
 
+       if (ctx->ShaderObjects._FragmentShaderPresent)
+               return R300_FALLBACK_RAST;
+       if (ctx->ShaderObjects._VertexShaderPresent)
+               return R300_FALLBACK_TCL;
+
        FALLBACK_IF(ctx->RenderMode != GL_RENDER);  // We do not do SELECT or 
FEEDBACK
(yet ?)         
 #if 0 /* These should work now.. */
Index: src/mesa/shader/grammar/grammar.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/shader/grammar/grammar.c,v
retrieving revision 1.3
diff -u -r1.3 grammar.c
--- src/mesa/shader/grammar/grammar.c   28 Jul 2005 00:11:11 -0000      1.3
+++ src/mesa/shader/grammar/grammar.c   18 Jun 2006 11:37:52 -0000
@@ -2410,7 +2410,7 @@
                     }
                     else if (result == mr_matched)
                     {
-                        if (barray_push (ba, sp->m_emits, text[ind - 1],
save_ind, &ctx) || +                        if (barray_push (ba, sp->m_emits,
text[ind > 0 ? ind - 1 : ind], save_ind, &ctx) ||                             
barray_append (ba, &array))                          {
                             free_regbyte_ctx_stack (ctx, *rbc);
@@ -2469,7 +2469,7 @@
         if (status == mr_matched)
         {
             if (sp->m_emits)
-                if (barray_push (ba, sp->m_emits, text[ind - 1], save_ind,
&ctx)) +                if (barray_push (ba, sp->m_emits, text[ind > 0 ? ind - 1
: ind], save_ind, &ctx))                  {
                     free_regbyte_ctx_stack (ctx, *rbc);
                     barray_destroy (&array);
@@ -2629,7 +2629,7 @@
                         {
                             if (sp->m_emits != NULL)
                             {
-                                if (emit_push (sp->m_emits, _BP->_F + _P,
text[ind - 1], save_ind, &ctx)) +                                if (emit_push
(sp->m_emits, _BP->_F + _P, text[ind > 0 ? ind - 1 : ind], save_ind, &ctx))     
 
                           {                                     
free_regbyte_ctx_stack (ctx, *rbc);                                      return
mr_internal_error; @@ -2686,7 +2686,7 @@
         if (status == mr_matched)
         {
             if (sp->m_emits != NULL)
-                if (emit_push (sp->m_emits, _BP->_F + _P, text[ind - 1],
save_ind, &ctx)) +                if (emit_push (sp->m_emits, _BP->_F + _P,
text[ind > 0 ? ind - 1 : ind], save_ind, &ctx))                  {
                     free_regbyte_ctx_stack (ctx, *rbc);
                     return mr_internal_error;          
     
     
--           
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.


_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to