i965g: Remove dead code.
[mesa.git] / src / gallium / state_trackers / dri / dri_context.h
index e910472700cfdd0fcd4da9da4631c4212a2b7b80..13f497462f7545ae6320b9f44d429280ef149c44 100644 (file)
 #include "drm.h"
 #include "dri_util.h"
 
-
 struct pipe_context;
 struct pipe_fence;
 struct st_context;
 struct dri_drawable;
 
-
 struct dri_context
 {
    /* dri */
-   __DRIscreenPrivate *sPriv;
-   __DRIcontextPrivate *cPriv;
-   __DRIdrawablePrivate *dPriv;
+   __DRIscreen *sPriv;
+   __DRIcontext *cPriv;
+   __DRIdrawable *dPriv;
+   __DRIdrawable *rPriv;
 
    driOptionCache optionCache;
 
+   unsigned int d_stamp;
+   unsigned int r_stamp;
+
+   drmLock *lock;
+   boolean isLocked;
+   boolean stLostLock;
+   boolean wsLostLock;
+
+   unsigned int bind_count;
+
    /* gallium */
    struct st_context *st;
    struct pipe_context *pipe;
 };
 
-
 static INLINE struct dri_context *
-dri_context(__DRIcontextPrivate *driContextPriv)
+dri_context(__DRIcontext * driContextPriv)
+{
+   return (struct dri_context *)driContextPriv->driverPrivate;
+}
+
+static INLINE void
+dri_lock(struct dri_context *ctx)
 {
-   return (struct dri_context *) driContextPriv->driverPrivate;
+   drm_context_t hw_context = ctx->cPriv->hHWContext;
+   char ret = 0;
+
+   DRM_CAS(ctx->lock, hw_context, DRM_LOCK_HELD | hw_context, ret);
+   if (ret) {
+      drmGetLock(ctx->sPriv->fd, hw_context, 0);
+      ctx->stLostLock = TRUE;
+      ctx->wsLostLock = TRUE;
+   }
+   ctx->isLocked = TRUE;
 }
 
+static INLINE void
+dri_unlock(struct dri_context *ctx)
+{
+   ctx->isLocked = FALSE;
+   DRM_UNLOCK(ctx->sPriv->fd, ctx->lock, ctx->cPriv->hHWContext);
+}
 
 /***********************************************************************
  * dri_context.c
  */
-void
-dri_destroy_context(__DRIcontextPrivate * driContextPriv);
+extern struct dri1_api_lock_funcs dri1_lf;
 
-boolean
-dri_unbind_context(__DRIcontextPrivate * driContextPriv);
+void dri_destroy_context(__DRIcontext * driContextPriv);
+
+boolean dri_unbind_context(__DRIcontext * driContextPriv);
 
 boolean
-dri_make_current(__DRIcontextPrivate * driContextPriv,
-                 __DRIdrawablePrivate * driDrawPriv,
-                 __DRIdrawablePrivate * driReadPriv);
+dri_make_current(__DRIcontext * driContextPriv,
+                __DRIdrawable * driDrawPriv,
+                __DRIdrawable * driReadPriv);
 
 boolean
 dri_create_context(const __GLcontextModes * visual,
-                   __DRIcontextPrivate * driContextPriv,
-                   void *sharedContextPrivate);
-
+                  __DRIcontext * driContextPriv,
+                  void *sharedContextPrivate);
 
 /***********************************************************************
  * dri_extensions.c
  */
-void
-dri_init_extensions(struct dri_context *ctx);
+void dri_init_extensions(struct dri_context *ctx);
 
 #endif