remove intel_ioctl.c
authorkeithw <keithw@keithw-laptop.(none)>
Fri, 10 Aug 2007 23:18:47 +0000 (00:18 +0100)
committerkeithw <keithw@keithw-laptop.(none)>
Fri, 10 Aug 2007 23:18:47 +0000 (00:18 +0100)
src/mesa/drivers/dri/intel_winsys/Makefile
src/mesa/drivers/dri/intel_winsys/intel_blit.c [deleted file]
src/mesa/drivers/dri/intel_winsys/intel_blit.h [deleted file]
src/mesa/drivers/dri/intel_winsys/intel_buffers.c
src/mesa/drivers/dri/intel_winsys/intel_buffers.h
src/mesa/drivers/dri/intel_winsys/intel_winsys_i915.c
src/mesa/drivers/dri/intel_winsys/intel_winsys_pipe.c

index a5db6547a964bebef185d31d9a6ce1101dc37643..aca31f712d0fb9cbdfe2659f701e675b085b4817 100644 (file)
@@ -16,9 +16,7 @@ DRIVER_SOURCES = \
        intel_winsys_i915.c \
        intel_batchbuffer.c \
        intel_buffers.c \
-       intel_blit.c \
        intel_context.c \
-       intel_ioctl.c \
        intel_screen.c \
        intel_batchpool.c
 
diff --git a/src/mesa/drivers/dri/intel_winsys/intel_blit.c b/src/mesa/drivers/dri/intel_winsys/intel_blit.c
deleted file mode 100644 (file)
index 1578340..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-/**************************************************************************
- * 
- * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * 
- **************************************************************************/
-
-
-#include "mtypes.h"
-#include "context.h"
-#include "enums.h"
-
-#include "intel_batchbuffer.h"
-#include "intel_blit.h"
-#include "intel_buffers.h"
-#include "intel_context.h"
-#include "intel_reg.h"
-#include "vblank.h"
-
-#include "pipe/p_context.h"
-#include "state_tracker/st_cb_fbo.h"
-
-
-/**
- * Copy the back color buffer to the front color buffer. 
- * Used for SwapBuffers().
- */
-void
-intelCopyBuffer(__DRIdrawablePrivate * dPriv,
-                const drm_clip_rect_t * rect)
-{
-
-   struct intel_context *intel;
-   const intelScreenPrivate *intelScreen;
-
-   DBG(SWAP, "%s\n", __FUNCTION__);
-
-   assert(dPriv);
-
-   intel = intelScreenContext(dPriv->driScreenPriv->private);
-   if (!intel)
-      return;
-
-   intelScreen = intel->intelScreen;
-
-   if (intel->last_swap_fence) {
-      driFenceFinish(intel->last_swap_fence, DRM_FENCE_TYPE_EXE, GL_TRUE);
-      driFenceUnReference(intel->last_swap_fence);
-      intel->last_swap_fence = NULL;
-   }
-   intel->last_swap_fence = intel->first_swap_fence;
-   intel->first_swap_fence = NULL;
-
-   /* The LOCK_HARDWARE is required for the cliprects.  Buffer offsets
-    * should work regardless.
-    */
-   LOCK_HARDWARE(intel);
-   /* if this drawable isn't currently bound the LOCK_HARDWARE done on the
-      current context (which is what intelScreenContext should return) might
-      not get a contended lock and thus cliprects not updated (tests/manywin) */
-      if ((struct intel_context *)dPriv->driContextPriv->driverPrivate != intel)
-         DRI_VALIDATE_DRAWABLE_INFO(intel->driScreen, dPriv);
-
-
-   if (dPriv && dPriv->numClipRects) {
-      struct intel_framebuffer *intel_fb = dPriv->driverPrivate;
-#if 0
-      const struct pipe_region *backRegion
-        = intel_fb->Base._ColorDrawBufferMask[0] == BUFFER_BIT_FRONT_LEFT ?
-          intel_get_rb_region(&intel_fb->Base, BUFFER_FRONT_LEFT) :
-          intel_get_rb_region(&intel_fb->Base, BUFFER_BACK_LEFT);
-#endif
-      const int backWidth = intel_fb->Base.Width;
-      const int backHeight = intel_fb->Base.Height;
-      const int nbox = dPriv->numClipRects;
-      const drm_clip_rect_t *pbox = dPriv->pClipRects;
-      const int pitch = intelScreen->front.pitch / intelScreen->front.cpp;
-#if 0
-      const int srcpitch = backRegion->pitch;
-#endif
-      const int cpp = intelScreen->front.cpp;
-      int BR13, CMD;
-      int i;
-
-      const struct pipe_surface *backSurf;
-      const struct pipe_region *backRegion;
-      int srcpitch;
-      struct st_renderbuffer *strb;
-
-      /* blit from back color buffer if it exists, else front buffer */
-      strb = st_renderbuffer(intel_fb->Base.Attachment[BUFFER_BACK_LEFT].Renderbuffer);
-      if (strb) {
-         backSurf = strb->surface;
-      }
-      else {
-         strb = st_renderbuffer(intel_fb->Base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer);
-         backSurf = strb->surface;
-      }
-
-      backRegion = backSurf->region;
-      srcpitch = backRegion->pitch;
-
-      ASSERT(intel_fb);
-      ASSERT(intel_fb->Base.Name == 0);    /* Not a user-created FBO */
-      ASSERT(backRegion);
-      ASSERT(backRegion->cpp == cpp);
-
-      DBG(SWAP, "front pitch %d back pitch %d\n",
-         pitch, backRegion->pitch);
-
-      if (cpp == 2) {
-        BR13 = (pitch * cpp) | (0xCC << 16) | (1 << 24);
-        CMD = XY_SRC_COPY_BLT_CMD;
-      }
-      else {
-        BR13 = (pitch * cpp) | (0xCC << 16) | (1 << 24) | (1 << 25);
-        CMD = (XY_SRC_COPY_BLT_CMD | XY_SRC_COPY_BLT_WRITE_ALPHA |
-               XY_SRC_COPY_BLT_WRITE_RGB);
-      }
-
-      for (i = 0; i < nbox; i++, pbox++) {
-        drm_clip_rect_t box;
-        drm_clip_rect_t sbox;
-
-        if (pbox->x1 > pbox->x2 ||
-            pbox->y1 > pbox->y2 ||
-            pbox->x2 > intelScreen->front.width || 
-            pbox->y2 > intelScreen->front.height)
-           continue;
-
-        box = *pbox;
-
-        if (rect) {
-           drm_clip_rect_t rrect;
-
-           rrect.x1 = dPriv->x + rect->x1;
-           rrect.y1 = (dPriv->h - rect->y1 - rect->y2) + dPriv->y;
-           rrect.x2 = rect->x2 + rrect.x1;
-           rrect.y2 = rect->y2 + rrect.y1;
-           if (rrect.x1 > box.x1)
-              box.x1 = rrect.x1;
-           if (rrect.y1 > box.y1)
-              box.y1 = rrect.y1;
-           if (rrect.x2 < box.x2)
-              box.x2 = rrect.x2;
-           if (rrect.y2 < box.y2)
-              box.y2 = rrect.y2;
-
-           if (box.x1 > box.x2 || box.y1 > box.y2)
-              continue;
-        }
-
-        /* restrict blit to size of actually rendered area */
-        if (box.x2 - box.x1 > backWidth)
-           box.x2 = backWidth + box.x1;
-        if (box.y2 - box.y1 > backHeight)
-           box.y2 = backHeight + box.y1;
-
-        DBG(SWAP, "box x1 x2 y1 y2 %d %d %d %d\n",
-            box.x1, box.x2, box.y1, box.y2);
-
-        sbox.x1 = box.x1 - dPriv->x;
-        sbox.y1 = box.y1 - dPriv->y;
-
-        BEGIN_BATCH(8, INTEL_BATCH_NO_CLIPRECTS);
-        OUT_BATCH(CMD);
-        OUT_BATCH(BR13);
-        OUT_BATCH((box.y1 << 16) | box.x1);
-        OUT_BATCH((box.y2 << 16) | box.x2);
-
-        OUT_RELOC(intelScreen->front.buffer, 
-                  DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_WRITE,
-                  DRM_BO_MASK_MEM | DRM_BO_FLAG_WRITE, 0);
-        OUT_BATCH((sbox.y1 << 16) | sbox.x1);
-        OUT_BATCH((srcpitch * cpp) & 0xffff);
-        OUT_RELOC(backRegion->buffer, DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_READ,
-                  DRM_BO_MASK_MEM | DRM_BO_FLAG_READ, 0);
-
-        ADVANCE_BATCH();
-      }
-
-      if (intel->first_swap_fence)
-        driFenceUnReference(intel->first_swap_fence);
-      intel->first_swap_fence = intel_batchbuffer_flush(intel->batch);
-      driFenceReference(intel->first_swap_fence);
-   }
-
-   UNLOCK_HARDWARE(intel);
-
-   /* XXX this is bogus. The context here may not even be bound to this drawable! */
-   if (intel->lastStamp != dPriv->lastStamp) {
-      GET_CURRENT_CONTEXT(currctx);
-      struct intel_context *intelcurrent = intel_context(currctx);
-      if (intelcurrent == intel && intelcurrent->driDrawable == dPriv) {
-         intelWindowMoved(intel);
-         intel->lastStamp = dPriv->lastStamp;
-      }
-   }
-
-}
-
-
-
-
-
-
-
diff --git a/src/mesa/drivers/dri/intel_winsys/intel_blit.h b/src/mesa/drivers/dri/intel_winsys/intel_blit.h
deleted file mode 100644 (file)
index 46c2594..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/**************************************************************************
- * 
- * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * 
- **************************************************************************/
-
-#ifndef INTEL_BLIT_H
-#define INTEL_BLIT_H
-
-#include "intel_context.h"
-#include "intel_ioctl.h"
-#include "dri_bufmgr.h"
-
-extern void intelCopyBuffer(__DRIdrawablePrivate * dpriv,
-                            const drm_clip_rect_t * rect);
-
-extern void intelClearWithBlit(GLcontext * ctx, GLbitfield mask);
-
-extern void intelEmitCopyBlit(struct intel_context *intel,
-                              GLuint cpp,
-                              GLshort src_pitch,
-                              struct _DriBufferObject *src_buffer,
-                              GLuint src_offset,
-                              GLshort dst_pitch,
-                              struct _DriBufferObject *dst_buffer,
-                              GLuint dst_offset,
-                              GLshort srcx, GLshort srcy,
-                              GLshort dstx, GLshort dsty,
-                              GLshort w, GLshort h,
-                             GLenum logicop );
-
-extern void intelEmitFillBlit(struct intel_context *intel,
-                              GLuint cpp,
-                              GLshort dst_pitch,
-                              struct _DriBufferObject *dst_buffer,
-                              GLuint dst_offset,
-                              GLshort x, GLshort y,
-                              GLshort w, GLshort h, GLuint value, GLuint mask);
-
-
-#endif
index 1bd2a36738becf91f43fba061e11e958a9207d81..0823c5c8eaf7fff8f2317d48666a68075b6614de 100644 (file)
@@ -27,7 +27,6 @@
 
 #include "intel_screen.h"
 #include "intel_context.h"
-#include "intel_blit.h"
 #include "intel_buffers.h"
 #include "intel_batchbuffer.h"
 #include "intel_reg.h"
@@ -37,6 +36,7 @@
 #include "vblank.h"
 
 #include "pipe/p_context.h"
+#include "state_tracker/st_cb_fbo.h"
 
 
 /* This block can be removed when libdrm >= 2.3.1 is required */
@@ -56,41 +56,188 @@ typedef struct drm_i915_flip {
 #endif
 
 
+
+
 /**
- * XXX move this into a new dri/common/cliprects.c file.
+ * Copy the back color buffer to the front color buffer. 
+ * Used for SwapBuffers().
  */
-GLboolean
-intel_intersect_cliprects(drm_clip_rect_t * dst,
-                          const drm_clip_rect_t * a,
-                          const drm_clip_rect_t * b)
+void
+intelCopyBuffer(__DRIdrawablePrivate * dPriv,
+                const drm_clip_rect_t * rect)
 {
-   GLint bx = b->x1;
-   GLint by = b->y1;
-   GLint bw = b->x2 - bx;
-   GLint bh = b->y2 - by;
-
-   if (bx < a->x1)
-      bw -= a->x1 - bx, bx = a->x1;
-   if (by < a->y1)
-      bh -= a->y1 - by, by = a->y1;
-   if (bx + bw > a->x2)
-      bw = a->x2 - bx;
-   if (by + bh > a->y2)
-      bh = a->y2 - by;
-   if (bw <= 0)
-      return GL_FALSE;
-   if (bh <= 0)
-      return GL_FALSE;
 
-   dst->x1 = bx;
-   dst->y1 = by;
-   dst->x2 = bx + bw;
-   dst->y2 = by + bh;
+   struct intel_context *intel;
+   const intelScreenPrivate *intelScreen;
+
+   DBG(SWAP, "%s\n", __FUNCTION__);
+
+   assert(dPriv);
+
+   intel = intelScreenContext(dPriv->driScreenPriv->private);
+   if (!intel)
+      return;
+
+   intelScreen = intel->intelScreen;
+
+   if (intel->last_swap_fence) {
+      driFenceFinish(intel->last_swap_fence, DRM_FENCE_TYPE_EXE, GL_TRUE);
+      driFenceUnReference(intel->last_swap_fence);
+      intel->last_swap_fence = NULL;
+   }
+   intel->last_swap_fence = intel->first_swap_fence;
+   intel->first_swap_fence = NULL;
+
+   /* The LOCK_HARDWARE is required for the cliprects.  Buffer offsets
+    * should work regardless.
+    */
+   LOCK_HARDWARE(intel);
+   /* if this drawable isn't currently bound the LOCK_HARDWARE done on the
+      current context (which is what intelScreenContext should return) might
+      not get a contended lock and thus cliprects not updated (tests/manywin) */
+      if ((struct intel_context *)dPriv->driContextPriv->driverPrivate != intel)
+         DRI_VALIDATE_DRAWABLE_INFO(intel->driScreen, dPriv);
+
+
+   if (dPriv && dPriv->numClipRects) {
+      struct intel_framebuffer *intel_fb = dPriv->driverPrivate;
+#if 0
+      const struct pipe_region *backRegion
+        = intel_fb->Base._ColorDrawBufferMask[0] == BUFFER_BIT_FRONT_LEFT ?
+          intel_get_rb_region(&intel_fb->Base, BUFFER_FRONT_LEFT) :
+          intel_get_rb_region(&intel_fb->Base, BUFFER_BACK_LEFT);
+#endif
+      const int backWidth = intel_fb->Base.Width;
+      const int backHeight = intel_fb->Base.Height;
+      const int nbox = dPriv->numClipRects;
+      const drm_clip_rect_t *pbox = dPriv->pClipRects;
+      const int pitch = intelScreen->front.pitch / intelScreen->front.cpp;
+#if 0
+      const int srcpitch = backRegion->pitch;
+#endif
+      const int cpp = intelScreen->front.cpp;
+      int BR13, CMD;
+      int i;
+
+      const struct pipe_surface *backSurf;
+      const struct pipe_region *backRegion;
+      int srcpitch;
+      struct st_renderbuffer *strb;
+
+      /* blit from back color buffer if it exists, else front buffer */
+      strb = st_renderbuffer(intel_fb->Base.Attachment[BUFFER_BACK_LEFT].Renderbuffer);
+      if (strb) {
+         backSurf = strb->surface;
+      }
+      else {
+         strb = st_renderbuffer(intel_fb->Base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer);
+         backSurf = strb->surface;
+      }
+
+      backRegion = backSurf->region;
+      srcpitch = backRegion->pitch;
+
+      ASSERT(intel_fb);
+      ASSERT(intel_fb->Base.Name == 0);    /* Not a user-created FBO */
+      ASSERT(backRegion);
+      ASSERT(backRegion->cpp == cpp);
+
+      DBG(SWAP, "front pitch %d back pitch %d\n",
+         pitch, backRegion->pitch);
+
+      if (cpp == 2) {
+        BR13 = (pitch * cpp) | (0xCC << 16) | (1 << 24);
+        CMD = XY_SRC_COPY_BLT_CMD;
+      }
+      else {
+        BR13 = (pitch * cpp) | (0xCC << 16) | (1 << 24) | (1 << 25);
+        CMD = (XY_SRC_COPY_BLT_CMD | XY_SRC_COPY_BLT_WRITE_ALPHA |
+               XY_SRC_COPY_BLT_WRITE_RGB);
+      }
+
+      for (i = 0; i < nbox; i++, pbox++) {
+        drm_clip_rect_t box;
+        drm_clip_rect_t sbox;
+
+        if (pbox->x1 > pbox->x2 ||
+            pbox->y1 > pbox->y2 ||
+            pbox->x2 > intelScreen->front.width || 
+            pbox->y2 > intelScreen->front.height)
+           continue;
+
+        box = *pbox;
+
+        if (rect) {
+           drm_clip_rect_t rrect;
+
+           rrect.x1 = dPriv->x + rect->x1;
+           rrect.y1 = (dPriv->h - rect->y1 - rect->y2) + dPriv->y;
+           rrect.x2 = rect->x2 + rrect.x1;
+           rrect.y2 = rect->y2 + rrect.y1;
+           if (rrect.x1 > box.x1)
+              box.x1 = rrect.x1;
+           if (rrect.y1 > box.y1)
+              box.y1 = rrect.y1;
+           if (rrect.x2 < box.x2)
+              box.x2 = rrect.x2;
+           if (rrect.y2 < box.y2)
+              box.y2 = rrect.y2;
+
+           if (box.x1 > box.x2 || box.y1 > box.y2)
+              continue;
+        }
+
+        /* restrict blit to size of actually rendered area */
+        if (box.x2 - box.x1 > backWidth)
+           box.x2 = backWidth + box.x1;
+        if (box.y2 - box.y1 > backHeight)
+           box.y2 = backHeight + box.y1;
+
+        DBG(SWAP, "box x1 x2 y1 y2 %d %d %d %d\n",
+            box.x1, box.x2, box.y1, box.y2);
+
+        sbox.x1 = box.x1 - dPriv->x;
+        sbox.y1 = box.y1 - dPriv->y;
+
+        BEGIN_BATCH(8, INTEL_BATCH_NO_CLIPRECTS);
+        OUT_BATCH(CMD);
+        OUT_BATCH(BR13);
+        OUT_BATCH((box.y1 << 16) | box.x1);
+        OUT_BATCH((box.y2 << 16) | box.x2);
+
+        OUT_RELOC(intelScreen->front.buffer, 
+                  DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_WRITE,
+                  DRM_BO_MASK_MEM | DRM_BO_FLAG_WRITE, 0);
+        OUT_BATCH((sbox.y1 << 16) | sbox.x1);
+        OUT_BATCH((srcpitch * cpp) & 0xffff);
+        OUT_RELOC(backRegion->buffer, DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_READ,
+                  DRM_BO_MASK_MEM | DRM_BO_FLAG_READ, 0);
+
+        ADVANCE_BATCH();
+      }
+
+      if (intel->first_swap_fence)
+        driFenceUnReference(intel->first_swap_fence);
+      intel->first_swap_fence = intel_batchbuffer_flush(intel->batch);
+      driFenceReference(intel->first_swap_fence);
+   }
+
+   UNLOCK_HARDWARE(intel);
+
+   /* XXX this is bogus. The context here may not even be bound to this drawable! */
+   if (intel->lastStamp != dPriv->lastStamp) {
+      GET_CURRENT_CONTEXT(currctx);
+      struct intel_context *intelcurrent = intel_context(currctx);
+      if (intelcurrent == intel && intelcurrent->driDrawable == dPriv) {
+         intelWindowMoved(intel);
+         intel->lastStamp = dPriv->lastStamp;
+      }
+   }
 
-   return GL_TRUE;
 }
 
 
+
 /**
  * This will be called whenever the currently bound window is moved/resized.
  * XXX: actually, it seems to NOT be called when the window is only moved (BP).
index 3e1597e3c4c7c1d98a9fe0ede0e137bf12ba4f95..d12b5ef96e22d6ea5449a4196b7384f7b7ccf871 100644 (file)
@@ -62,10 +62,8 @@ struct intel_framebuffer
 };
 
 
-extern GLboolean
-intel_intersect_cliprects(drm_clip_rect_t * dest,
-                          const drm_clip_rect_t * a,
-                          const drm_clip_rect_t * b);
+void intelCopyBuffer(__DRIdrawablePrivate * dPriv,
+                    const drm_clip_rect_t * rect);
 
 extern void intel_wait_flips(struct intel_context *intel, GLuint batch_flags);
 
index 56a27a9c31986b5426ca9cd2b3833dd7ff3f43f4..f6eb0501521e8f5cf07d6cc6189e64ce5903ffaf 100644 (file)
@@ -37,7 +37,6 @@
 #include "intel_context.h"
 #include "intel_batchbuffer.h"
 #include "intel_winsys.h"
-#include "intel_blit.h"
 
 #include "pipe/i915simple/i915_winsys.h"
 
index eb64f5aa201e7ffed6bb0112492ad291ed64eda8..bedc7d14ab136e7928416f8c80a08f0a8b854789 100644 (file)
@@ -36,8 +36,8 @@
 
 #include "intel_context.h"
 #include "intel_winsys.h"
+#include "intel_buffers.h"
 #include "intel_batchbuffer.h"
-#include "intel_blit.h"
 
 #include "pipe/p_winsys.h"
 #include "pipe/p_defines.h"