Compare commits
	
		
			25 Commits
		
	
	
		
			mesa-10.6.
			...
			mesa_7_0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					131baefac3 | ||
| 
						 | 
					a450078b67 | ||
| 
						 | 
					f6b041bf6c | ||
| 
						 | 
					4f340d181a | ||
| 
						 | 
					b58e38e936 | ||
| 
						 | 
					8713cb48a8 | ||
| 
						 | 
					277c5e57ed | ||
| 
						 | 
					b3d62d5af5 | ||
| 
						 | 
					9c0f0c8d81 | ||
| 
						 | 
					18a0a2a7ac | ||
| 
						 | 
					8b99d9e33c | ||
| 
						 | 
					01e7e153e3 | ||
| 
						 | 
					0ad4ca24d2 | ||
| 
						 | 
					724a155552 | ||
| 
						 | 
					d38b74a316 | ||
| 
						 | 
					54cab4b47b | ||
| 
						 | 
					c093666bc5 | ||
| 
						 | 
					04972f6761 | ||
| 
						 | 
					67f8234622 | ||
| 
						 | 
					201d6dbd9c | ||
| 
						 | 
					fbcac5aa83 | ||
| 
						 | 
					2b72ab8f8f | ||
| 
						 | 
					0ea97b9408 | ||
| 
						 | 
					28683ac7c0 | ||
| 
						 | 
					c72e3e210f | 
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							@@ -162,10 +162,10 @@ ultrix-gcc:
 | 
			
		||||
 | 
			
		||||
# Rules for making release tarballs
 | 
			
		||||
 | 
			
		||||
DIRECTORY = Mesa-7.1pre
 | 
			
		||||
LIB_NAME = MesaLib-7.1pre
 | 
			
		||||
DEMO_NAME = MesaDemos-7.1pre
 | 
			
		||||
GLUT_NAME = MesaGLUT-7.1pre
 | 
			
		||||
DIRECTORY = Mesa-7.0
 | 
			
		||||
LIB_NAME = MesaLib-7.0
 | 
			
		||||
DEMO_NAME = MesaDemos-7.0
 | 
			
		||||
GLUT_NAME = MesaGLUT-7.0
 | 
			
		||||
 | 
			
		||||
MAIN_FILES = \
 | 
			
		||||
	$(DIRECTORY)/Makefile*						\
 | 
			
		||||
 
 | 
			
		||||
@@ -104,6 +104,10 @@ do
 | 
			
		||||
	    # this is a special case (see bugzilla 10876)
 | 
			
		||||
	    DEPS="$DEPS $1"
 | 
			
		||||
	    ;;
 | 
			
		||||
	'-pthread')
 | 
			
		||||
	    # for FreeBSD
 | 
			
		||||
	    DEPS="$DEPS -pthread"
 | 
			
		||||
	    ;;
 | 
			
		||||
	'-cplusplus')
 | 
			
		||||
	    CPLUSPLUS=1
 | 
			
		||||
	    ;;
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,9 @@ ASM_SOURCES =
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
LIBDRM_CFLAGS = `pkg-config --cflags libdrm`
 | 
			
		||||
LIBDRM_LIB = `pkg-config --libs libdrm`
 | 
			
		||||
DRI_LIB_DEPS = -L/usr/local/lib -lm -lpthread -lexpat $(LIBDRM_LIB)
 | 
			
		||||
DRI_LIB_DEPS = -L/usr/local/lib -lm -pthread -lexpat $(LIBDRM_LIB)
 | 
			
		||||
GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
 | 
			
		||||
	-lm -lpthread $(LIBDRM_LIB)
 | 
			
		||||
	-lm -pthread $(LIBDRM_LIB)
 | 
			
		||||
 | 
			
		||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -L/usr/X11R6/lib -lGLU -lGL -lX11 -lXmu -lXt -lXi -lm
 | 
			
		||||
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -L/usr/X11R6/lib -lGL -lXt -lX11
 | 
			
		||||
 
 | 
			
		||||
@@ -9,11 +9,7 @@
 | 
			
		||||
<H1>Downloading</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Last development release: <b>6.5.3</b>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Last stable release: <b>6.4.2</b>
 | 
			
		||||
Last stable release: <b>7.0</b>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
 
 | 
			
		||||
@@ -129,7 +129,7 @@ GL_ARB_fragment_program extensions.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
May 2007: Mesa 7.0 is released, implementing the OpenGL 2.1 specification
 | 
			
		||||
June 2007: Mesa 7.0 is released, implementing the OpenGL 2.1 specification
 | 
			
		||||
and OpenGL Shading Language.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
<H1>News</H1>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>May ???, 2007</h2>
 | 
			
		||||
<h2>June 22, 2007</h2>
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.0.html">Mesa 7.0</a> is released.
 | 
			
		||||
This is a stable release featuring OpenGL 2.1 support.
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,11 @@
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.0 Release Notes / (<em>in progress</em>)</H1>
 | 
			
		||||
<H1>Mesa 7.0 Release Notes / June 22, 2007</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.0 is a stable release, featuring OpenGL 2.1 API support.
 | 
			
		||||
A number of bugs have been fixed since the 6.5.3 release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -37,6 +38,12 @@ TBD
 | 
			
		||||
<li>Fixed R300 vertex program/matrix bug (10848)
 | 
			
		||||
<li>GLSL dFdx() and dFdy() work for fragment program inputs now (texcoords)
 | 
			
		||||
<li>Specifying an invalid texture unit as a sampler could lead to a crash
 | 
			
		||||
<li>The GLX protocol request for glXDestroyPBuffer() was incorrect (bug 10983)
 | 
			
		||||
<li>ARB vp state.light[n].half value was incorrect (bug 10987)
 | 
			
		||||
<li>Fixed a positional light source bug (bug 11009)
 | 
			
		||||
<li>Fixed point size attenuation problem (bug 11042)
 | 
			
		||||
<li>glPopAttrib didn't restore texture object's LOD bias (bug 11049)
 | 
			
		||||
<li>Fixed a TLS / TEXTREL problem (bug 7459)
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  6.5.1
 | 
			
		||||
 * Version:  7.0
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2007  Brian Paul   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"),
 | 
			
		||||
 
 | 
			
		||||
@@ -150,7 +150,7 @@ DestroyPbuffer( Display * dpy, GLXDrawable drawable )
 | 
			
		||||
   if ( (priv->majorVersion > 1) || (priv->minorVersion >= 3) ) {
 | 
			
		||||
      xGLXDestroyPbufferReq * req;
 | 
			
		||||
 | 
			
		||||
      GetReqExtra( GLXDestroyPbuffer, 4, req );
 | 
			
		||||
      GetReq( GLXDestroyPbuffer, req );
 | 
			
		||||
      req->reqType = opcode;
 | 
			
		||||
      req->glxCode = X_GLXDestroyPbuffer;
 | 
			
		||||
      req->pbuffer = (GLXPbuffer) drawable;
 | 
			
		||||
 
 | 
			
		||||
@@ -172,12 +172,8 @@ static void i915LayoutTextureImages( i915ContextPtr i915,
 | 
			
		||||
	 
 | 
			
		||||
	 t->intel.image[0][i].offset = total_height * pitch;
 | 
			
		||||
	 t->intel.image[0][i].internalFormat = baseImage->_BaseFormat;
 | 
			
		||||
	 if (t->intel.image[0][i].image->IsCompressed)
 | 
			
		||||
	 {
 | 
			
		||||
	   if (t->intel.image[0][i].image->Height > 4)
 | 
			
		||||
	     total_height += t->intel.image[0][i].image->Height/4;
 | 
			
		||||
	   else
 | 
			
		||||
	     total_height += 1;
 | 
			
		||||
	 if (t->intel.image[0][i].image->IsCompressed) {
 | 
			
		||||
	    total_height += (t->intel.image[0][i].image->Height + 3) / 4;
 | 
			
		||||
	 }
 | 
			
		||||
	 else
 | 
			
		||||
	   total_height += MAX2(2, t->intel.image[0][i].image->Height);
 | 
			
		||||
 
 | 
			
		||||
@@ -634,11 +634,32 @@ static void intelUploadTexImage( intelContextPtr intel,
 | 
			
		||||
			       image->Height);
 | 
			
		||||
   }
 | 
			
		||||
   else if (image->IsCompressed) {
 | 
			
		||||
      GLuint row_len = image->Width * 2;
 | 
			
		||||
      GLuint row_len = 0;
 | 
			
		||||
      GLubyte *dst = (GLubyte *)(t->BufAddr + offset);
 | 
			
		||||
      GLubyte *src = (GLubyte *)image->Data;
 | 
			
		||||
      GLuint j;
 | 
			
		||||
 | 
			
		||||
      /* must always copy whole blocks (8/16 bytes) */
 | 
			
		||||
      switch (image->InternalFormat) {
 | 
			
		||||
	case GL_COMPRESSED_RGB_FXT1_3DFX:
 | 
			
		||||
	case GL_COMPRESSED_RGBA_FXT1_3DFX:
 | 
			
		||||
	case GL_RGB_S3TC:
 | 
			
		||||
	case GL_RGB4_S3TC:
 | 
			
		||||
	case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
 | 
			
		||||
	case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
 | 
			
		||||
	  row_len = (image->Width * 2 + 7) & ~7;
 | 
			
		||||
	  break;
 | 
			
		||||
	case GL_RGBA_S3TC:
 | 
			
		||||
	case GL_RGBA4_S3TC:
 | 
			
		||||
	case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
 | 
			
		||||
	case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
 | 
			
		||||
	  row_len = (image->Width * 4 + 15) & ~15;
 | 
			
		||||
	  break;
 | 
			
		||||
	default:
 | 
			
		||||
	  fprintf(stderr,"Internal Compressed format not supported %d\n", image->InternalFormat);
 | 
			
		||||
	  break;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (INTEL_DEBUG & DEBUG_TEXTURE)
 | 
			
		||||
	 fprintf(stderr, 
 | 
			
		||||
		 "Upload image %dx%dx%d offset %xm row_len %x "
 | 
			
		||||
@@ -646,30 +667,11 @@ static void intelUploadTexImage( intelContextPtr intel,
 | 
			
		||||
		 image->Width, image->Height, image->Depth, offset,
 | 
			
		||||
		 row_len, t->Pitch, t->depth_pitch);
 | 
			
		||||
 | 
			
		||||
      switch (image->InternalFormat) {
 | 
			
		||||
	case GL_COMPRESSED_RGB_FXT1_3DFX:
 | 
			
		||||
	case GL_COMPRESSED_RGBA_FXT1_3DFX:
 | 
			
		||||
	case GL_RGB_S3TC:
 | 
			
		||||
	case GL_RGB4_S3TC:
 | 
			
		||||
	case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
 | 
			
		||||
	case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
 | 
			
		||||
	  for (j = 0 ; j < image->Height/4 ; j++, dst += (t->Pitch)) {
 | 
			
		||||
	    __memcpy(dst, src, row_len );
 | 
			
		||||
	    src += row_len;
 | 
			
		||||
	  }
 | 
			
		||||
	  break;
 | 
			
		||||
	case GL_RGBA_S3TC:
 | 
			
		||||
	case GL_RGBA4_S3TC:
 | 
			
		||||
	case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
 | 
			
		||||
	case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
 | 
			
		||||
	  for (j = 0 ; j < image->Height/4 ; j++, dst += (t->Pitch)) {
 | 
			
		||||
	    __memcpy(dst, src, (image->Width*4) );
 | 
			
		||||
	    src += image->Width*4;
 | 
			
		||||
	  }
 | 
			
		||||
	  break;
 | 
			
		||||
	default:
 | 
			
		||||
	  fprintf(stderr,"Internal Compressed format not supported %d\n", image->InternalFormat);
 | 
			
		||||
	  break;
 | 
			
		||||
      if (row_len) {
 | 
			
		||||
	 for (j = 0 ; j < (image->Height + 3)/4 ; j++, dst += (t->Pitch)) {
 | 
			
		||||
	   __memcpy(dst, src, row_len );
 | 
			
		||||
	   src += row_len;
 | 
			
		||||
	 }
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   /* Time for another vtbl entry:
 | 
			
		||||
 
 | 
			
		||||
@@ -161,11 +161,9 @@ i915_miptree_layout(struct intel_mipmap_tree * mt)
 | 
			
		||||
            if (mt->compressed)
 | 
			
		||||
               img_height = MAX2(1, height / 4);
 | 
			
		||||
            else
 | 
			
		||||
               img_height = MAX2(2, height);
 | 
			
		||||
               img_height = (MAX2(2, height) + 1) & ~1;
 | 
			
		||||
 | 
			
		||||
	    mt->total_height += img_height;
 | 
			
		||||
	    mt->total_height += 1;
 | 
			
		||||
	    mt->total_height &= ~1;
 | 
			
		||||
 | 
			
		||||
            width = minify(width);
 | 
			
		||||
            height = minify(height);
 | 
			
		||||
 
 | 
			
		||||
@@ -105,6 +105,8 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
 | 
			
		||||
{
 | 
			
		||||
   struct gl_texture_object *tObj = intel->ctx.Texture.Unit[unit]._Current;
 | 
			
		||||
   struct intel_texture_object *intelObj = intel_texture_object(tObj);
 | 
			
		||||
   int comp_byte = 0;
 | 
			
		||||
   int cpp;
 | 
			
		||||
 | 
			
		||||
   GLuint face, i;
 | 
			
		||||
   GLuint nr_faces = 0;
 | 
			
		||||
@@ -148,6 +150,12 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
 | 
			
		||||
      intel_miptree_reference(&intelObj->mt, firstImage->mt);
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (firstImage->base.IsCompressed) {
 | 
			
		||||
      comp_byte = intel_compressed_num_bytes(firstImage->base.TexFormat->MesaFormat);
 | 
			
		||||
      cpp = comp_byte;
 | 
			
		||||
   }
 | 
			
		||||
   else cpp = firstImage->base.TexFormat->TexelBytes;
 | 
			
		||||
 | 
			
		||||
   /* Check tree can hold all active levels.  Check tree matches
 | 
			
		||||
    * target, imageFormat, etc.
 | 
			
		||||
    * 
 | 
			
		||||
@@ -165,7 +173,7 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
 | 
			
		||||
	intelObj->mt->width0 != firstImage->base.Width ||
 | 
			
		||||
	intelObj->mt->height0 != firstImage->base.Height ||
 | 
			
		||||
	intelObj->mt->depth0 != firstImage->base.Depth ||
 | 
			
		||||
	intelObj->mt->cpp != firstImage->base.TexFormat->TexelBytes ||
 | 
			
		||||
	intelObj->mt->cpp != cpp ||
 | 
			
		||||
	intelObj->mt->compressed != firstImage->base.IsCompressed)) {
 | 
			
		||||
      intel_miptree_release(intel, &intelObj->mt);
 | 
			
		||||
   }
 | 
			
		||||
@@ -174,10 +182,6 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
 | 
			
		||||
   /* May need to create a new tree:
 | 
			
		||||
    */
 | 
			
		||||
   if (!intelObj->mt) {
 | 
			
		||||
      int comp_byte = 0;
 | 
			
		||||
      
 | 
			
		||||
      if (firstImage->base.IsCompressed)
 | 
			
		||||
	 comp_byte = intel_compressed_num_bytes(firstImage->base.TexFormat->MesaFormat);
 | 
			
		||||
      intelObj->mt = intel_miptree_create(intel,
 | 
			
		||||
                                          intelObj->base.Target,
 | 
			
		||||
                                          firstImage->base.InternalFormat,
 | 
			
		||||
@@ -186,8 +190,7 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
 | 
			
		||||
                                          firstImage->base.Width,
 | 
			
		||||
                                          firstImage->base.Height,
 | 
			
		||||
                                          firstImage->base.Depth,
 | 
			
		||||
                                          firstImage->base.TexFormat->
 | 
			
		||||
                                          TexelBytes,
 | 
			
		||||
                                          cpp,
 | 
			
		||||
                                          comp_byte);
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -74,7 +74,7 @@ void i945_miptree_layout_2d( struct intel_mipmap_tree *mt )
 | 
			
		||||
      GLuint img_height;
 | 
			
		||||
 | 
			
		||||
      intel_miptree_set_level_info(mt, level, 1, x, y, width, 
 | 
			
		||||
				   mt->compressed ? height/4 : height, 1);
 | 
			
		||||
				   height, 1);
 | 
			
		||||
 | 
			
		||||
      if (mt->compressed)
 | 
			
		||||
	 img_height = MAX2(1, height/4);
 | 
			
		||||
 
 | 
			
		||||
@@ -141,7 +141,7 @@ static void
 | 
			
		||||
SetCurrentContext(GLXContext c)
 | 
			
		||||
{
 | 
			
		||||
#if defined(GLX_USE_TLS)
 | 
			
		||||
   CurrentContext = context;
 | 
			
		||||
   CurrentContext = c;
 | 
			
		||||
#elif defined(THREADS)
 | 
			
		||||
   _glthread_SetTSD(&ContextTSD, c);
 | 
			
		||||
#else
 | 
			
		||||
 
 | 
			
		||||
@@ -82,12 +82,18 @@ class PrintGenericStubs(gl_XML.gl_print_base):
 | 
			
		||||
		print ''
 | 
			
		||||
		print '#ifdef GLX_USE_TLS'
 | 
			
		||||
		print ''
 | 
			
		||||
		print '#ifdef GLX_X86_READONLY_TEXT'
 | 
			
		||||
		print '# define CTX_INSNS MOV_L(GS:(EAX), EAX)'
 | 
			
		||||
		print '#else'
 | 
			
		||||
		print '# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */'
 | 
			
		||||
		print '#endif'
 | 
			
		||||
		print ''
 | 
			
		||||
		print '#  define GL_STUB(fn,off,fn_alt)\t\t\t\\'
 | 
			
		||||
		print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
 | 
			
		||||
		print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
 | 
			
		||||
		print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
 | 
			
		||||
		print '\tCALL(_x86_get_dispatch) ;\t\t\t\\'
 | 
			
		||||
		print '\tNOP ;\t\t\t\t\t\t\\'
 | 
			
		||||
		print '\tCTX_INSNS ;					\\'
 | 
			
		||||
		print '\tJMP(GL_OFFSET(off))'
 | 
			
		||||
		print ''
 | 
			
		||||
		print '#elif defined(PTHREADS)'
 | 
			
		||||
@@ -138,7 +144,10 @@ class PrintGenericStubs(gl_XML.gl_print_base):
 | 
			
		||||
		print '\tHIDDEN(GLNAME(_x86_get_dispatch))'
 | 
			
		||||
		print 'ALIGNTEXT16'
 | 
			
		||||
		print 'GLNAME(_x86_get_dispatch):'
 | 
			
		||||
		print '\tmovl\t%gs:_glapi_tls_Dispatch@NTPOFF, %eax'
 | 
			
		||||
		print '\tcall	1f'
 | 
			
		||||
		print '1:\tpopl	%eax'
 | 
			
		||||
		print '\taddl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %eax'
 | 
			
		||||
		print '\tmovl	_glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax'
 | 
			
		||||
		print '\tret'
 | 
			
		||||
		print ''
 | 
			
		||||
		print '#elif defined(PTHREADS)'
 | 
			
		||||
@@ -158,7 +167,7 @@ class PrintGenericStubs(gl_XML.gl_print_base):
 | 
			
		||||
		print '#endif'
 | 
			
		||||
		print ''
 | 
			
		||||
 | 
			
		||||
		print '#if defined( GLX_USE_TLS )'
 | 
			
		||||
		print '#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )'
 | 
			
		||||
		print '\t\t.section\twtext, "awx", @progbits'
 | 
			
		||||
		print '#endif /* defined( GLX_USE_TLS ) */'
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1028,22 +1028,24 @@ _glapi_check_table(const struct _glapi_table *table)
 | 
			
		||||
#if defined(PTHREADS) || defined(GLX_USE_TLS)
 | 
			
		||||
/**
 | 
			
		||||
 * Perform platform-specific GL API entry-point fixups.
 | 
			
		||||
 * 
 | 
			
		||||
 * 
 | 
			
		||||
 */
 | 
			
		||||
static void
 | 
			
		||||
init_glapi_relocs( void )
 | 
			
		||||
{
 | 
			
		||||
#if defined( USE_X86_ASM ) && defined( GLX_USE_TLS )
 | 
			
		||||
    extern void * _x86_get_dispatch(void);
 | 
			
		||||
    const GLubyte * const get_disp = (const GLubyte *) _x86_get_dispatch;
 | 
			
		||||
#if defined(USE_X86_ASM) && defined(GLX_USE_TLS) && !defined(GLX_X86_READONLY_TEXT)
 | 
			
		||||
    extern unsigned long _x86_get_dispatch(void);
 | 
			
		||||
    char run_time_patch[] = {
 | 
			
		||||
       0x65, 0xa1, 0, 0, 0, 0 /* movl %gs:0,%eax */
 | 
			
		||||
    };
 | 
			
		||||
    GLuint *offset = (GLuint *) &run_time_patch[2]; /* 32-bits for x86/32 */
 | 
			
		||||
    const GLubyte * const get_disp = (const GLubyte *) run_time_patch;
 | 
			
		||||
    GLubyte * curr_func = (GLubyte *) gl_dispatch_functions_start;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    *offset = _x86_get_dispatch();
 | 
			
		||||
    while ( curr_func != (GLubyte *) gl_dispatch_functions_end ) {
 | 
			
		||||
	(void) memcpy( curr_func, get_disp, 6 );
 | 
			
		||||
	(void) memcpy( curr_func, get_disp, sizeof(run_time_patch));
 | 
			
		||||
	curr_func += DISPATCH_FUNCTION_SIZE;
 | 
			
		||||
    }
 | 
			
		||||
#endif /* defined( USE_X86_ASM ) && defined( GLX_USE_TLS ) */
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
#endif /* defined(PTHREADS) || defined(GLX_USE_TLS) */
 | 
			
		||||
 
 | 
			
		||||
@@ -764,6 +764,7 @@ pop_texture_group(GLcontext *ctx, const struct gl_texture_attrib *texAttrib)
 | 
			
		||||
         _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, obj->MagFilter);
 | 
			
		||||
         _mesa_TexParameterf(target, GL_TEXTURE_MIN_LOD, obj->MinLod);
 | 
			
		||||
         _mesa_TexParameterf(target, GL_TEXTURE_MAX_LOD, obj->MaxLod);
 | 
			
		||||
         _mesa_TexParameterf(target, GL_TEXTURE_LOD_BIAS, obj->LodBias);
 | 
			
		||||
         _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, obj->BaseLevel);
 | 
			
		||||
         if (target != GL_TEXTURE_RECTANGLE_ARB)
 | 
			
		||||
            _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, obj->MaxLevel);
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,9 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  6.5.2
 | 
			
		||||
 * Version:  7.0
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2007  Brian Paul   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"),
 | 
			
		||||
@@ -240,10 +240,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Bits per depth buffer value.  
 | 
			
		||||
 *
 | 
			
		||||
 * Any reasonable value up to 31 will work.  32 doesn't work because of integer
 | 
			
		||||
 * overflow problems in the rasterizer code.
 | 
			
		||||
 * Bits per depth buffer value (max is 32).
 | 
			
		||||
 */
 | 
			
		||||
#ifndef DEFAULT_SOFTWARE_DEPTH_BITS
 | 
			
		||||
#define DEFAULT_SOFTWARE_DEPTH_BITS 16
 | 
			
		||||
 
 | 
			
		||||
@@ -6,9 +6,9 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  6.5
 | 
			
		||||
 * Version:  7.0
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2007  Brian Paul   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"),
 | 
			
		||||
@@ -1382,8 +1382,11 @@ check_compatible(const GLcontext *ctx, const GLframebuffer *buffer)
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
   if (ctxvis->blueMask && ctxvis->blueMask != bufvis->blueMask)
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
#if 0
 | 
			
		||||
   /* disabled (see bug 11161) */
 | 
			
		||||
   if (ctxvis->depthBits && ctxvis->depthBits != bufvis->depthBits)
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
#endif
 | 
			
		||||
   if (ctxvis->stencilBits && ctxvis->stencilBits != bufvis->stencilBits)
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  6.5.3
 | 
			
		||||
 * Version:  7.0
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2007  Brian Paul   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"),
 | 
			
		||||
@@ -1117,6 +1117,13 @@ compute_light_positions( GLcontext *ctx )
 | 
			
		||||
	 }
 | 
			
		||||
	 light->_VP_inf_spot_attenuation = 1.0;
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
         /* positional light w/ homogeneous coordinate, divide by W */
 | 
			
		||||
         GLfloat wInv = 1.0 / light->_Position[3];
 | 
			
		||||
         light->_Position[0] *= wInv;
 | 
			
		||||
         light->_Position[1] *= wInv;
 | 
			
		||||
         light->_Position[2] *= wInv;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (light->_Flags & LIGHT_SPOT) {
 | 
			
		||||
	 if (ctx->_NeedEyeCoords) {
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,9 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  6.5.1
 | 
			
		||||
 * Version:  7.0
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2007  Brian Paul   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"),
 | 
			
		||||
@@ -61,10 +61,6 @@ _mesa_PointSize( GLfloat size )
 | 
			
		||||
			    ctx->Point.MinSize,
 | 
			
		||||
			    ctx->Point.MaxSize);
 | 
			
		||||
 | 
			
		||||
   ctx->Point._Attenuated = (ctx->Point.Params[0] != 1.0 ||
 | 
			
		||||
                             ctx->Point.Params[1] != 0.0 ||
 | 
			
		||||
                             ctx->Point.Params[2] != 0.0);
 | 
			
		||||
 | 
			
		||||
   if (ctx->Driver.PointSize)
 | 
			
		||||
      ctx->Driver.PointSize(ctx, size);
 | 
			
		||||
}
 | 
			
		||||
@@ -122,6 +118,9 @@ _mesa_PointParameterfvEXT( GLenum pname, const GLfloat *params)
 | 
			
		||||
	       return;
 | 
			
		||||
	    FLUSH_VERTICES(ctx, _NEW_POINT);
 | 
			
		||||
            COPY_3V(ctx->Point.Params, params);
 | 
			
		||||
            ctx->Point._Attenuated = (ctx->Point.Params[0] != 1.0 ||
 | 
			
		||||
                                      ctx->Point.Params[1] != 0.0 ||
 | 
			
		||||
                                      ctx->Point.Params[2] != 0.0);
 | 
			
		||||
         }
 | 
			
		||||
         else {
 | 
			
		||||
            _mesa_error(ctx, GL_INVALID_ENUM,
 | 
			
		||||
 
 | 
			
		||||
@@ -1299,6 +1299,20 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Helper function to determine whether a target supports compressed textures
 | 
			
		||||
 */
 | 
			
		||||
static GLboolean
 | 
			
		||||
target_can_be_compressed(GLcontext *ctx, GLenum target)
 | 
			
		||||
{
 | 
			
		||||
   return (((target == GL_TEXTURE_2D || target == GL_PROXY_TEXTURE_2D))
 | 
			
		||||
           || ((ctx->Extensions.ARB_texture_cube_map &&
 | 
			
		||||
                (target == GL_PROXY_TEXTURE_CUBE_MAP ||
 | 
			
		||||
                 (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
 | 
			
		||||
                  target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)))));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Test the glTexImage[123]D() parameters for errors.
 | 
			
		||||
 * 
 | 
			
		||||
@@ -1515,21 +1529,10 @@ texture_error_check( GLcontext *ctx, GLenum target,
 | 
			
		||||
 | 
			
		||||
   /* additional checks for compressed textures */
 | 
			
		||||
   if (is_compressed_format(ctx, internalFormat)) {
 | 
			
		||||
      if (target == GL_TEXTURE_2D || target == GL_PROXY_TEXTURE_2D) {
 | 
			
		||||
         /* OK */
 | 
			
		||||
      }
 | 
			
		||||
      else if (ctx->Extensions.ARB_texture_cube_map &&
 | 
			
		||||
               (target == GL_PROXY_TEXTURE_CUBE_MAP ||
 | 
			
		||||
                (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
 | 
			
		||||
                 target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))) {
 | 
			
		||||
         /* OK */
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
         if (!isProxy) {
 | 
			
		||||
            _mesa_error(ctx, GL_INVALID_ENUM,
 | 
			
		||||
                        "glTexImage%d(target)", dimensions);
 | 
			
		||||
            return GL_TRUE;
 | 
			
		||||
         }
 | 
			
		||||
      if (!target_can_be_compressed(ctx, target) && !isProxy) {
 | 
			
		||||
         _mesa_error(ctx, GL_INVALID_ENUM,
 | 
			
		||||
                     "glTexImage%d(target)", dimensions);
 | 
			
		||||
         return GL_TRUE;
 | 
			
		||||
      }
 | 
			
		||||
      if (border != 0) {
 | 
			
		||||
         if (!isProxy) {
 | 
			
		||||
@@ -1704,16 +1707,7 @@ subtexture_error_check2( GLcontext *ctx, GLuint dimensions,
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
   if (destTex->IsCompressed) {
 | 
			
		||||
      if (target == GL_TEXTURE_2D || target == GL_PROXY_TEXTURE_2D) {
 | 
			
		||||
         /* OK */
 | 
			
		||||
      }
 | 
			
		||||
      else if (ctx->Extensions.ARB_texture_cube_map &&
 | 
			
		||||
               (target == GL_PROXY_TEXTURE_CUBE_MAP ||
 | 
			
		||||
                (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
 | 
			
		||||
                 target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))) {
 | 
			
		||||
         /* OK */
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
      if (!target_can_be_compressed(ctx, target)) {
 | 
			
		||||
         _mesa_error(ctx, GL_INVALID_ENUM,
 | 
			
		||||
                     "glTexSubImage%D(target)", dimensions);
 | 
			
		||||
         return GL_TRUE;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  7.1
 | 
			
		||||
 * Version:  7.0
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
@@ -29,9 +29,9 @@
 | 
			
		||||
 | 
			
		||||
/* Mesa version */
 | 
			
		||||
#define MESA_MAJOR 7
 | 
			
		||||
#define MESA_MINOR 1
 | 
			
		||||
#define MESA_MINOR 0
 | 
			
		||||
#define MESA_PATCH 0
 | 
			
		||||
#define MESA_VERSION_STRING "7.1"
 | 
			
		||||
#define MESA_VERSION_STRING "7.0"
 | 
			
		||||
 | 
			
		||||
/* To make version comparison easy */
 | 
			
		||||
#define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  6.5.3
 | 
			
		||||
 * Version:  7.0
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
@@ -121,17 +121,17 @@ _mesa_fetch_state(GLcontext *ctx, const gl_state_index state[],
 | 
			
		||||
            return;
 | 
			
		||||
         case STATE_HALF_VECTOR:
 | 
			
		||||
            {
 | 
			
		||||
               GLfloat eye_z[] = {0, 0, 1};
 | 
			
		||||
					
 | 
			
		||||
               static const GLfloat eye_z[] = {0, 0, 1};
 | 
			
		||||
               GLfloat p[3];
 | 
			
		||||
               /* Compute infinite half angle vector:
 | 
			
		||||
                *   half-vector = light_position + (0, 0, 1) 
 | 
			
		||||
                * and then normalize.  w = 0
 | 
			
		||||
		*
 | 
			
		||||
                *   halfVector = normalize(normalize(lightPos) + (0, 0, 1))
 | 
			
		||||
		* light.EyePosition.w should be 0 for infinite lights.
 | 
			
		||||
                */
 | 
			
		||||
	       ADD_3V(value, eye_z, ctx->Light.Light[ln].EyePosition);
 | 
			
		||||
               COPY_3V(p, ctx->Light.Light[ln].EyePosition);
 | 
			
		||||
               NORMALIZE_3FV(p);
 | 
			
		||||
	       ADD_3V(value, p, eye_z);
 | 
			
		||||
	       NORMALIZE_3FV(value);
 | 
			
		||||
	       value[3] = 0;
 | 
			
		||||
	       value[3] = 1.0;
 | 
			
		||||
            }						  
 | 
			
		||||
            return;
 | 
			
		||||
	 case STATE_POSITION_NORMALIZED:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  6.5
 | 
			
		||||
 * Version:  7.0
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2007  Brian Paul   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"),
 | 
			
		||||
@@ -50,7 +50,8 @@ run_point_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage)
 | 
			
		||||
   if (ctx->Point._Attenuated && !ctx->VertexProgram._Current) {
 | 
			
		||||
      struct point_stage_data *store = POINT_STAGE_DATA(stage);
 | 
			
		||||
      struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
 | 
			
		||||
      const GLfloat (*eye)[4] = (const GLfloat (*)[4]) VB->EyePtr->data;
 | 
			
		||||
      const GLfloat *eyeCoord = (GLfloat *) VB->EyePtr->data + 2;
 | 
			
		||||
      const GLint eyeCoordStride = VB->EyePtr->stride / sizeof(GLfloat);
 | 
			
		||||
      const GLfloat p0 = ctx->Point.Params[0];
 | 
			
		||||
      const GLfloat p1 = ctx->Point.Params[1];
 | 
			
		||||
      const GLfloat p2 = ctx->Point.Params[2];
 | 
			
		||||
@@ -59,10 +60,11 @@ run_point_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage)
 | 
			
		||||
      GLuint i;
 | 
			
		||||
 | 
			
		||||
      for (i = 0; i < VB->Count; i++) {
 | 
			
		||||
         const GLfloat dist = FABSF(eye[i][2]);
 | 
			
		||||
         const GLfloat dist = FABSF(*eyeCoord);
 | 
			
		||||
         const GLfloat q = p0 + dist * (p1 + dist * p2);
 | 
			
		||||
         const GLfloat atten = (q != 0.0) ? SQRTF(1.0 / q) : 1.0;
 | 
			
		||||
         size[i][0] = pointSize * atten; /* clamping done in rasterization */
 | 
			
		||||
         eyeCoord += eyeCoordStride;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->PointSize;
 | 
			
		||||
 
 | 
			
		||||
@@ -58,12 +58,18 @@
 | 
			
		||||
 | 
			
		||||
#ifdef GLX_USE_TLS
 | 
			
		||||
 | 
			
		||||
#ifdef GLX_X86_READONLY_TEXT
 | 
			
		||||
# define CTX_INSNS MOV_L(GS:(EAX), EAX)
 | 
			
		||||
#else
 | 
			
		||||
# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#  define GL_STUB(fn,off,fn_alt)			\
 | 
			
		||||
ALIGNTEXT16;						\
 | 
			
		||||
GLOBL_FN(GL_PREFIX(fn, fn_alt));			\
 | 
			
		||||
GL_PREFIX(fn, fn_alt):					\
 | 
			
		||||
	CALL(_x86_get_dispatch) ;			\
 | 
			
		||||
	NOP ;						\
 | 
			
		||||
	CTX_INSNS ;					\
 | 
			
		||||
	JMP(GL_OFFSET(off))
 | 
			
		||||
 | 
			
		||||
#elif defined(PTHREADS)
 | 
			
		||||
@@ -114,7 +120,10 @@ SEG_TEXT
 | 
			
		||||
	HIDDEN(GLNAME(_x86_get_dispatch))
 | 
			
		||||
ALIGNTEXT16
 | 
			
		||||
GLNAME(_x86_get_dispatch):
 | 
			
		||||
	movl	%gs:_glapi_tls_Dispatch@NTPOFF, %eax
 | 
			
		||||
	call	1f
 | 
			
		||||
1:	popl	%eax
 | 
			
		||||
	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %eax
 | 
			
		||||
	movl	_glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax
 | 
			
		||||
	ret
 | 
			
		||||
 | 
			
		||||
#elif defined(PTHREADS)
 | 
			
		||||
@@ -133,7 +142,7 @@ GLNAME(_x86_get_dispatch):
 | 
			
		||||
EXTERN GLNAME(_glapi_get_dispatch)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined( GLX_USE_TLS )
 | 
			
		||||
#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )
 | 
			
		||||
		.section	wtext, "awx", @progbits
 | 
			
		||||
#endif /* defined( GLX_USE_TLS ) */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user