Compare commits
25 Commits
mesa-21.0.
...
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