--- mesa-9.0.1/src/mesa/drivers/dri/intel/intel_extensions.c 2012-11-16 22:52:15.000000000 +0100 +++ mesa-9.0.1-patch/src/mesa/drivers/dri/intel/intel_extensions.c 2012-11-20 14:40:43.524505253 +0100 @@ -78,6 +78,7 @@ ctx->Extensions.EXT_separate_shader_objects = true; ctx->Extensions.EXT_texture_env_dot3 = true; ctx->Extensions.EXT_texture_filter_anisotropic = true; + ctx->Extensions.APPLE_client_storage = true; ctx->Extensions.APPLE_object_purgeable = true; ctx->Extensions.MESA_pack_invert = true; ctx->Extensions.MESA_ycbcr_texture = true; --- mesa-9.0.1/src/mesa/main/attrib.c 2012-11-16 22:52:15.000000000 +0100 +++ mesa-9.0.1-patch/src/mesa/main/attrib.c 2012-11-20 14:24:25.431457543 +0100 @@ -1338,6 +1338,7 @@ dst->SkipImages = src->SkipImages; dst->SwapBytes = src->SwapBytes; dst->LsbFirst = src->LsbFirst; + dst->ClientStorage = src->ClientStorage; dst->Invert = src->Invert; _mesa_reference_buffer_object(ctx, &dst->BufferObj, src->BufferObj); } --- mesa-9.0.1/src/mesa/main/extensions.c 2012-11-16 22:52:15.000000000 +0100 +++ mesa-9.0.1-patch/src/mesa/main/extensions.c 2012-11-20 14:41:27.916729718 +0100 @@ -274,6 +274,7 @@ { "GL_AMD_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 }, { "GL_AMD_seamless_cubemap_per_texture", o(AMD_seamless_cubemap_per_texture), GL, 2009 }, { "GL_AMD_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 }, + { "GL_APPLE_client_storage", o(APPLE_client_storage), GL, 2002 }, { "GL_APPLE_object_purgeable", o(APPLE_object_purgeable), GL, 2006 }, { "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), GLL, 2002 }, { "GL_APPLE_texture_max_level", o(dummy_true), ES1 | ES2, 2009 }, --- mesa-9.0.1/src/mesa/main/get.c 2012-11-16 22:52:15.000000000 +0100 +++ mesa-9.0.1-patch/src/mesa/main/get.c 2012-11-20 14:42:24.777016520 +0100 @@ -722,6 +722,7 @@ { GL_UNPACK_SKIP_ROWS, CONTEXT_INT(Unpack.SkipRows), NO_EXTRA }, { GL_UNPACK_SKIP_IMAGES_EXT, CONTEXT_INT(Unpack.SkipImages), NO_EXTRA }, { GL_UNPACK_IMAGE_HEIGHT_EXT, CONTEXT_INT(Unpack.ImageHeight), NO_EXTRA }, + { GL_UNPACK_CLIENT_STORAGE_APPLE, CONTEXT_BOOL(Unpack.ClientStorage), NO_EXTRA }, /* GL_ARB_draw_buffers */ { GL_MAX_DRAW_BUFFERS_ARB, CONTEXT_INT(Const.MaxDrawBuffers), NO_EXTRA }, --- mesa-9.0.1/src/mesa/main/mtypes.h 2012-11-16 22:52:15.000000000 +0100 +++ mesa-9.0.1-patch/src/mesa/main/mtypes.h 2012-11-20 14:43:11.025249727 +0100 @@ -1206,6 +1206,7 @@ GLuint HeightLog2; /**< = log2(Height2) */ GLuint DepthLog2; /**< = log2(Depth2) */ GLuint MaxLog2; /**< = MAX(WidthLog2, HeightLog2) */ + GLboolean IsClientData; /**< Data owned by client? */ struct gl_texture_object *TexObject; /**< Pointer back to parent object */ GLuint Level; /**< Which mipmap level am I? */ @@ -1536,6 +1537,7 @@ GLint SkipImages; GLboolean SwapBytes; GLboolean LsbFirst; + GLboolean ClientStorage; /**< GL_APPLE_client_storage */ GLboolean Invert; /**< GL_MESA_pack_invert */ struct gl_buffer_object *BufferObj; /**< GL_ARB_pixel_buffer_object */ }; @@ -3050,6 +3052,7 @@ GLboolean OES_standard_derivatives; /* vendor extensions */ GLboolean AMD_seamless_cubemap_per_texture; + GLboolean APPLE_client_storage; GLboolean APPLE_packed_pixels; GLboolean APPLE_object_purgeable; GLboolean ATI_envmap_bumpmap; --- mesa-9.0.1/src/mesa/main/pixelstore.c 2012-11-16 22:52:15.000000000 +0100 +++ mesa-9.0.1-patch/src/mesa/main/pixelstore.c 2012-11-20 14:44:05.685525175 +0100 @@ -234,6 +234,12 @@ FLUSH_VERTICES(ctx, _NEW_PACKUNPACK); ctx->Unpack.Alignment = param; break; + case GL_UNPACK_CLIENT_STORAGE_APPLE: + if (param == (GLint)ctx->Unpack.ClientStorage) + return; + FLUSH_VERTICES(ctx, _NEW_PACKUNPACK); + ctx->Unpack.ClientStorage = param ? GL_TRUE : GL_FALSE; + break; default: goto invalid_enum_error; } @@ -269,6 +275,7 @@ ctx->Pack.SkipImages = 0; ctx->Pack.SwapBytes = GL_FALSE; ctx->Pack.LsbFirst = GL_FALSE; + ctx->Pack.ClientStorage = GL_FALSE; ctx->Pack.Invert = GL_FALSE; #if FEATURE_EXT_pixel_buffer_object _mesa_reference_buffer_object(ctx, &ctx->Pack.BufferObj, @@ -282,6 +289,7 @@ ctx->Unpack.SkipImages = 0; ctx->Unpack.SwapBytes = GL_FALSE; ctx->Unpack.LsbFirst = GL_FALSE; + ctx->Unpack.ClientStorage = GL_FALSE; ctx->Unpack.Invert = GL_FALSE; #if FEATURE_EXT_pixel_buffer_object _mesa_reference_buffer_object(ctx, &ctx->Unpack.BufferObj, @@ -302,6 +310,7 @@ ctx->DefaultPacking.SkipImages = 0; ctx->DefaultPacking.SwapBytes = GL_FALSE; ctx->DefaultPacking.LsbFirst = GL_FALSE; + ctx->DefaultPacking.ClientStorage = GL_FALSE; ctx->DefaultPacking.Invert = GL_FALSE; #if FEATURE_EXT_pixel_buffer_object _mesa_reference_buffer_object(ctx, &ctx->DefaultPacking.BufferObj,