On Mon, Jan 23, 2012 at 8:59 PM, Brian Paul <brian.e.p...@gmail.com> wrote: > On Mon, Jan 23, 2012 at 6:41 PM, Brian Paul <brian.e.p...@gmail.com> wrote: >> On Mon, Jan 23, 2012 at 12:48 PM, Matt Turner <matts...@gmail.com> wrote: >>> -fvisibility=hidden was preventing them from being exported, which >>> combined with shared-glapi was causing undefined symbol errors at >>> runtime. >>> --- >>> Brian: there might be more functions that should be exported. Let >>> me know (or let me know what to test to find them) and I'll clean >>> them up too. >>> >>> src/mapi/mapi/u_thread.c | 26 +++++++++++++------------- >>> 1 files changed, 13 insertions(+), 13 deletions(-) >>> >>> diff --git a/src/mapi/mapi/u_thread.c b/src/mapi/mapi/u_thread.c >>> index 7b52ca9..393ae48 100644 >>> --- a/src/mapi/mapi/u_thread.c >>> +++ b/src/mapi/mapi/u_thread.c >>> @@ -62,14 +62,14 @@ >>> */ >>> #ifdef PTHREADS >>> >>> -unsigned long >>> +PUBLIC unsigned long >>> u_thread_self(void) >>> { >>> return (unsigned long) pthread_self(); >>> } >>> >>> >>> -void >>> +PUBLIC void >>> u_tsd_init(struct u_tsd *tsd) >>> { >>> if (pthread_key_create(&tsd->key, NULL/*free*/) != 0) { >>> @@ -80,7 +80,7 @@ u_tsd_init(struct u_tsd *tsd) >>> } >>> >>> >>> -void * >>> +PUBLIC void * >>> u_tsd_get(struct u_tsd *tsd) >>> { >>> if (tsd->initMagic != (int) INIT_MAGIC) { >>> @@ -90,7 +90,7 @@ u_tsd_get(struct u_tsd *tsd) >>> } >>> >>> >>> -void >>> +PUBLIC void >>> u_tsd_set(struct u_tsd *tsd, void *ptr) >>> { >>> if (tsd->initMagic != (int) INIT_MAGIC) { >>> @@ -113,14 +113,14 @@ u_tsd_set(struct u_tsd *tsd, void *ptr) >>> */ >>> #ifdef WIN32 >>> >>> -unsigned long >>> +PUBLIC unsigned long >>> u_thread_self(void) >>> { >>> return GetCurrentThreadId(); >>> } >>> >>> >>> -void >>> +PUBLIC void >>> u_tsd_init(struct u_tsd *tsd) >>> { >>> tsd->key = TlsAlloc(); >>> @@ -132,7 +132,7 @@ u_tsd_init(struct u_tsd *tsd) >>> } >>> >>> >>> -void >>> +PUBLIC void >>> u_tsd_destroy(struct u_tsd *tsd) >>> { >>> if (tsd->initMagic != INIT_MAGIC) { >>> @@ -143,7 +143,7 @@ u_tsd_destroy(struct u_tsd *tsd) >>> } >>> >>> >>> -void * >>> +PUBLIC void * >>> u_tsd_get(struct u_tsd *tsd) >>> { >>> if (tsd->initMagic != INIT_MAGIC) { >>> @@ -153,7 +153,7 @@ u_tsd_get(struct u_tsd *tsd) >>> } >>> >>> >>> -void >>> +PUBLIC void >>> u_tsd_set(struct u_tsd *tsd, void *ptr) >>> { >>> /* the following code assumes that the struct u_tsd has been initialized >>> @@ -177,21 +177,21 @@ u_tsd_set(struct u_tsd *tsd, void *ptr) >>> * no-op functions >>> */ >>> >>> -unsigned long >>> +PUBLIC unsigned long >>> u_thread_self(void) >>> { >>> return 0; >>> } >>> >>> >>> -void >>> +PUBLIC void >>> u_tsd_init(struct u_tsd *tsd) >>> { >>> (void) tsd; >>> } >>> >>> >>> -void * >>> +PUBLIC void * >>> u_tsd_get(struct u_tsd *tsd) >>> { >>> (void) tsd; >>> @@ -199,7 +199,7 @@ u_tsd_get(struct u_tsd *tsd) >>> } >>> >>> >>> -void >>> +PUBLIC void >>> u_tsd_set(struct u_tsd *tsd, void *ptr) >>> { >>> (void) tsd; >>> -- >>> 1.7.3.4 >>> >> >> This looks good, and it's fine if you commit it, but I've still got >> build problems: >> >> ./configure --enable-xlib-glx --disable-dri --enable-debug >> [...] >> make >> [...] >> ar: creating libglapi.a >> linker.cpp: In function ‘gl_shader* link_intrastage_shaders(void*, >> gl_context*, gl_shader_program*, gl_shader**, unsigned int)’: >> linker.cpp:1008: warning: ‘link_intrastage_shaders(void*, gl_context*, >> gl_shader_program*, gl_shader**, unsigned int)::array_sizing_visitor’ >> declared with greater visibility than the type of its field >> ‘link_intrastage_shaders(void*, gl_context*, gl_shader_program*, >> gl_shader**, unsigned int)::array_sizing_visitor::<anonymous>’ >> linker.cpp:1008: warning: ‘link_intrastage_shaders(void*, gl_context*, >> gl_shader_program*, gl_shader**, unsigned int)::array_sizing_visitor’ >> declared with greater visibility than its base >> ‘ir_hierarchical_visitor’ >> ar: creating libglsl.a >> ar: creating libmesa.a >> ar: creating libmesagallium.a >> /usr/bin/ld: cannot find -lglapi >> collect2: ld returned 1 exit status >> mv: cannot stat `libGL.so.1.5.08000': No such file or directory >> ar: creating libegl_glx.a >> ar: creating libgallium.a >> ar: creating libgalahad.a >> ar: creating libidentity.a >> ar: creating libllvmpipe.a >> ar: creating libnoop.a >> ar: creating libr300.a >> r600_asm.c: In function ‘is_alu_trans_unit_inst’: >> r600_asm.c:505: warning: control reaches end of non-void function >> r600_asm.c: In function ‘is_alu_vec_unit_inst’: >> r600_asm.c:488: warning: control reaches end of non-void function >> r600_pipe.c: In function ‘r600_get_shader_param’: >> r600_pipe.c:459: warning: unused variable ‘rscreen’ >> ar: creating libr600.a >> ar: creating librbug.a >> sp_state_derived.c: In function ‘softpipe_get_vertex_info’: >> sp_state_derived.c:91: warning: ‘interp’ may be used uninitialized in >> this function >> ar: creating libsoftpipe.a >> ar: creating libsvga.a >> ar: creating libtrace.a >> ar: creating libxlib.a >> ar: creating libws_null.a >> ar: creating libwsw.a >> ar: creating libws_xlib.a >> Makefile:115: depend: No such file or directory >> /usr/bin/ld: cannot find -lglapi >> collect2: ld returned 1 exit status >> mv: cannot stat `libGL.so.1.5.08000': No such file or directory > > Nevermind. A clean build from scratch fixed that. > > However, any program that uses extension functions acts peculiar and dies: > > $ cd demos/src/demos > $ ./fbotexture > GL_RENDERER = Mesa X11 > Mesa: User error: GL_INVALID_OPERATION in glEndConditionalRender() > Mesa: User error: GL_INVALID_ENUM in > glGetIntegerIndexedv(pname=GL_FRAMEBUFFER) > Mesa: User error: GL_INVALID_ENUM in glTexParameter(target) > Mesa: User error: GL_INVALID_ENUM in > glGetIntegerIndexedv(pname=GL_FRAMEBUFFER) > Mesa: User error: GL_INVALID_OPERATION in glBeginTransformFeedback(no > program active) > Mesa: User error: GL_INVALID_ENUM in glIsEnabledIndexed(cap=GL_RENDERBUFFER) > Mesa: User error: GL_INVALID_ENUM in glTransformFeedbackVaryings(bufferMode) > Mesa: User error: GL_INVALID_ENUM in > glGetIntegerIndexedv(pname=GL_FRAMEBUFFER) > Mesa: User error: GL_INVALID_OPERATION in glBeginTransformFeedback(no > program active) > Mesa: User error: GL_INVALID_ENUM in glIsEnabledIndexed(cap=GL_RENDERBUFFER) > Mesa: User error: GL_INVALID_ENUM in glTransformFeedbackVaryings(bufferMode) > Unable to create/attach depth and stencil renderbuffers to FBO! > > Clearly, the dispatch table is messed up and we're winding up in the > wrong functions. > > Can you investigate that? Thanks. > > -Brian
Okay, I can reproduce this. I'll take a look. Matt _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev