[Frugalware-darcs] xorg-mess: xorg-server-1.2.99.0-1-x86_64

Christian Hamar alias krix krics at linuxforum.hu
Mon Nov 13 22:34:36 CET 2006


Darcsweb-Url: http://darcs.frugalware.org/darcsweb/darcsweb.cgi?r=xorg-mess;a=darcs_commitdiff;h=20061113213350-d209c-97be7b4eaf59bda505c21643ef952e050503af71.gz;

[xorg-server-1.2.99.0-1-x86_64
Christian Hamar alias krix <krics at linuxforum.hu>**20061113213350
   * Version bump
   * Depends on latest stuff which is in xorg-mess repo
 
] {
hunk ./source/x11/xorg-server/FrugalBuild 5
-pkgver=1.1.99.901
+pkgver=1.2.99.0
hunk ./source/x11/xorg-server/FrugalBuild 7
-mesaver=6.5.1
+mesaver=6.5.2
hunk ./source/x11/xorg-server/FrugalBuild 14
-	'libxi' 'freetype2' 'mesa>=6.5.1-3' 'font-cursor-misc' 'font-misc-misc' \
+	'libxi>=1.1.0' 'freetype2' 'mesa>=6.5.2-2' 'font-cursor-misc' 'font-misc-misc' \
hunk ./source/x11/xorg-server/FrugalBuild 17
-	'xorg-cf-files' 'libxtst' 'font-alias')
+	'xorg-cf-files' 'libxtst' 'font-alias' 'libxcb')
hunk ./source/x11/xorg-server/FrugalBuild 21
-	'trapproto' 'xineramaproto' 'fontsproto' 'kbproto' 'inputproto' 'bigreqsproto' 'xcmiscproto' \
-	'glproto' 'xf86driproto' 'libdrm' 'printproto' 'mkfontdir' 'mkfontscale>=1.0.2' 'fontcacheproto' 'xorg-sgml-doctools')
+	'trapproto' 'xineramaproto' 'fontsproto' 'kbproto' 'inputproto>=1.4' 'bigreqsproto' 'xcmiscproto' \
+	'glproto' 'xf86driproto' 'libdrm>=2.3.0' 'printproto' 'mkfontdir' 'mkfontscale>=1.0.3' 'fontcacheproto' 'xorg-sgml-doctools')
hunk ./source/x11/xorg-server/FrugalBuild 28
-source=(${source[@]} http://heanet.dl.sourceforge.net/sourceforge/mesa3d/MesaLib-$mesaver.tar.bz2 \
+source=(${source[@]} http://ftp.frugalware.org/pub/other/sources/mesa-cvs/Mesa-$mesaver.tar.bz2 \
hunk ./source/x11/xorg-server/FrugalBuild 36
-	post-6.5.1-i965-fixes.patch \
hunk ./source/x11/xorg-server/FrugalBuild 39
-sha1sums=('9201f9ec7250eb76dabbc2beb50158aa37ff9b9e' \
-	  'cd3b314808534b0306c7f89e9a72c9c23dbff239' \
+sha1sums=('06bee10153da39f0f3cc89ca92bca766e996ebdf' \
+	  '70b689542e0522e233b60bcaa6201b856709e59b' \
hunk ./source/x11/xorg-server/FrugalBuild 48
-	  '9141ecfa0f9dd8290b6fce840920af181c3deb87' \
hunk ./source/x11/xorg-server/FrugalBuild 63
-	Fpatch post-6.5.1-i965-fixes.patch
hunk ./source/x11/xorg-server/FrugalBuild 79
-		--enable-xprint \
+		--disable-xprint \
hunk ./source/x11/xorg-server/FrugalBuild 82
+		--disable-dbus \
hunk ./source/x11/xorg-server/FrugalBuild 100
-	Frcd xprint
+#	Disabled for reasons :P
+#	Frcd xprint
hunk ./source/x11/xorg-server/FrugalBuild 104
-	Fmkdir /etc/X11/Xsession.d.xprint
-	Fmv /etc/X11/Xsession.d/92* /etc/X11/Xsession.d.xprint/
+#	Fmkdir /etc/X11/Xsession.d.xprint
+#	Fmv /etc/X11/Xsession.d/92* /etc/X11/Xsession.d.xprint/
hunk ./source/x11/xorg-server/post-6.5.1-i965-fixes.patch 1
-diff --git a/src/mesa/drivers/dri/i965/Makefile b/src/mesa/drivers/dri/i965/Makefile
-index e4fb451..dfa9318 100644
---- a/src/mesa/drivers/dri/i965/Makefile
-+++ b/src/mesa/drivers/dri/i965/Makefile
-@@ -16,6 +16,7 @@ DRIVER_SOURCES = \
- 	intel_regions.c \
- 	intel_screen.c \
- 	intel_span.c \
-+	intel_pixel_copy.c \
- 	intel_state.c \
- 	intel_tex.c \
- 	intel_tex_validate.c \
-diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c
-index f12fb4c..e476b18 100644
---- a/src/mesa/drivers/dri/i965/brw_draw.c
-+++ b/src/mesa/drivers/dri/i965/brw_draw.c
-@@ -328,6 +328,7 @@ static GLboolean brw_try_draw_prims( GLc
- 	 brw_emit_prim(brw, &prim[i]);   
-       }
-       
-+      intel->need_flush = GL_TRUE;
-       retval = GL_TRUE;
-    }
- 
-@@ -400,7 +401,7 @@ GLboolean brw_draw_prims( GLcontext *ctx
-       retval = brw_try_draw_prims(ctx, arrays, prim, nr_prims, ib, min_index, max_index, flags);
-    }
- 
--   if (intel->aub_file) {
-+   if (intel->aub_file && (INTEL_DEBUG & DEBUG_SYNC)) {
-       intelFinish( &intel->ctx );
-       intel->aub_wrap = 1;
-    }
-diff --git a/src/mesa/drivers/dri/i965/brw_exec_api.c b/src/mesa/drivers/dri/i965/brw_exec_api.c
-index ca012db..470fa6f 100644
---- a/src/mesa/drivers/dri/i965/brw_exec_api.c
-+++ b/src/mesa/drivers/dri/i965/brw_exec_api.c
-@@ -394,7 +394,7 @@ static void GLAPIENTRY brw_exec_EvalCoor
- 
-       for (i = 0 ; i <= BRW_ATTRIB_INDEX ; i++) {
- 	 if (exec->eval.map1[i].map) 
--	    if (exec->vtx.attrsz[i] != exec->eval.map1[i].sz)
-+	    if (exec->vtx.active_sz[i] != exec->eval.map1[i].sz)
- 	       brw_exec_fixup_vertex( ctx, i, exec->eval.map1[i].sz );
-       }
-    }
-diff --git a/src/mesa/drivers/dri/i965/brw_tex.c b/src/mesa/drivers/dri/i965/brw_tex.c
-index d70b2ea..8332d86 100644
---- a/src/mesa/drivers/dri/i965/brw_tex.c
-+++ b/src/mesa/drivers/dri/i965/brw_tex.c
-@@ -49,34 +49,57 @@ #include "brw_defines.h"
- 
- static const struct gl_texture_format *
- brwChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
--			 GLenum format, GLenum type )
-+			 GLenum srcFormat, GLenum srcType )
- {
-    switch ( internalFormat ) {
-    case 4:
-    case GL_RGBA:
-    case GL_COMPRESSED_RGBA:
-+      if (srcFormat == GL_BGRA && srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV)
-+	 return &_mesa_texformat_argb4444;
-+      else if (srcFormat == GL_BGRA && srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV)
-+	 return &_mesa_texformat_argb1555;
-+      else if ((srcFormat == GL_RGBA && srcType == GL_UNSIGNED_INT_8_8_8_8_REV) ||
-+	       (srcFormat == GL_RGBA && srcType == GL_UNSIGNED_BYTE) ||
-+	       (srcFormat == GL_ABGR_EXT && srcType == GL_UNSIGNED_INT_8_8_8_8)) 
-+	 return &_mesa_texformat_rgba8888_rev;
-+      else
-+	 return &_mesa_texformat_argb8888;
-+
-    case GL_RGBA8:
-    case GL_RGB10_A2:
-    case GL_RGBA12:
-    case GL_RGBA16:
--   case GL_RGBA4:
--   case GL_RGBA2:
--   case GL_RGB5_A1:
-       return &_mesa_texformat_argb8888; 
--/*       return &_mesa_texformat_rgba8888_rev; */
- 
--   case 3:
--   case GL_RGB:
--   case GL_COMPRESSED_RGB:
-    case GL_RGB8:
-    case GL_RGB10:
-    case GL_RGB12:
-    case GL_RGB16:
-+      /* Broadwater doesn't support RGB888 textures, so these must be
-+       * stored as ARGB.
-+       */
-+      return &_mesa_texformat_argb8888;
-+
-+   case 3:
-+   case GL_COMPRESSED_RGB:
-+   case GL_RGB:
-+      if (srcFormat == GL_RGB &&
-+	  srcType == GL_UNSIGNED_SHORT_5_6_5)
-+	 return &_mesa_texformat_rgb565;
-+      else
-+	 return &_mesa_texformat_argb8888;
-+
-+
-    case GL_RGB5:
--   case GL_RGB4:
-+   case GL_RGB5_A1:
-+      return &_mesa_texformat_argb1555;
-+
-    case GL_R3_G3_B2:
--/*       return &_mesa_texformat_rgb888; */
--      return &_mesa_texformat_argb8888;
-+   case GL_RGBA2:
-+   case GL_RGBA4:
-+   case GL_RGB4:
-+      return &_mesa_texformat_argb4444;
- 
-    case GL_ALPHA:
-    case GL_ALPHA4:
-@@ -115,8 +138,8 @@ brwChooseTextureFormat( GLcontext *ctx, 
-       return &_mesa_texformat_i8;
- 
-    case GL_YCBCR_MESA:
--      if (type == GL_UNSIGNED_SHORT_8_8_MESA ||
--	  type == GL_UNSIGNED_BYTE)
-+      if (srcType == GL_UNSIGNED_SHORT_8_8_MESA ||
-+	  srcType == GL_UNSIGNED_BYTE)
-          return &_mesa_texformat_ycbcr;
-       else
-          return &_mesa_texformat_ycbcr_rev;
-diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c b/src/mesa/drivers/dri/i965/brw_tex_layout.c
-index f8aa068..1353325 100644
---- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
-+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
-@@ -138,13 +138,16 @@ GLboolean brw_miptree_layout( struct int
- 	 
- 	 /* Layout_below: step right after second mipmap.
- 	  */
--	 if (level == mt->first_level + 1) 
-+	 if (level == mt->first_level + 1) {
- 	    x += mt->pitch / 2;
-+	    x = (x + 3) & ~ 3;
-+	 }
- 	 else {
- 	    y += img_height;
-+	    y += align_h - 1;
-+	    y &= ~(align_h - 1);
- 	 }
- 
--
- 	 width  = minify(width);
- 	 height = minify(height);
-       }
-diff --git a/src/mesa/drivers/dri/i965/brw_util.c b/src/mesa/drivers/dri/i965/brw_util.c
-index 5957b71..9d12c26 100644
---- a/src/mesa/drivers/dri/i965/brw_util.c
-+++ b/src/mesa/drivers/dri/i965/brw_util.c
-@@ -98,6 +98,8 @@ static GLuint brw_parameter_state_flags(
-       switch (state[1]) {
-       case STATE_NORMAL_SCALE:
- 	 return _NEW_MODELVIEW;
-+      case STATE_TEXRECT_SCALE:
-+	 return _NEW_TEXTURE;
-       default:
- 	 assert(0);
- 	 return 0;
-diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h
-index 74c3bbe..ec6ad61 100644
---- a/src/mesa/drivers/dri/i965/brw_wm.h
-+++ b/src/mesa/drivers/dri/i965/brw_wm.h
-@@ -167,6 +167,7 @@ #define WM_PINTERP        (MAX_OPCODE + 
- #define WM_CINTERP        (MAX_OPCODE + 5)
- #define WM_WPOSXY         (MAX_OPCODE + 6)
- #define WM_FB_WRITE       (MAX_OPCODE + 7)
-+#define MAX_WM_OPCODE     (MAX_OPCODE + 8)
- 
- #define PROGRAM_PAYLOAD   (PROGRAM_FILE_MAX)
- #define PAYLOAD_DEPTH     (FRAG_ATTRIB_MAX)
-diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c
-index 203eeea..8bf5579 100644
---- a/src/mesa/drivers/dri/i965/brw_wm_fp.c
-+++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c
-@@ -520,6 +520,35 @@ static void precalc_lit( struct brw_wm_c
- static void precalc_tex( struct brw_wm_compile *c,
- 			 const struct prog_instruction *inst )
- {
-+   struct prog_src_register coord;
-+   struct prog_dst_register tmpcoord;
-+
-+   if (inst->TexSrcTarget == TEXTURE_RECT_INDEX) {
-+      struct prog_src_register scale = 
-+	 search_or_add_param6( c, 
-+			       STATE_INTERNAL, 
-+			       STATE_TEXRECT_SCALE,
-+			       inst->TexSrcUnit,
-+			       0,0,0 );
-+
-+      tmpcoord = get_temp(c);
-+
-+      /* coord.xy   = MUL inst->SrcReg[0], { 1/width, 1/height }
-+       */
-+      emit_op(c,
-+	      OPCODE_MUL,
-+	      tmpcoord,
-+	      0, 0, 0,
-+	      inst->SrcReg[0],
-+	      scale,
-+	      src_undef());
-+
-+      coord = src_reg_from_dst(tmpcoord);
-+   }
-+   else {
-+      coord = inst->SrcReg[0];
-+   }
-+
-    /* Need to emit YUV texture conversions by hand.  Probably need to
-     * do this here - the alternative is in brw_wm_emit.c, but the
-     * conversion requires allocating a temporary variable which we
-@@ -532,7 +561,7 @@ static void precalc_tex( struct brw_wm_c
- 	      inst->SaturateMode,
- 	      inst->TexSrcUnit,
- 	      inst->TexSrcTarget,
--	      inst->SrcReg[0],
-+	      coord,
- 	      src_undef(),
- 	      src_undef());
-    }
-@@ -604,7 +633,12 @@ static void precalc_tex( struct brw_wm_c
- 	      src_swizzle1(tmpsrc, Z),
- 	      src_swizzle1(C1, W),
- 	      src_swizzle1(src_reg_from_dst(dst), Y));
-+
-+      release_temp(c, tmp);
-    }
-+
-+   if (inst->TexSrcTarget == GL_TEXTURE_RECTANGLE_NV) 
-+      release_temp(c, tmpcoord);
- }
- 
- 
-@@ -769,6 +803,27 @@ static void validate_src_regs( struct br
- 	 
- 
- 
-+static void print_insns( const struct prog_instruction *insn,
-+			 GLuint nr )
-+{
-+   GLuint i;
-+   for (i = 0; i < nr; i++, insn++) {
-+      _mesa_printf("%3d: ", i);
-+      if (insn->Opcode < MAX_OPCODE)
-+	 _mesa_print_instruction(insn);
-+      else if (insn->Opcode < MAX_WM_OPCODE) {
-+	 GLuint idx = insn->Opcode - MAX_OPCODE;
-+
-+	 _mesa_print_alu_instruction(insn,
-+				     wm_opcode_strings[idx],
-+				     3);
-+      }
-+      else 
-+	 _mesa_printf("UNKNOWN\n");
-+	   
-+   }
-+}
-+
- void brw_wm_pass_fp( struct brw_wm_compile *c )
- {
-    struct brw_fragment_program *fp = c->fp;
-@@ -867,7 +922,7 @@ void brw_wm_pass_fp( struct brw_wm_compi
- 
-    if (INTEL_DEBUG & DEBUG_WM) {
-       _mesa_printf("\n\n\npass_fp:\n");
--/*       _mesa_debug_fp_inst(c->nr_fp_insns, c->prog_instructions, wm_opcode_strings, wm_file_strings);  */
-+      print_insns( c->prog_instructions, c->nr_fp_insns );
-       _mesa_printf("\n");
-    }
- }
-diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
-index 6ccf56e..5c7dc50 100644
---- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
-+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
-@@ -85,7 +85,8 @@ static GLuint translate_tex_format( GLui
-       return BRW_SURFACEFORMAT_L8A8_UNORM;
- 
-    case MESA_FORMAT_RGB888:
--      return BRW_SURFACEFORMAT_R8G8B8_UNORM;
-+      assert(0);		/* not supported for sampling */
-+      return BRW_SURFACEFORMAT_R8G8B8_UNORM;      
- 
-    case MESA_FORMAT_ARGB8888:
-       return BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
-@@ -93,6 +94,15 @@ static GLuint translate_tex_format( GLui
-    case MESA_FORMAT_RGBA8888_REV:
-       return BRW_SURFACEFORMAT_R8G8B8A8_UNORM;
- 
-+   case MESA_FORMAT_RGB565:
-+      return BRW_SURFACEFORMAT_B5G6R5_UNORM;
-+
-+   case MESA_FORMAT_ARGB1555:
-+      return BRW_SURFACEFORMAT_B5G5R5A1_UNORM;
-+
-+   case MESA_FORMAT_ARGB4444:
-+      return BRW_SURFACEFORMAT_B4G4R4A4_UNORM;
-+
-    case MESA_FORMAT_YCBCR_REV:
-       return BRW_SURFACEFORMAT_YCRCB_NORMAL;
- 
-diff --git a/src/mesa/drivers/dri/i965/bufmgr.h b/src/mesa/drivers/dri/i965/bufmgr.h
-index 83a810c..6932522 100644
---- a/src/mesa/drivers/dri/i965/bufmgr.h
-+++ b/src/mesa/drivers/dri/i965/bufmgr.h
-@@ -182,6 +182,8 @@ void bmUnmapBufferAUB( struct intel_cont
- int bmValidateBuffers( struct intel_context * );
- void bmReleaseBuffers( struct intel_context * );
- 
-+GLuint bmCtxId( struct intel_context *intel );
-+
- 
- GLboolean bmError( struct intel_context * );
- void bmEvictAll( struct intel_context * );
-diff --git a/src/mesa/drivers/dri/i965/bufmgr_fake.c b/src/mesa/drivers/dri/i965/bufmgr_fake.c
-index 8f182f3..30a235a 100644
---- a/src/mesa/drivers/dri/i965/bufmgr_fake.c
-+++ b/src/mesa/drivers/dri/i965/bufmgr_fake.c
-@@ -117,6 +117,7 @@ struct bufmgr {
-    struct block fenced;		/* after bmFenceBuffers (mi_flush, emit irq, write dword) */
-                                 /* then to pool->lru or free() */
- 
-+   unsigned ctxId;
-    unsigned last_fence;
-    unsigned free_on_hardware;
- 
-@@ -578,6 +579,12 @@ struct bufmgr *bm_fake_intel_Attach( str
-       make_empty_list(&bm.referenced);
-       make_empty_list(&bm.fenced);
-       make_empty_list(&bm.on_hardware);
-+      
-+      /* The context id of any of the share group.  This won't be used
-+       * in communication with the kernel, so it doesn't matter if
-+       * this context is eventually deleted.
-+       */
-+      bm.ctxId = intel->hHWContext;
-    }
- 
-    nr_attach++;
-@@ -1242,7 +1249,6 @@ void bmReleaseBuffers( struct intel_cont
-    LOCK(bm);
-    {
-       struct block *block, *tmp;
--      assert(intel->locked);
- 
-       foreach_s (block, tmp, &bm->referenced) {
- 
-@@ -1432,3 +1438,9 @@ GLboolean bmError( struct intel_context 
- 
-    return retval;
- }
-+
-+
-+GLuint bmCtxId( struct intel_context *intel )
-+{
-+   return intel->bm->ctxId;
-+}
-diff --git a/src/mesa/drivers/dri/i965/intel_blit.c b/src/mesa/drivers/dri/i965/intel_blit.c
-index 2191dd5..b09b0a9 100644
---- a/src/mesa/drivers/dri/i965/intel_blit.c
-+++ b/src/mesa/drivers/dri/i965/intel_blit.c
-@@ -74,9 +74,6 @@ void intelCopyBuffer( const __DRIdrawabl
- 
-    if (!rect)
-    {
--      /* This is a really crappy way to do wait-for-vblank.  I guess
--       * it sortof works in the single-application case.
--       */
-        UNLOCK_HARDWARE( intel );
-        driWaitForVBlank( dPriv, &intel->vbl_seq, intel->vblank_flags, & missed_target );
-        LOCK_HARDWARE( intel );
-@@ -291,8 +288,12 @@ void intelEmitCopyBlit( struct intel_con
- 
-    /* Initial y values don't seem to work with negative pitches.  If
-     * we adjust the offsets manually (below), it seems to work fine.
-+    *
-+    * On the other hand, if we always adjust, the hardware doesn't
-+    * know which blit directions to use, so overlapping copypixels get
-+    * the wrong result.
-     */
--   if (0) {
-+   if (dst_pitch > 0 && src_pitch > 0) {
-       BEGIN_BATCH(8, INTEL_BATCH_NO_CLIPRECTS);
-       OUT_BATCH( CMD );
-       OUT_BATCH( dst_pitch | BR13 );
-diff --git a/src/mesa/drivers/dri/i965/intel_context.c b/src/mesa/drivers/dri/i965/intel_context.c
-index 59fc807..5f19137 100644
---- a/src/mesa/drivers/dri/i965/intel_context.c
-+++ b/src/mesa/drivers/dri/i965/intel_context.c
-@@ -149,6 +149,10 @@ const struct dri_extension card_extensio
-     { "GL_ARB_texture_env_combine",        NULL },
-     { "GL_ARB_texture_env_dot3",           NULL },
-     { "GL_ARB_texture_mirrored_repeat",    NULL },
-+    { "GL_ARB_texture_non_power_of_two",   NULL },
-+    { "GL_ARB_texture_rectangle",          NULL },
-+    { "GL_NV_texture_rectangle",           NULL },
-+    { "GL_EXT_texture_rectangle",          NULL },
-     { "GL_ARB_texture_rectangle",          NULL },
-     { "GL_ARB_vertex_buffer_object",       GL_ARB_vertex_buffer_object_functions },
-     { "GL_ARB_vertex_program",             GL_ARB_vertex_program_functions },
-@@ -255,10 +259,14 @@ void intelInitDriverFunctions( struct dd
-     */
-    functions->Accum = _swrast_Accum;
-    functions->Bitmap = _swrast_Bitmap;
--   functions->CopyPixels = _swrast_CopyPixels;
-    functions->ReadPixels = _swrast_ReadPixels;
-    functions->DrawPixels = _swrast_DrawPixels;
- 
-+   /* CopyPixels can be accelerated even with the current memory
-+    * manager:
-+    */
-+   functions->CopyPixels = intelCopyPixels;
-+
-    intelInitTextureFuncs( functions );
-    intelInitStateFuncs( functions );
-    intelInitBufferFuncs( functions );
-@@ -370,8 +378,6 @@ GLboolean intelInitContext( struct intel
-       exit(1);
-    }
-  
--   _math_matrix_ctr (&intel->ViewportMatrix);
--
-    driInitExtensions( ctx, card_extensions, 
- 		      GL_TRUE );
- 
-@@ -446,8 +452,6 @@ GLboolean intelInitContext( struct intel
- /* 			  DRI_TEXMGR_DO_TEXTURE_RECT ); */
- 
- 
--   intel->prim.primitive = ~0;
--
-    if (getenv("INTEL_NO_RAST")) {
-       fprintf(stderr, "disabling 3D rasterization\n");
-       intel->no_rast = 1;
-@@ -537,18 +541,13 @@ GLboolean intelMakeCurrent(__DRIcontextP
- }
- 
- 
--static void lost_hardware( struct intel_context *intel )
--{
--   bm_fake_NotifyContendedLockTake( intel ); 
--   intel->vtbl.lost_hardware( intel );
--}
--
- static void intelContendedLock( struct intel_context *intel, GLuint flags )
- {
-    __DRIdrawablePrivate *dPriv = intel->driDrawable;
-    __DRIscreenPrivate *sPriv = intel->driScreen;
-    volatile drmI830Sarea * sarea = intel->sarea;
-    int me = intel->hHWContext;
-+   int my_bufmgr = bmCtxId(intel);
- 
-    drmGetLock(intel->driFd, intel->hHWContext, flags);
- 
-@@ -562,12 +561,23 @@ static void intelContendedLock( struct i
- 
- 
-    intel->locked = 1;
-+   intel->need_flush = 1;
- 
-    /* Lost context?
-     */
-    if (sarea->ctxOwner != me) {
-+      DBG("Lost Context: sarea->ctxOwner %x me %x\n", sarea->ctxOwner, me);
-       sarea->ctxOwner = me;
--      lost_hardware(intel);
-+      intel->vtbl.lost_hardware( intel );
-+   }
-+
-+   /* As above, but don't evict the texture data on transitions
-+    * between contexts which all share a local buffer manager.
-+    */
-+   if (sarea->texAge != my_bufmgr) {
-+      DBG("Lost Textures: sarea->texAge %x my_bufmgr %x\n", sarea->ctxOwner, my_bufmgr);
-+      sarea->texAge = my_bufmgr;
-+      bm_fake_NotifyContendedLockTake( intel ); 
-    }
- 
-    /* Drawable changed?
-diff --git a/src/mesa/drivers/dri/i965/intel_context.h b/src/mesa/drivers/dri/i965/intel_context.h
-index 0328cb9..d0354cf 100644
---- a/src/mesa/drivers/dri/i965/intel_context.h
-+++ b/src/mesa/drivers/dri/i965/intel_context.h
-@@ -176,16 +176,6 @@ struct intel_context
- 
-    struct intel_batchbuffer *batch;
- 
--   struct {
--      GLuint id;
--      GLuint primitive;
--      GLubyte *start_ptr;      
--      void (*flush)( struct intel_context * );
--   } prim;
--
--   GLboolean locked;
--   GLboolean strict_conformance;
--
-    GLubyte clear_chan[4];
-    GLuint ClearColor;
-    GLuint ClearDepth;
-@@ -201,6 +191,10 @@ struct intel_context
-    GLboolean no_hw;
-    GLboolean no_rast;
-    GLboolean thrashing;
-+   GLboolean locked;
-+   GLboolean strict_conformance;
-+   GLboolean need_flush;
-+
- 
-    
-    /* AGP memory buffer manager:
-@@ -210,26 +204,14 @@ struct intel_context
- 
-    /* State for intelvb.c and inteltris.c.
-     */
--   GLuint RenderIndex;
--   GLmatrix ViewportMatrix;
-    GLenum render_primitive;
-    GLenum reduced_primitive;
--   GLuint vertex_size;
--   GLubyte *verts;			/* points to tnl->clipspace.vertex_buf */
--
- 
-    struct intel_region *front_region;
-    struct intel_region *back_region;
-    struct intel_region *draw_region;
-    struct intel_region *depth_region;
- 
--
--   /* Fallback rasterization functions 
--    */
--   intel_point_func draw_point;
--   intel_line_func draw_line;
--   intel_tri_func draw_tri;
--
-    /* These refer to the current draw (front vs. back) buffer:
-     */
-    int drawX;			/* origin of drawable in draw buffer */
-@@ -496,6 +478,13 @@ extern GLboolean intel_intersect_cliprec
- 					    const drm_clip_rect_t *b );
- 
- 
-+/* ================================================================
-+ * intel_pixel_copy.c:
-+ */
-+void intelCopyPixels(GLcontext * ctx,
-+                     GLint srcx, GLint srcy,
-+                     GLsizei width, GLsizei height,
-+                     GLint destx, GLint desty, GLenum type);
- 
- #define _NEW_WINDOW_POS 0x40000000
- 
-diff --git a/src/mesa/drivers/dri/i965/intel_pixel_copy.c b/src/mesa/drivers/dri/i965/intel_pixel_copy.c
-new file mode 100644
-index 0000000..ad27867
---- /dev/null
-+++ b/src/mesa/drivers/dri/i965/intel_pixel_copy.c
-@@ -0,0 +1,239 @@
-+/**************************************************************************
-+ * 
-+ * 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 "glheader.h"
-+#include "enums.h"
-+#include "image.h"
-+#include "mtypes.h"
-+#include "macros.h"
-+#include "state.h"
-+#include "swrast/swrast.h"
-+
-+#include "intel_screen.h"
-+#include "intel_context.h"
-+#include "intel_ioctl.h"
-+#include "intel_batchbuffer.h"
-+#include "intel_blit.h"
-+#include "intel_regions.h"
-+
-+
-+static struct intel_region *
-+copypix_src_region(struct intel_context *intel, GLenum type)
-+{
-+   switch (type) {
-+   case GL_COLOR:
-+      return intel_readbuf_region(intel);
-+   case GL_DEPTH:
-+      /* Don't think this is really possible execpt at 16bpp, when we have no stencil.
-+       */
-+      if (intel->depth_region && intel->depth_region->cpp == 2)
-+         return intel->depth_region;
-+   case GL_STENCIL:
-+      /* Don't think this is really possible. 
-+       */
-+      break;
-+   case GL_DEPTH_STENCIL_EXT:
-+      /* Does it matter whether it is stencil/depth or depth/stencil?
-+       */
-+      return intel->depth_region;
-+   default:
-+      break;
-+   }
-+
-+   return NULL;
-+}
-+
-+
-+
-+
-+/**
-+ * Check if any fragment operations are in effect which might effect
-+ * glDraw/CopyPixels.
-+ */
-+static GLboolean
-+intel_check_blit_fragment_ops(GLcontext * ctx)
-+{
-+   if (ctx->NewState)
-+      _mesa_update_state(ctx);
-+
-+   /* Could do logicop with the blitter: 
-+    */
-+   return !(ctx->_ImageTransferState ||
-+            ctx->Color.AlphaEnabled ||
-+            ctx->Depth.Test ||
-+            ctx->Fog.Enabled ||
-+            ctx->Stencil.Enabled ||
-+            !ctx->Color.ColorMask[0] ||
-+            !ctx->Color.ColorMask[1] ||
-+            !ctx->Color.ColorMask[2] ||
-+            !ctx->Color.ColorMask[3] ||
-+            ctx->Color.ColorLogicOpEnabled ||
-+            ctx->Texture._EnabledUnits ||
-+	    ctx->FragmentProgram._Enabled);
-+}
-+
-+
-+
-+/**
-+ * CopyPixels with the blitter.  Don't support zooming, pixel transfer, etc.
-+ */
-+static GLboolean
-+do_blit_copypixels(GLcontext * ctx,
-+                   GLint srcx, GLint srcy,
-+                   GLsizei width, GLsizei height,
-+                   GLint dstx, GLint dsty, GLenum type)
-+{
-+   struct intel_context *intel = intel_context(ctx);
-+   struct intel_region *dst = intel_drawbuf_region(intel);
-+   struct intel_region *src = copypix_src_region(intel, type);
-+
-+   /* Copypixels can be more than a straight copy.  Ensure all the
-+    * extra operations are disabled:
-+    */
-+   if (!intel_check_blit_fragment_ops(ctx) ||
-+       ctx->Pixel.ZoomX != 1.0F || ctx->Pixel.ZoomY != 1.0F)
-+      return GL_FALSE;
-+
-+   if (!src || !dst)
-+      return GL_FALSE;
-+
-+
-+
-+   intelFlush(&intel->ctx);
-+
-+/*    intel->vtbl.render_start(intel); */
-+/*    intel->vtbl.emit_state(intel); */
-+
-+   LOCK_HARDWARE(intel);
-+
-+   if (intel->driDrawable->numClipRects) {
-+      __DRIdrawablePrivate *dPriv = intel->driDrawable;
-+      drm_clip_rect_t *box = dPriv->pClipRects;
-+      drm_clip_rect_t dest_rect;
-+      GLint nbox = dPriv->numClipRects;
-+      GLint delta_x = 0;
-+      GLint delta_y = 0;
-+      GLuint i;
-+
-+      /* Do scissoring in GL coordinates:
-+       */
-+      if (ctx->Scissor.Enabled)
-+      {
-+	 GLint x = ctx->Scissor.X;
-+	 GLint y = ctx->Scissor.Y;
-+	 GLuint w = ctx->Scissor.Width;
-+	 GLuint h = ctx->Scissor.Height;
-+	 GLint dx = dstx - srcx;
-+         GLint dy = dsty - srcy;
-+
-+         if (!_mesa_clip_to_region(x, y, x+w, y+h, &dstx, &dsty, &width, &height))
-+            goto out;
-+	 
-+         srcx = dstx - dx;
-+         srcy = dsty - dy;
-+      }
-+
-+      /* Convert from GL to hardware coordinates:
-+       */
-+      dsty = dPriv->h - dsty - height;  
-+      srcy = dPriv->h - srcy - height;  
-+      dstx += dPriv->x;
-+      dsty += dPriv->y;
-+      srcx += dPriv->x;
-+      srcy += dPriv->y;
-+
-+      /* Clip against the source region.  This is the only source
-+       * clipping we do.  Dst is clipped with cliprects below.
-+       */
-+      {
-+         delta_x = srcx - dstx;
-+         delta_y = srcy - dsty;
-+
-+         if (!_mesa_clip_to_region(0, 0, src->pitch, src->height,
-+                                   &srcx, &srcy, &width, &height))
-+            goto out;
-+
-+         dstx = srcx - delta_x;
-+         dsty = srcy - delta_y;
-+      }
-+
-+      dest_rect.x1 = dstx;
-+      dest_rect.y1 = dsty;
-+      dest_rect.x2 = dstx + width;
-+      dest_rect.y2 = dsty + height;
-+
-+/*       intel->vtbl.emit_flush(intel, 0); */
-+
-+      /* Could do slightly more clipping: Eg, take the intersection of
-+       * the existing set of cliprects and those cliprects translated
-+       * by delta_x, delta_y:
-+       * 
-+       * This code will not overwrite other windows, but will
-+       * introduce garbage when copying from obscured window regions.
-+       */
-+      for (i = 0; i < nbox; i++) {
-+         drm_clip_rect_t rect;
-+
-+         if (!intel_intersect_cliprects(&rect, &dest_rect, &box[i]))
-+            continue;
-+
-+
-+         intelEmitCopyBlit(intel, 
-+			   dst->cpp, 
-+			   src->pitch, src->buffer, 0, src->tiled,
-+			   dst->pitch, dst->buffer, 0, dst->tiled,
-+			   rect.x1 + delta_x, 
-+			   rect.y1 + delta_y,       /* srcx, srcy */
-+                           rect.x1, rect.y1,    /* dstx, dsty */
-+                           rect.x2 - rect.x1, rect.y2 - rect.y1);
-+      }
-+
-+      intel->need_flush = GL_TRUE;
-+   out:
-+      intel_batchbuffer_flush(intel->batch);
-+   }
-+   UNLOCK_HARDWARE(intel);
-+   return GL_TRUE;
-+}
-+
-+void
-+intelCopyPixels(GLcontext * ctx,
-+                GLint srcx, GLint srcy,
-+                GLsizei width, GLsizei height,
-+                GLint destx, GLint desty, GLenum type)
-+{
-+   if (INTEL_DEBUG & DEBUG_PIXEL)
-+      fprintf(stderr, "%s\n", __FUNCTION__);
-+
-+   if (do_blit_copypixels(ctx, srcx, srcy, width, height, destx, desty, type))
-+      return;
-+
-+   if (INTEL_DEBUG & DEBUG_PIXEL)
-+      _mesa_printf("fallback to _swrast_CopyPixels\n");
-+
-+   _swrast_CopyPixels(ctx, srcx, srcy, width, height, destx, desty, type);
-+}
-diff --git a/src/mesa/drivers/dri/i965/intel_span.c b/src/mesa/drivers/dri/i965/intel_span.c
-index c68def5..60fbecc 100644
---- a/src/mesa/drivers/dri/i965/intel_span.c
-+++ b/src/mesa/drivers/dri/i965/intel_span.c
-@@ -35,6 +35,7 @@ #include "intel_regions.h"
- #include "intel_span.h"
- #include "intel_ioctl.h"
- #include "intel_tex.h"
-+#include "intel_batchbuffer.h"
- #include "swrast/swrast.h"
- 
- #undef DBG
-@@ -207,6 +208,16 @@ void intelSpanRenderStart( GLcontext *ct
- {
-    struct intel_context *intel = intel_context(ctx);
- 
-+   if (intel->need_flush) {
-+      LOCK_HARDWARE(intel);
-+      intel->vtbl.emit_flush(intel, 0);
-+      intel_batchbuffer_flush(intel->batch);
-+      intel->need_flush = 0;
-+      UNLOCK_HARDWARE(intel);
-+      intelFinish(&intel->ctx);
-+   }
-+
-+
-    LOCK_HARDWARE(intel);
- 
-    /* Just map the framebuffer and all textures.  Bufmgr code will
-diff --git a/src/mesa/drivers/dri/i965/intel_state.c b/src/mesa/drivers/dri/i965/intel_state.c
-index a471f67..ec6e046 100644
---- a/src/mesa/drivers/dri/i965/intel_state.c
-+++ b/src/mesa/drivers/dri/i965/intel_state.c
-@@ -182,39 +182,6 @@ static void intelClearColor(GLcontext *c
- }
- 
- 
--static void intelCalcViewport( GLcontext *ctx )
--{
--   struct intel_context *intel = intel_context(ctx);
--   const GLfloat *v = ctx->Viewport._WindowMap.m;
--   GLfloat *m = intel->ViewportMatrix.m;
--   GLint h = 0;
--
--   if (intel->driDrawable) 
--      h = intel->driDrawable->h + SUBPIXEL_Y;
--
--   /* See also intel_translate_vertex.  SUBPIXEL adjustments can be done
--    * via state vars, too.
--    */
--   m[MAT_SX] =   v[MAT_SX];
--   m[MAT_TX] =   v[MAT_TX] + SUBPIXEL_X;
--   m[MAT_SY] = - v[MAT_SY];
--   m[MAT_TY] = - v[MAT_TY] + h;
--   m[MAT_SZ] =   v[MAT_SZ] * intel->depth_scale;
--   m[MAT_TZ] =   v[MAT_TZ] * intel->depth_scale;
--}
--
--static void intelViewport( GLcontext *ctx,
--			  GLint x, GLint y,
--			  GLsizei width, GLsizei height )
--{
--   intelCalcViewport( ctx );
--}
--
--static void intelDepthRange( GLcontext *ctx,
--			    GLclampd nearval, GLclampd farval )
--{
--   intelCalcViewport( ctx );
--}
- 
- /* Fallback to swrast for select and feedback.
-  */
-@@ -228,8 +195,6 @@ static void intelRenderMode( GLcontext *
- void intelInitStateFuncs( struct dd_function_table *functions )
- {
-    functions->RenderMode = intelRenderMode;
--   functions->Viewport = intelViewport;
--   functions->DepthRange = intelDepthRange;
-    functions->ClearColor = intelClearColor;
- }
- 
-diff --git a/src/mesa/drivers/dri/i965/intel_tex_validate.c b/src/mesa/drivers/dri/i965/intel_tex_validate.c
-index 5f65242..91ae097 100644
---- a/src/mesa/drivers/dri/i965/intel_tex_validate.c
-+++ b/src/mesa/drivers/dri/i965/intel_tex_validate.c
-@@ -166,12 +166,15 @@ GLuint intel_finalize_mipmap_tree( struc
-     * target, imageFormat, etc.
-     */
-    if (intelObj->mt &&
--       (intelObj->mt->first_level != intelObj->firstLevel ||
--	intelObj->mt->last_level != intelObj->lastLevel ||
-+       (intelObj->mt->target != intelObj->base.Target ||
- 	intelObj->mt->internal_format != firstImage->InternalFormat ||
-+	intelObj->mt->first_level != intelObj->firstLevel ||
-+	intelObj->mt->last_level != intelObj->lastLevel ||
- 	intelObj->mt->width0 != firstImage->Width ||
- 	intelObj->mt->height0 != firstImage->Height ||
--	intelObj->mt->depth0 != firstImage->Depth)) 
-+	intelObj->mt->depth0 != firstImage->Depth ||
-+	intelObj->mt->cpp != firstImage->TexFormat->TexelBytes ||
-+	intelObj->mt->compressed != firstImage->IsCompressed)) 
-    {
-       intel_miptree_destroy(intel, intelObj->mt);
-       intelObj->mt = NULL;
-diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c
-index 590f357..f999e06 100644
---- a/src/mesa/shader/program.c
-+++ b/src/mesa/shader/program.c
-@@ -917,6 +917,15 @@ _mesa_fetch_state(GLcontext *ctx, const 
- 	    case STATE_NORMAL_SCALE:
-                ASSIGN_4V(value, ctx->_ModelViewInvScale, 0, 0, 1);
-                break;
-+	    case STATE_TEXRECT_SCALE: {
-+   	       const int unit = (int) state[2];
-+	       const struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current;
-+	       if (texObj) {
-+		  struct gl_texture_image *texImage = texObj->Image[0][0];
-+		  ASSIGN_4V(value, 1.0 / texImage->Width, 1.0 / texImage->Height, 0, 1);
-+	       }
-+               break;
-+	    }
- 	    default:
-                _mesa_problem(ctx, "Bad state switch in _mesa_fetch_state()");
-                return;
-@@ -988,6 +997,8 @@ static GLuint make_state_flags(const GLi
-       switch (state[1]) {
-       case STATE_NORMAL_SCALE:
- 	 return _NEW_MODELVIEW;
-+      case STATE_TEXRECT_SCALE:
-+	 return _NEW_TEXTURE;
-       default:
-          _mesa_problem(NULL, "unexpected int. state in make_state_flags()");
- 	 return 0;
-@@ -1450,19 +1461,8 @@ static const struct instruction_info Ins
- GLuint
- _mesa_num_inst_src_regs(enum prog_opcode opcode)
- {
--   GLuint i;
--#ifdef DEBUG
--   for (i = 0; i < MAX_OPCODE; i++) {
--      ASSERT(i == InstInfo[i].Opcode);
--   }
--#endif
--   for (i = 0; i < MAX_OPCODE; i++) {
--      if (InstInfo[i].Opcode == opcode) {
--         return InstInfo[i].NumSrcRegs;
--      }
--   }
--   _mesa_problem(NULL, "invalid opcode in _mesa_num_inst_src_regs");
--   return 0;
-+   ASSERT(opcode == InstInfo[opcode].Opcode);
-+   return InstInfo[opcode].NumSrcRegs;
- }
- 
- 
-@@ -1601,6 +1601,38 @@ print_src_reg(const struct prog_src_regi
-                                srcReg->NegateBase, GL_FALSE));
- }
- 
-+void
-+_mesa_print_alu_instruction(const struct prog_instruction *inst,
-+			    const char *opcode_string, 
-+			    GLuint numRegs)
-+{
-+   GLuint j;
-+
-+   _mesa_printf("%s", opcode_string);
-+
-+   /* frag prog only */
-+   if (inst->SaturateMode == SATURATE_ZERO_ONE)
-+      _mesa_printf("_SAT");
-+
-+   if (inst->DstReg.File != PROGRAM_UNDEFINED) {
-+      _mesa_printf(" %s[%d]%s",
-+		   program_file_string((enum register_file) inst->DstReg.File),
-+		   inst->DstReg.Index,
-+		   writemask_string(inst->DstReg.WriteMask));
-+   }
-+
-+   if (numRegs > 0)
-+      _mesa_printf(", ");
-+
-+   for (j = 0; j < numRegs; j++) {
-+      print_src_reg(inst->SrcReg + j);
-+      if (j + 1 < numRegs)
-+	 _mesa_printf(", ");
-+   }
-+
-+   _mesa_printf(";\n");
-+}
-+
- 
- /**
-  * Print a single vertex/fragment program instruction.
-@@ -1662,34 +1694,10 @@ _mesa_print_instruction(const struct pro
-    /* XXX may need for other special-case instructions */
-    default:
-       /* typical alu instruction */
--      {
--         const GLuint numRegs = _mesa_num_inst_src_regs(inst->Opcode);
--         GLuint j;
--
--         _mesa_printf("%s", _mesa_opcode_string(inst->Opcode));
--
--         /* frag prog only */
--         if (inst->SaturateMode == SATURATE_ZERO_ONE)
--            _mesa_printf("_SAT");
--
--         if (inst->DstReg.File != PROGRAM_UNDEFINED) {
--            _mesa_printf(" %s[%d]%s",
--                         program_file_string((enum register_file) inst->DstReg.File),
--                         inst->DstReg.Index,
--                         writemask_string(inst->DstReg.WriteMask));
--         }
--
--         if (numRegs > 0)
--            _mesa_printf(", ");
--
--         for (j = 0; j < numRegs; j++) {
--            print_src_reg(inst->SrcReg + j);
--            if (j + 1 < numRegs)
--               _mesa_printf(", ");
--         }
--
--         _mesa_printf(";\n");
--      }
-+      _mesa_print_alu_instruction(inst,
-+				  _mesa_opcode_string(inst->Opcode),
-+				  _mesa_num_inst_src_regs(inst->Opcode));
-+      break;
-    }
- }
- 
-diff --git a/src/mesa/shader/program.h b/src/mesa/shader/program.h
-index 6a34533..cf3b1cc 100644
---- a/src/mesa/shader/program.h
-+++ b/src/mesa/shader/program.h
-@@ -188,6 +188,7 @@ enum state_index {
- 
-    STATE_INTERNAL,		/* Mesa additions */
-    STATE_NORMAL_SCALE,
-+   STATE_TEXRECT_SCALE,
-    STATE_POSITION_NORMALIZED    /* normalized light position */
- };
- 
-@@ -264,6 +265,11 @@ _mesa_load_state_parameters(GLcontext *c
- extern void
- _mesa_print_instruction(const struct prog_instruction *inst);
- 
-+void
-+_mesa_print_alu_instruction(const struct prog_instruction *inst,
-+			    const char *opcode_string, 
-+			    GLuint numRegs);
-+
- extern void
- _mesa_print_program(const struct gl_program *prog);
- 
rmfile ./source/x11/xorg-server/post-6.5.1-i965-fixes.patch
}


More information about the Frugalware-darcs mailing list