Makefile | 3 configs/darwin | 10 configs/darwin-fat-32bit | 7 configs/darwin-fat-all | 7 configs/darwin-x86ppc | 37 configs/default | 6 debian/changelog | 10 debian/control | 2 debian/patches/02_use-ieee-fp-on-s390-and-m68k.patch | 2 docs/relnotes-7.0.3.html | 11 include/GL/glext.h | 19 progs/xdemos/glthreads.c | 2 src/glx/x11/indirect_dispatch.c | 5914 ++++++++++++++++++ src/glx/x11/indirect_dispatch.h | 1043 +++ src/glx/x11/indirect_dispatch_swap.c | 6076 +++++++++++++++++++ src/glx/x11/indirect_reqsize.c | 832 ++ src/glx/x11/indirect_reqsize.h | 121 src/glx/x11/indirect_size_get.c | 1206 +++ src/glx/x11/indirect_size_get.h | 102 src/glx/x11/indirect_table.c | 1593 ++++ src/mesa/drivers/dri/common/dri_util.c | 3 src/mesa/drivers/dri/i965/brw_clip_util.c | 2 src/mesa/glapi/Makefile | 119 src/mesa/main/context.c | 6 src/mesa/main/drawpix.c | 14 src/mesa/main/fbobject.c | 2 src/mesa/main/get.c | 12 src/mesa/main/get_gen.py | 5 src/mesa/main/glheader.h | 2 src/mesa/main/imports.h | 6 src/mesa/main/teximage.c | 3 src/mesa/main/varray.c | 3 src/mesa/shader/arbprogparse.c | 7 src/mesa/shader/arbprogram.syn | 4 src/mesa/shader/arbprogram_syn.h | 2 src/mesa/shader/prog_statevars.c | 6 src/mesa/shader/program.c | 2 src/mesa/shader/shader_api.c | 6 src/mesa/shader/slang/slang_emit.c | 16 src/mesa/tnl/t_vertex_sse.c | 4 src/mesa/x86/rtasm/x86sse.c | 247 src/mesa/x86/rtasm/x86sse.h | 63 windows/VC6/progs/glut/glut.dsp | 2 windows/VC7/progs/glut/glut.vcproj | 2 windows/VC8/progs/glut/glut.vcproj | 2 45 files changed, 17284 insertions(+), 259 deletions(-)
New commits: commit 2e5a63f365b77a179c837e4a34ee9f18c2056b17 Author: Julien Cristau <[EMAIL PROTECTED]> Date: Mon Mar 31 16:47:34 2008 +0200 Prepare changelog for upload diff --git a/debian/changelog b/debian/changelog index ab79d2a..a332e6f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -mesa (7.0.3~rc2-2) UNRELEASED; urgency=low +mesa (7.0.3~rc2-2) unstable; urgency=low * Pull from mesa_7_0_branch (1e83d70b). * Fixes regression in the i965 dri driver (closes: #470984, #470084) @@ -6,7 +6,7 @@ mesa (7.0.3~rc2-2) UNRELEASED; urgency=low * Change libgl1-mesa-swx11-i686's pre-dependency on libgl1-mesa-swx11 to a regular versioned dependency, and add ${shlibs:Depends}. - -- Julien Cristau <[EMAIL PROTECTED]> Mon, 31 Mar 2008 13:02:39 +0200 + -- Julien Cristau <[EMAIL PROTECTED]> Mon, 31 Mar 2008 16:47:31 +0200 mesa (7.0.3~rc2-1) unstable; urgency=low commit 7c614b466679445abeb91764bf90da3d6bd15073 Author: Julien Cristau <[EMAIL PROTECTED]> Date: Mon Mar 31 16:47:17 2008 +0200 Fix libgl1-mesa-swx11-i686's dependencies Change libgl1-mesa-swx11-i686's pre-dependency on libgl1-mesa-swx11 to a regular versioned dependency, and add ${shlibs:Depends}. I'm not sure why this used Pre-Depends in the first place, I don't think that's needed. diff --git a/debian/changelog b/debian/changelog index 101630c..ab79d2a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,8 @@ mesa (7.0.3~rc2-2) UNRELEASED; urgency=low * Pull from mesa_7_0_branch (1e83d70b). * Fixes regression in the i965 dri driver (closes: #470984, #470084) * Update 02_use-ieee-fp-on-s390-and-m68k.patch. + * Change libgl1-mesa-swx11-i686's pre-dependency on libgl1-mesa-swx11 to a + regular versioned dependency, and add ${shlibs:Depends}. -- Julien Cristau <[EMAIL PROTECTED]> Mon, 31 Mar 2008 13:02:39 +0200 diff --git a/debian/control b/debian/control index 2fd579f..bf3ce80 100644 --- a/debian/control +++ b/debian/control @@ -60,7 +60,7 @@ Package: libgl1-mesa-swx11-i686 Section: libs Priority: extra Architecture: i386 -Pre-Depends: libgl1-mesa-swx11 +Depends: libgl1-mesa-swx11 (= ${binary:Version}), ${shlibs:Depends} Description: Mesa OpenGL runtime [i686 optimized] Mesa is a 3-D graphics library with an API which is very similar to that of OpenGL. To the extent that Mesa utilizes the OpenGL command commit b23d9088295bbc4bacc0e60eee1075fa36ebd734 Author: Julien Cristau <[EMAIL PROTECTED]> Date: Mon Mar 31 13:17:13 2008 +0200 Update 02_use-ieee-fp-on-s390-and-m68k.patch. diff --git a/debian/changelog b/debian/changelog index 6c0de48..101630c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ mesa (7.0.3~rc2-2) UNRELEASED; urgency=low * Pull from mesa_7_0_branch (1e83d70b). * Fixes regression in the i965 dri driver (closes: #470984, #470084) + * Update 02_use-ieee-fp-on-s390-and-m68k.patch. -- Julien Cristau <[EMAIL PROTECTED]> Mon, 31 Mar 2008 13:02:39 +0200 diff --git a/debian/patches/02_use-ieee-fp-on-s390-and-m68k.patch b/debian/patches/02_use-ieee-fp-on-s390-and-m68k.patch index ddc7198..8168f29 100644 --- a/debian/patches/02_use-ieee-fp-on-s390-and-m68k.patch +++ b/debian/patches/02_use-ieee-fp-on-s390-and-m68k.patch @@ -12,7 +12,7 @@ Index: mesa/src/mesa/main/imports.h #if defined(__i386__) || defined(__386__) || defined(__sparc__) || \ - defined(__s390x__) || defined(__powerpc__) || \ + defined(__s390__) || defined(__s390x__) || defined(__powerpc__) || \ - defined(__amd64__) || \ + defined(__amd64__) || defined(__x86_64__) || \ + defined(__m68k__) || \ defined(ia64) || defined(__ia64__) || \ defined(__hppa__) || defined(hpux) || \ commit 5379b84e633d43a80707058f95ef4e8f361dead0 Author: Julien Cristau <[EMAIL PROTECTED]> Date: Mon Mar 31 13:11:59 2008 +0200 Update changelog and add bug closer diff --git a/debian/changelog b/debian/changelog index e643373..6c0de48 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +mesa (7.0.3~rc2-2) UNRELEASED; urgency=low + + * Pull from mesa_7_0_branch (1e83d70b). + * Fixes regression in the i965 dri driver (closes: #470984, #470084) + + -- Julien Cristau <[EMAIL PROTECTED]> Mon, 31 Mar 2008 13:02:39 +0200 + mesa (7.0.3~rc2-1) unstable; urgency=low * New upstream release candidate. commit 1e83d70b6d07c7d3c61ee0ddf0de9420c167175d Author: Xiang, Haihao <[EMAIL PROTECTED]> Date: Mon Mar 31 09:34:25 2008 +0800 i965: Apply -ve rhw to 965. Fix the regression introduced by commit da476ff02dd357d9909a2df9891ee645f5f776a0. (bug#14940) diff --git a/src/mesa/drivers/dri/i965/brw_clip_util.c b/src/mesa/drivers/dri/i965/brw_clip_util.c index fc484a7..41d9b75 100644 --- a/src/mesa/drivers/dri/i965/brw_clip_util.c +++ b/src/mesa/drivers/dri/i965/brw_clip_util.c @@ -343,7 +343,7 @@ void brw_clip_init_clipmask( struct brw_clip_compile *c ) release_tmp(c, tmp); } - if (BRW_IS_IGD(p->brw)) { + if (!BRW_IS_IGD(p->brw)) { /* Test for -ve rhw workaround */ brw_set_conditionalmod(p, BRW_CONDITIONAL_NZ); commit 767dfa5b9c07fe6ae267e1ff0d3bbbf093a04c44 Author: Brian <[EMAIL PROTECTED]> Date: Fri Mar 28 13:24:00 2008 -0600 fix texture/renderbuffer mix-up in test_attachment_completeness() diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 8e7d66c..bbdc46f 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -302,7 +302,7 @@ test_attachment_completeness(const GLcontext *ctx, GLenum format, /* OK */ } else if (ctx->Extensions.EXT_packed_depth_stencil && - att->Renderbuffer->_BaseFormat == GL_DEPTH_STENCIL_EXT) { + texImage->TexFormat->BaseFormat == GL_DEPTH_STENCIL_EXT) { /* OK */ } else { commit 7ff5b381263a8c6011185fffb48dad76666860a2 Author: Alan Hourihane <[EMAIL PROTECTED]> Date: Thu Mar 27 16:36:12 2008 +0000 Fix build problems diff --git a/src/mesa/tnl/t_vertex_sse.c b/src/mesa/tnl/t_vertex_sse.c index 9227370..f1c98fe 100644 --- a/src/mesa/tnl/t_vertex_sse.c +++ b/src/mesa/tnl/t_vertex_sse.c @@ -653,7 +653,7 @@ void _tnl_generate_sse_emit( GLcontext *ctx ) p.identity = x86_make_reg(file_XMM, 6); p.chan0 = x86_make_reg(file_XMM, 7); - if (!x86_init_func(&p.func, MAX_SSE_CODE_SIZE)) { + if (!x86_init_func_size(&p.func, MAX_SSE_CODE_SIZE)) { vtx->emit = NULL; return; } diff --git a/src/mesa/x86/rtasm/x86sse.c b/src/mesa/x86/rtasm/x86sse.c index 39c0e9b..772471c 100644 --- a/src/mesa/x86/rtasm/x86sse.c +++ b/src/mesa/x86/rtasm/x86sse.c @@ -1161,11 +1161,12 @@ void x86_init_func( struct x86_function *p ) p->csr = p->store; } -void x86_init_func_size( struct x86_function *p, unsigned code_size ) +int x86_init_func_size( struct x86_function *p, unsigned code_size ) { p->size = code_size; p->store = _mesa_exec_malloc(code_size); p->csr = p->store; + return p->store != NULL; } void x86_release_func( struct x86_function *p ) diff --git a/src/mesa/x86/rtasm/x86sse.h b/src/mesa/x86/rtasm/x86sse.h index c2aa416..f6282f5 100644 --- a/src/mesa/x86/rtasm/x86sse.h +++ b/src/mesa/x86/rtasm/x86sse.h @@ -80,7 +80,7 @@ enum sse_cc { void x86_init_func( struct x86_function *p ); -void x86_init_func_size( struct x86_function *p, unsigned code_size ); +int x86_init_func_size( struct x86_function *p, unsigned code_size ); void x86_release_func( struct x86_function *p ); void (*x86_get_func( struct x86_function *p ))( void ); commit e209f5300da3a9586b7a473b010d4e1100911232 Author: Brian <[EMAIL PROTECTED]> Date: Tue Mar 25 08:11:47 2008 -0600 updated glext.h to version 40 diff --git a/docs/relnotes-7.0.3.html b/docs/relnotes-7.0.3.html index 6b7abea..212467d 100644 --- a/docs/relnotes-7.0.3.html +++ b/docs/relnotes-7.0.3.html @@ -8,7 +8,7 @@ <body bgcolor="#eeeeee"> -<H1>Mesa 7.0.3 Release Notes / February TBD, 2008</H1> +<H1>Mesa 7.0.3 Release Notes / March TBD, 2008</H1> <p> Mesa 7.0.3 is a stable release with bug fixes since version 7.0.2. @@ -44,6 +44,12 @@ Mesa 7.0.3 is a stable release with bug fixes since version 7.0.2. <li>glGetTexImage into a PBO didn't always work </ul> +<h2>Changes</h2> +<ul> +<li>Updated glext.h to version 40 +</ul> + + <h2>Driver Status</h2> commit 3c4b50c3529896fc958b1a31043ca3305d4d34ee Author: Brian <[EMAIL PROTECTED]> Date: Tue Mar 25 08:11:36 2008 -0600 updated to version 40 diff --git a/include/GL/glext.h b/include/GL/glext.h index 511305a..2b22714 100644 --- a/include/GL/glext.h +++ b/include/GL/glext.h @@ -46,9 +46,9 @@ extern "C" { /*************************************************************/ /* Header file version number, required by OpenGL ABI for Linux */ -/* glext.h last updated 2007/02/12 */ +/* glext.h last updated 2008/03/24 */ /* Current version at http://www.opengl.org/registry/ */ -#define GL_GLEXT_VERSION 39 +#define GL_GLEXT_VERSION 40 #ifndef GL_VERSION_1_2 #define GL_UNSIGNED_BYTE_3_3_2 0x8032 @@ -3091,8 +3091,8 @@ extern "C" { #ifndef GL_EXT_framebuffer_blit #define GL_READ_FRAMEBUFFER_EXT 0x8CA8 #define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA #define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA #endif #ifndef GL_EXT_framebuffer_multisample @@ -3379,6 +3379,9 @@ extern "C" { #define GL_RGBA_INTEGER_MODE_EXT 0x8D9E #endif +#ifndef GL_GREMEDY_frame_terminator +#endif + /*************************************************************/ @@ -7252,6 +7255,14 @@ typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); #endif +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameTerminatorGREMEDY (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void); +#endif + #ifdef __cplusplus } commit 4e7c2fcf18fb395d2a04cc8d46a6c6bd11227c54 Author: Brian <[EMAIL PROTECTED]> Date: Mon Mar 24 19:55:46 2008 -0600 add GL_READ_FRAMEBUFFER_BINDING_EXT case, regenerate get.c file diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index eb81ee4..2cbd605 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -1864,6 +1864,10 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params ) CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv"); params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize); break; + case GL_READ_FRAMEBUFFER_BINDING_EXT: + CHECK_EXT1(EXT_framebuffer_blit, "GetBooleanv"); + params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name); + break; case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: CHECK_EXT1(ARB_fragment_shader, "GetBooleanv"); params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents); @@ -3695,6 +3699,10 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params ) CHECK_EXT1(EXT_framebuffer_object, "GetFloatv"); params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize); break; + case GL_READ_FRAMEBUFFER_BINDING_EXT: + CHECK_EXT1(EXT_framebuffer_blit, "GetFloatv"); + params[0] = (GLfloat)(ctx->ReadBuffer->Name); + break; case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: CHECK_EXT1(ARB_fragment_shader, "GetFloatv"); params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents); @@ -5526,6 +5534,10 @@ _mesa_GetIntegerv( GLenum pname, GLint *params ) CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv"); params[0] = ctx->Const.MaxRenderbufferSize; break; + case GL_READ_FRAMEBUFFER_BINDING_EXT: + CHECK_EXT1(EXT_framebuffer_blit, "GetIntegerv"); + params[0] = ctx->ReadBuffer->Name; + break; case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: CHECK_EXT1(ARB_fragment_shader, "GetIntegerv"); params[0] = ctx->Const.FragmentProgram.MaxUniformComponents; diff --git a/src/mesa/main/get_gen.py b/src/mesa/main/get_gen.py index 33be768..6ff9168 100644 --- a/src/mesa/main/get_gen.py +++ b/src/mesa/main/get_gen.py @@ -977,6 +977,11 @@ StateVars = [ ["ctx->Const.MaxRenderbufferSize"], "", ["EXT_framebuffer_object"] ), + # GL_EXT_framebuffer_blit + # NOTE: GL_DRAW_FRAMEBUFFER_BINDING_EXT == GL_FRAMEBUFFER_BINDING_EXT + ( "GL_READ_FRAMEBUFFER_BINDING_EXT", GLint, ["ctx->ReadBuffer->Name"], "", + ["EXT_framebuffer_blit"] ), + # GL_ARB_fragment_shader ( "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", GLint, ["ctx->Const.FragmentProgram.MaxUniformComponents"], "", commit 22534f94f5a12a01866a6b74b81854354c0b56db Author: Brian <[EMAIL PROTECTED]> Date: Mon Mar 24 19:55:04 2008 -0600 fix wrong values for GL_READ/DRAW_FRAMEBUFFER_BINDING_EXT tokens diff --git a/include/GL/glext.h b/include/GL/glext.h index 2519a6c..511305a 100644 --- a/include/GL/glext.h +++ b/include/GL/glext.h @@ -3091,8 +3091,8 @@ extern "C" { #ifndef GL_EXT_framebuffer_blit #define GL_READ_FRAMEBUFFER_EXT 0x8CA8 #define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT -#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CAA +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT #endif #ifndef GL_EXT_framebuffer_multisample commit 1a6928fdbeae7759d1a2bd5616520ca87d3ea521 Author: Brian <[EMAIL PROTECTED]> Date: Sat Mar 22 10:27:08 2008 -0600 use ctx->Driver.DeleteProgram() in a few more places diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c index 1f22739..95cabe7 100644 --- a/src/mesa/shader/program.c +++ b/src/mesa/shader/program.c @@ -343,7 +343,7 @@ _mesa_clone_program(GLcontext *ctx, const struct gl_program *prog) clone->Format = prog->Format; clone->Instructions = _mesa_alloc_instructions(prog->NumInstructions); if (!clone->Instructions) { - _mesa_delete_program(ctx, clone); + ctx->Driver.DeleteProgram(ctx, clone); return NULL; } _mesa_copy_instructions(clone->Instructions, prog->Instructions, diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index 96940be..5f9e2b8 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -80,7 +80,7 @@ _mesa_clear_shader_program_data(GLcontext *ctx, /* to prevent a double-free in the next call */ shProg->VertexProgram->Base.Parameters = NULL; } - _mesa_delete_program(ctx, &shProg->VertexProgram->Base); + ctx->Driver.DeleteProgram(ctx, &shProg->VertexProgram->Base); shProg->VertexProgram = NULL; } @@ -89,7 +89,7 @@ _mesa_clear_shader_program_data(GLcontext *ctx, /* to prevent a double-free in the next call */ shProg->FragmentProgram->Base.Parameters = NULL; } - _mesa_delete_program(ctx, &shProg->FragmentProgram->Base); + ctx->Driver.DeleteProgram(ctx, &shProg->FragmentProgram->Base); shProg->FragmentProgram = NULL; } @@ -247,7 +247,7 @@ _mesa_free_shader(GLcontext *ctx, struct gl_shader *sh) _mesa_free(sh->InfoLog); for (i = 0; i < sh->NumPrograms; i++) { assert(sh->Programs[i]); - _mesa_delete_program(ctx, sh->Programs[i]); + ctx->Driver.DeleteProgram(ctx, sh->Programs[i]); } if (sh->Programs) _mesa_free(sh->Programs); commit 325dbbac47e42619876f902dcaeca80fc2e453a4 Author: Brian <[EMAIL PROTECTED]> Date: Sat Mar 22 09:11:35 2008 -0600 delete default programs with ctx->Driver.DeleteProgram() diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 9de515d..e79a905 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -687,10 +687,10 @@ free_shared_state( GLcontext *ctx, struct gl_shared_state *ss ) _mesa_DeleteHashTable(ss->Programs); #endif #if FEATURE_ARB_vertex_program - _mesa_delete_program(ctx, ss->DefaultVertexProgram); + ctx->Driver.DeleteProgram(ctx, ss->DefaultVertexProgram); #endif #if FEATURE_ARB_fragment_program - _mesa_delete_program(ctx, ss->DefaultFragmentProgram); + ctx->Driver.DeleteProgram(ctx, ss->DefaultFragmentProgram); #endif #if FEATURE_ATI_fragment_shader commit 39ac6b04811ddf22cae95e3e1ee1dccdcb4f2007 Author: Brian <[EMAIL PROTECTED]> Date: Fri Mar 21 12:32:29 2008 -0600 Fix some PBO breakage. In _mesa_Bitmap, can't early return if bitmap ptr is NULL, it may be an offset into a PBO. Similarly for _mesa_GetTexImage. diff --git a/docs/relnotes-7.0.3.html b/docs/relnotes-7.0.3.html index a2a3437..6b7abea 100644 --- a/docs/relnotes-7.0.3.html +++ b/docs/relnotes-7.0.3.html @@ -40,6 +40,8 @@ Mesa 7.0.3 is a stable release with bug fixes since version 7.0.2. <li>Bad strings given to glProgramStringARB() didn't generate GL_INVALID_OPERATION <li>Fixed minor point rasterization regression (bug 11016) <li>state.texenv.color state var didn't work in GL_ARB_fragment_program (bug 14931) +<li>glBitmap from a PBO didn't always work +<li>glGetTexImage into a PBO didn't always work </ul> diff --git a/src/mesa/main/drawpix.c b/src/mesa/main/drawpix.c index c82abcc..3acccf0 100644 --- a/src/mesa/main/drawpix.c +++ b/src/mesa/main/drawpix.c @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 6.5 + * Version: 7.0.3 * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2008 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"), @@ -341,12 +341,10 @@ _mesa_Bitmap( GLsizei width, GLsizei height, } if (ctx->RenderMode == GL_RENDER) { - if (bitmap) { - /* Truncate, to satisfy conformance tests (matches SGI's OpenGL). */ - GLint x = IFLOOR(ctx->Current.RasterPos[0] - xorig); - GLint y = IFLOOR(ctx->Current.RasterPos[1] - yorig); - ctx->Driver.Bitmap( ctx, x, y, width, height, &ctx->Unpack, bitmap ); - } + /* Truncate, to satisfy conformance tests (matches SGI's OpenGL). */ + GLint x = IFLOOR(ctx->Current.RasterPos[0] - xorig); + GLint y = IFLOOR(ctx->Current.RasterPos[1] - yorig); + ctx->Driver.Bitmap( ctx, x, y, width, height, &ctx->Unpack, bitmap ); } #if _HAVE_FULL_GL else if (ctx->RenderMode == GL_FEEDBACK) { diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index d857a4f..26d8fbc 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -2177,9 +2177,6 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format, return; } - if (!pixels) - return; - _mesa_lock_texture(ctx, texObj); { texImage = _mesa_select_tex_image(ctx, texObj, target, level); commit 46cc4854e9f781e83556063981d824fad0651eea Author: Brian <[EMAIL PROTECTED]> Date: Wed Mar 19 17:24:42 2008 -0600 fix IEEE_ONE definition for ICC compiler (bug 15134) diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index ebdfc45..d6dc725 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 6.5.2 + * Version: 7.0.3 * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2008 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"), @@ -159,7 +159,7 @@ typedef union { GLfloat f; GLint i; } fi_type; ***/ #if defined(__i386__) || defined(__386__) || defined(__sparc__) || \ defined(__s390x__) || defined(__powerpc__) || \ - defined(__amd64__) || \ + defined(__amd64__) || defined(__x86_64__) || \ defined(ia64) || defined(__ia64__) || \ defined(__hppa__) || defined(hpux) || \ defined(__mips) || defined(_MIPS_ARCH) || \ commit f93882512e54402a7b5199208648be4f60015597 Author: Alan Hourihane <[EMAIL PROTECTED]> Date: Wed Mar 19 01:03:48 2008 +0000 set outputs_safe to 0 as it's possible for the code generation to slip over the allocated memory for the vb. pull in sse fixes from gallium-0.1 diff --git a/src/mesa/tnl/t_vertex_sse.c b/src/mesa/tnl/t_vertex_sse.c index 9515d9f..9227370 100644 --- a/src/mesa/tnl/t_vertex_sse.c +++ b/src/mesa/tnl/t_vertex_sse.c @@ -648,7 +648,7 @@ void _tnl_generate_sse_emit( GLcontext *ctx ) p.ctx = ctx; p.inputs_safe = 0; /* for now */ - p.outputs_safe = 1; /* for now */ + p.outputs_safe = 0; /* for now */ p.have_sse2 = cpu_has_xmm2; p.identity = x86_make_reg(file_XMM, 6); p.chan0 = x86_make_reg(file_XMM, 7); diff --git a/src/mesa/x86/rtasm/x86sse.c b/src/mesa/x86/rtasm/x86sse.c index 612cd51..39c0e9b 100644 --- a/src/mesa/x86/rtasm/x86sse.c +++ b/src/mesa/x86/rtasm/x86sse.c @@ -1,4 +1,4 @@ -#if defined(USE_X86_ASM) || defined(SLANG_X86) +#if defined(__i386__) || defined(__386__) #include "imports.h" #include "x86sse.h" @@ -6,54 +6,78 @@ #define DISASSEM 0 #define X86_TWOB 0x0f -/* Emit bytes to the instruction stream: - */ -static void emit_1b( struct x86_function *p, GLbyte b0 ) +static unsigned char *cptr( void (*label)() ) { - *(GLbyte *)(p->csr++) = b0; + return (unsigned char *)(unsigned long)label; } -static void emit_1i( struct x86_function *p, GLint i0 ) + +static void do_realloc( struct x86_function *p ) { - *(GLint *)(p->csr) = i0; - p->csr += 4; + if (p->size == 0) { + p->size = 1024; + p->store = _mesa_exec_malloc(p->size); + p->csr = p->store; + } + else { + unsigned used = p->csr - p->store; + unsigned char *tmp = p->store; + p->size *= 2; + p->store = _mesa_exec_malloc(p->size); + memcpy(p->store, tmp, used); + p->csr = p->store + used; + _mesa_exec_free(tmp); + } } -static void disassem( struct x86_function *p, const char *fn ) +/* Emit bytes to the instruction stream: + */ +static unsigned char *reserve( struct x86_function *p, int bytes ) { -#if DISASSEM && 0 - if (fn && fn != p->fn) { - _mesa_printf("0x%x: %s\n", p->csr, fn); - p->fn = fn; + if (p->csr + bytes - p->store > p->size) + do_realloc(p); + + { + unsigned char *csr = p->csr; + p->csr += bytes; + return csr; } -#endif } -static void emit_1ub_fn( struct x86_function *p, GLubyte b0, const char *fn ) + + +static void emit_1b( struct x86_function *p, char b0 ) { - disassem(p, fn); - *(p->csr++) = b0; + char *csr = (char *)reserve(p, 1); + *csr = b0; } -static void emit_2ub_fn( struct x86_function *p, GLubyte b0, GLubyte b1, const char *fn ) +static void emit_1i( struct x86_function *p, int i0 ) { - disassem(p, fn); - *(p->csr++) = b0; - *(p->csr++) = b1; + int *icsr = (int *)reserve(p, sizeof(i0)); + *icsr = i0; } -static void emit_3ub_fn( struct x86_function *p, GLubyte b0, GLubyte b1, GLubyte b2, const char *fn ) +static void emit_1ub( struct x86_function *p, unsigned char b0 ) { - disassem(p, fn); - *(p->csr++) = b0; - *(p->csr++) = b1; - *(p->csr++) = b2; + unsigned char *csr = reserve(p, 1); + *csr++ = b0; } -#define emit_1ub(p, b0) emit_1ub_fn(p, b0, __FUNCTION__) -#define emit_2ub(p, b0, b1) emit_2ub_fn(p, b0, b1, __FUNCTION__) -#define emit_3ub(p, b0, b1, b2) emit_3ub_fn(p, b0, b1, b2, __FUNCTION__) +static void emit_2ub( struct x86_function *p, unsigned char b0, unsigned char b1 ) +{ + unsigned char *csr = reserve(p, 2); + *csr++ = b0; + *csr++ = b1; +} +static void emit_3ub( struct x86_function *p, unsigned char b0, unsigned char b1, unsigned char b2 ) +{ + unsigned char *csr = reserve(p, 3); + *csr++ = b0; + *csr++ = b1; + *csr++ = b2; +} /* Build a modRM byte + possible displacement. No treatment of SIB @@ -63,7 +87,7 @@ static void emit_modrm( struct x86_function *p, struct x86_reg reg, struct x86_reg regmem ) { - GLubyte val = 0; + unsigned char val = 0; assert(reg.mod == mod_REG); @@ -71,13 +95,13 @@ static void emit_modrm( struct x86_function *p, val |= reg.idx << 3; /* reg field */ val |= regmem.idx; /* r/m field */ - emit_1ub_fn(p, val, 0); + emit_1ub(p, val); /* Oh-oh we've stumbled into the SIB thing. */ if (regmem.file == file_REG32 && regmem.idx == reg_SP) { - emit_1ub_fn(p, 0x24, 0); /* simplistic! */ + emit_1ub(p, 0x24); /* simplistic! */ } switch (regmem.mod) { @@ -98,7 +122,7 @@ static void emit_modrm( struct x86_function *p, static void emit_modrm_noreg( struct x86_function *p, - GLuint op, + unsigned op, struct x86_reg regmem ) { struct x86_reg dummy = x86_make_reg(file_REG32, op); @@ -111,21 +135,21 @@ static void emit_modrm_noreg( struct x86_function *p, * the arguments presented. */ static void emit_op_modrm( struct x86_function *p, - GLubyte op_dst_is_reg, - GLubyte op_dst_is_mem, + unsigned char op_dst_is_reg, + unsigned char op_dst_is_mem, struct x86_reg dst, struct x86_reg src ) { switch (dst.mod) { case mod_REG: - emit_1ub_fn(p, op_dst_is_reg, 0); + emit_1ub(p, op_dst_is_reg); emit_modrm(p, dst, src); break; case mod_INDIRECT: case mod_DISP32: case mod_DISP8: assert(src.mod == mod_REG); - emit_1ub_fn(p, op_dst_is_mem, 0); + emit_1ub(p, op_dst_is_mem); emit_modrm(p, src, dst); break; default: @@ -156,7 +180,7 @@ struct x86_reg x86_make_reg( enum x86_reg_file file, } struct x86_reg x86_make_disp( struct x86_reg reg, - GLint disp ) + int disp ) { assert(reg.file == file_REG32); @@ -185,7 +209,7 @@ struct x86_reg x86_get_base_reg( struct x86_reg reg ) return x86_make_reg( reg.file, reg.idx ); } -GLubyte *x86_get_label( struct x86_function *p ) +unsigned char *x86_get_label( struct x86_function *p ) { return p->csr; } @@ -199,13 +223,13 @@ GLubyte *x86_get_label( struct x86_function *p ) void x86_jcc( struct x86_function *p, enum x86_cc cc, - GLubyte *label ) + unsigned char *label ) { - GLint offset = label - (x86_get_label(p) + 2); + int offset = label - (x86_get_label(p) + 2); if (offset <= 127 && offset >= -128) { emit_1ub(p, 0x70 + cc); - emit_1b(p, (GLbyte) offset); + emit_1b(p, (char) offset); } else { offset = label - (x86_get_label(p) + 6); @@ -216,7 +240,7 @@ void x86_jcc( struct x86_function *p, /* Always use a 32bit offset for forward jumps: */ -GLubyte *x86_jcc_forward( struct x86_function *p, +unsigned char *x86_jcc_forward( struct x86_function *p, enum x86_cc cc ) { emit_2ub(p, 0x0f, 0x80 + cc); @@ -224,14 +248,14 @@ GLubyte *x86_jcc_forward( struct x86_function *p, return x86_get_label(p); } -GLubyte *x86_jmp_forward( struct x86_function *p) +unsigned char *x86_jmp_forward( struct x86_function *p) { emit_1ub(p, 0xe9); emit_1i(p, 0); return x86_get_label(p); } -GLubyte *x86_call_forward( struct x86_function *p) +unsigned char *x86_call_forward( struct x86_function *p) { emit_1ub(p, 0xe8); emit_1i(p, 0); @@ -241,28 +265,41 @@ GLubyte *x86_call_forward( struct x86_function *p) /* Fixup offset from forward jump: */ void x86_fixup_fwd_jump( struct x86_function *p, - GLubyte *fixup ) + unsigned char *fixup ) { *(int *)(fixup - 4) = x86_get_label(p) - fixup; } -void x86_jmp( struct x86_function *p, GLubyte *label) +void x86_jmp( struct x86_function *p, unsigned char *label) { emit_1ub(p, 0xe9); emit_1i(p, label - x86_get_label(p) - 4); } -void x86_call( struct x86_function *p, GLubyte *label) +#if 0 +/* This doesn't work once we start reallocating & copying the + * generated code on buffer fills, because the call is relative to the + * current pc. + */ +void x86_call( struct x86_function *p, void (*label)()) { emit_1ub(p, 0xe8); - emit_1i(p, label - x86_get_label(p) - 4); + emit_1i(p, cptr(label) - x86_get_label(p) - 4); +} +#else +void x86_call( struct x86_function *p, struct x86_reg reg) +{ + emit_1ub(p, 0xff); + emit_modrm(p, reg, reg); } +#endif + /* michal: * Temporary. As I need immediate operands, and dont want to mess with the codegen, * I load the immediate into general purpose register and use it. */ -void x86_mov_reg_imm( struct x86_function *p, struct x86_reg dst, GLint imm ) +void x86_mov_reg_imm( struct x86_function *p, struct x86_reg dst, int imm ) { assert(dst.mod == mod_REG); emit_1ub(p, 0xb8 + dst.idx); @@ -502,6 +539,14 @@ void sse_addss( struct x86_function *p, emit_modrm( p, dst, src ); } +void sse_andnps( struct x86_function *p, + struct x86_reg dst, + struct x86_reg src ) +{ + emit_2ub(p, X86_TWOB, 0x55); + emit_modrm( p, dst, src ); +} + void sse_andps( struct x86_function *p, struct x86_reg dst, struct x86_reg src ) @@ -510,6 +555,13 @@ void sse_andps( struct x86_function *p, emit_modrm( p, dst, src ); } +void sse_rsqrtps( struct x86_function *p, + struct x86_reg dst, + struct x86_reg src ) +{ + emit_2ub(p, X86_TWOB, 0x52); + emit_modrm( p, dst, src ); +} void sse_rsqrtss( struct x86_function *p, struct x86_reg dst, @@ -538,6 +590,21 @@ void sse_movlhps( struct x86_function *p, emit_modrm( p, dst, src ); } +void sse_orps( struct x86_function *p, + struct x86_reg dst, + struct x86_reg src ) +{ + emit_2ub(p, X86_TWOB, 0x56); + emit_modrm( p, dst, src ); +} + +void sse_xorps( struct x86_function *p, + struct x86_reg dst, + struct x86_reg src ) +{ + emit_2ub(p, X86_TWOB, 0x57); + emit_modrm( p, dst, src ); +} void sse_cvtps2pi( struct x86_function *p, struct x86_reg dst, @@ -559,7 +626,7 @@ void sse_cvtps2pi( struct x86_function *p, void sse_shufps( struct x86_function *p, struct x86_reg dest, struct x86_reg arg0, - GLubyte shuf) + unsigned char shuf) { emit_2ub(p, X86_TWOB, 0xC6); emit_modrm(p, dest, arg0); @@ -569,13 +636,21 @@ void sse_shufps( struct x86_function *p, void sse_cmpps( struct x86_function *p, struct x86_reg dest, struct x86_reg arg0, - GLubyte cc) + unsigned char cc) { emit_2ub(p, X86_TWOB, 0xC2); emit_modrm(p, dest, arg0); emit_1ub(p, cc); } +void sse_pmovmskb( struct x86_function *p, + struct x86_reg dest, + struct x86_reg src) +{ + emit_3ub(p, 0x66, X86_TWOB, 0xD7); + emit_modrm(p, dest, src); +} + /*********************************************************************** * SSE2 instructions */ @@ -586,13 +661,21 @@ void sse_cmpps( struct x86_function *p, void sse2_pshufd( struct x86_function *p, struct x86_reg dest, struct x86_reg arg0, -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]