This should make most linux-solo drivers work again. Mainly a fix
authorJon Smirl <jonsmirl@gmail.com>
Tue, 29 Jun 2004 04:50:29 +0000 (04:50 +0000)
committerJon Smirl <jonsmirl@gmail.com>
Tue, 29 Jun 2004 04:50:29 +0000 (04:50 +0000)
for changing SAREA size form DRM_PAGE_SIZE to SAREA_MAX. fb driver
is still broken.

src/glx/mini/miniglx.c
src/glx/mini/miniglxP.h
src/mesa/drivers/dri/Makefile.template
src/mesa/drivers/dri/fb/fb_dri.c
src/mesa/drivers/dri/r128/server/r128_dri.c
src/mesa/drivers/dri/radeon/server/radeon_dri.c

index 31bd9cc034e121e7257865d74582d2a1d1682fef..1a0acf832f002e518eab971df62052f8a21fbd2f 100644 (file)
@@ -911,24 +911,6 @@ static int __read_config_file( Display *dpy )
 
 static int InitDriver( Display *dpy )
 {
-   char * str;
-   char * srvLibname = NULL;
-
-   srvLibname = strdup(dpy->clientDriverName);
-   if (!srvLibname) {
-      goto failed;
-   }
-
-   /*
-    * Construct server library name. Assume clientDriverName ends
-    * with dri.so. Replace dri.so with srv.so.
-    */
-   str = strstr(srvLibname, "dri.so");
-   if (!str) {
-       goto failed;
-   }
-   strcpy(str, "srv.so");
-
    /*
     * Begin DRI setup.
     * We're kind of combining the per-display and per-screen information
@@ -941,16 +923,9 @@ static int InitDriver( Display *dpy )
       goto failed;
    }
 
-   dpy->dlHandleSrv = dlopen(srvLibname, RTLD_NOW | RTLD_GLOBAL);
-   if (!dpy->dlHandleSrv) {
-      fprintf(stderr, "Unable to open %s: %s\n", dpy->clientDriverName,
-             dlerror());
-      goto failed;
-   }
-
    /* Pull in Mini GLX specific hooks:
     */
-   dpy->driver = (struct DRIDriverRec *) dlsym(dpy->dlHandleSrv,
+   dpy->driver = (struct DRIDriverRec *) dlsym(dpy->dlHandle,
                                                "__driDriver");
    if (!dpy->driver) {
       fprintf(stderr, "Couldn't find __driDriver in %s\n",
@@ -971,13 +946,6 @@ static int InitDriver( Display *dpy )
    return GL_TRUE;
 
 failed:
-   if (srvLibname) {
-       free(srvLibname);
-   }
-   if (dpy->dlHandleSrv) {
-       dlclose(dpy->dlHandleSrv);
-       dpy->dlHandleSrv = 0;
-   }
    if (dpy->dlHandle) {
        dlclose(dpy->dlHandle);
        dpy->dlHandle = 0;
index ce0eafe17e3febd8943eb04501605b14d6c8d090..9169f7ece17ae7ed83f274c68f54ba5bd6196ca3 100644 (file)
@@ -166,10 +166,6 @@ struct MiniGLXDisplayRec {
                                   * \brief handle to the client dynamic
                                   * library 
                                   */
-   void *dlHandleSrv;             /**<
-                                  * \brief handle to the server dynamic
-                                  * library 
-                                  */
    /*@}*/
 
    /**
index 29558c9e29155fc60c827f2a2952d897753a5eb7..fa1bc2993fbceafdffe6d5d1ab123b80783e353b 100644 (file)
@@ -1,7 +1,5 @@
 # -*-makefile-*-
 
-TOP = ../../../../..
-
 MESA_MODULES = $(TOP)/src/mesa/mesa.a
 
 
@@ -36,7 +34,7 @@ endif
 ### Include directories
 SHARED_INCLUDES = \
        -I. \
-       -I../common \
+       -I$(TOP)/src/mesa/drivers/dri/common \
        -Iserver \
        -I$(DRM_SOURCE_PATH)/shared \
        -I$(TOP)/include \
@@ -75,7 +73,7 @@ default: depend symlinks $(LIB_DIR)/$(LIBNAME)
 #              $(WINLIB) $(LIB_DEPS) $(WINOBJ) $(MESA_MODULES) $(OBJECTS)
 
 
-$(LIB_DIR)/$(LIBNAME):  $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile ../Makefile.template
+$(LIB_DIR)/$(LIBNAME):  $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template
        rm -f $@ && gcc -o $@ -shared $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(GL_LIB_DEPS)
 
 
index d5ea98b5be453cf012fc451c50b1f940efafb3e6..97f4e34f15639c75468cba772929822ea73c8b72 100644 (file)
@@ -657,7 +657,7 @@ __driInitFBDev( struct DRIDriverContextRec *ctx )
    ctx->shared.hFrameBuffer = ctx->FBStart;
    ctx->shared.fbSize = ctx->FBSize;
    ctx->shared.hSAREA = 0xB37D;
-   ctx->shared.SAREASize = DRM_PAGE_SIZE;
+   ctx->shared.SAREASize = SAREA_MAX;
    id = shmget(ctx->shared.hSAREA, ctx->shared.SAREASize, IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR);
    if (id == -1) {
        /* segment will already exist if previous server segfaulted */
@@ -672,7 +672,7 @@ __driInitFBDev( struct DRIDriverContextRec *ctx )
        fprintf(stderr, "fb: shmat failed\n");
        return 0;
    }
-   memset(ctx->pSAREA, 0, DRM_PAGE_SIZE);
+   memset(ctx->pSAREA, 0, SAREA_MAX);
    return 1;
 }
 
index 6d577483cc0034aeda358b57461134672708bcb1..fff2549aefb6f3c74bcfe21690ef9be75d61d1b5 100644 (file)
@@ -747,7 +747,7 @@ static GLboolean R128DRIScreenInit(DRIDriverContext *ctx)
     }
 
     info->registerSize = ctx->MMIOSize;
-    ctx->shared.SAREASize = DRM_PAGE_SIZE;
+    ctx->shared.SAREASize = SAREA_MAX;
 
     /* Note that drmOpen will try to load the kernel module, if needed. */
     ctx->drmFD = drmOpen("r128", NULL );
index 6521ea812482f27519f8c31c556bf313df8c0521..b7e8026c5a35c71602a77038a5244e9514f2e20d 100644 (file)
@@ -767,7 +767,7 @@ static int RADEONScreenInit( DRIDriverContext *ctx, RADEONInfoPtr info )
    }
 
    info->registerSize = ctx->MMIOSize;
-   ctx->shared.SAREASize = DRM_PAGE_SIZE;
+   ctx->shared.SAREASize = SAREA_MAX;
 
    /* Note that drmOpen will try to load the kernel module, if needed. */
    ctx->drmFD = drmOpen("radeon", NULL );