diff --git a/.gitignore b/.gitignore index 089b161..378e862 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,4 @@ mesa-20100720.tar.bz2 /mesa-20130919.tar.xz /mesa-20131113.tar.xz /mesa-20131114.tar.xz +/mesa-20131128.tar.xz diff --git a/0001-st-dri-do-not-create-a-new-context-for-msaa-copy.patch b/0001-st-dri-do-not-create-a-new-context-for-msaa-copy.patch deleted file mode 100644 index 8a722db..0000000 --- a/0001-st-dri-do-not-create-a-new-context-for-msaa-copy.patch +++ /dev/null @@ -1,313 +0,0 @@ -From b217d48364f368f541e53006af5dd56f664be24d Mon Sep 17 00:00:00 2001 -From: Maarten Lankhorst -Date: Mon, 9 Sep 2013 13:02:08 +0200 -Subject: [PATCH] st/dri: do not create a new context for msaa copy -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Commit b77316ad7594f - st/dri: always copy new DRI front and back buffers to corresponding MSAA buffers - -introduced creating a pipe_context for every call to validate, which is not required -because the callers have a context anyway. - -Only exception is egl_g3d_create_pbuffer_from_client_buffer, can someone test if it -still works with NULL passed as context for validate? From examining the code I -believe it does, but I didn't thoroughly test it. - -Signed-off-by: Maarten Lankhorst -Cc: 9.2 -Reviewed-by: Marek Olšák ---- - src/gallium/include/state_tracker/st_api.h | 3 ++- - .../state_trackers/dri/common/dri_drawable.c | 13 +++++++----- - .../state_trackers/dri/common/dri_drawable.h | 3 ++- - src/gallium/state_trackers/dri/drm/dri2.c | 23 ++++++---------------- - src/gallium/state_trackers/dri/sw/drisw.c | 3 ++- - .../state_trackers/egl/common/egl_g3d_api.c | 2 +- - src/gallium/state_trackers/egl/common/egl_g3d_st.c | 6 ++++-- - src/gallium/state_trackers/glx/xlib/xm_st.c | 3 ++- - src/gallium/state_trackers/osmesa/osmesa.c | 3 ++- - src/gallium/state_trackers/vega/vg_manager.c | 3 ++- - src/gallium/state_trackers/wgl/stw_st.c | 3 ++- - src/mesa/state_tracker/st_manager.c | 2 +- - 12 files changed, 34 insertions(+), 33 deletions(-) - -diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h -index 3ecd12e..9dcb76f 100644 ---- a/src/gallium/include/state_tracker/st_api.h -+++ b/src/gallium/include/state_tracker/st_api.h -@@ -342,7 +342,8 @@ struct st_framebuffer_iface - * the last call might be destroyed. This behavior might change in the - * future. - */ -- boolean (*validate)(struct st_framebuffer_iface *stfbi, -+ boolean (*validate)(struct st_context_iface *stctx, -+ struct st_framebuffer_iface *stfbi, - const enum st_attachment_type *statts, - unsigned count, - struct pipe_resource **out); -diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c -index 18d8d89..ddf9400 100644 ---- a/src/gallium/state_trackers/dri/common/dri_drawable.c -+++ b/src/gallium/state_trackers/dri/common/dri_drawable.c -@@ -42,11 +42,13 @@ static void - swap_fences_unref(struct dri_drawable *draw); - - static boolean --dri_st_framebuffer_validate(struct st_framebuffer_iface *stfbi, -+dri_st_framebuffer_validate(struct st_context_iface *stctx, -+ struct st_framebuffer_iface *stfbi, - const enum st_attachment_type *statts, - unsigned count, - struct pipe_resource **out) - { -+ struct dri_context *ctx = (struct dri_context *)stctx->st_manager_private; - struct dri_drawable *drawable = - (struct dri_drawable *) stfbi->st_manager_private; - struct dri_screen *screen = dri_screen(drawable->sPriv); -@@ -78,7 +80,7 @@ dri_st_framebuffer_validate(struct st_framebuffer_iface *stfbi, - if (new_stamp && drawable->update_drawable_info) - drawable->update_drawable_info(drawable); - -- drawable->allocate_textures(drawable, statts, count); -+ drawable->allocate_textures(ctx, drawable, statts, count); - - /* add existing textures */ - for (i = 0; i < ST_ATTACHMENT_COUNT; i++) { -@@ -183,7 +185,8 @@ dri_destroy_buffer(__DRIdrawable * dPriv) - * exist. Used by the TFP extension. - */ - static void --dri_drawable_validate_att(struct dri_drawable *drawable, -+dri_drawable_validate_att(struct dri_context *ctx, -+ struct dri_drawable *drawable, - enum st_attachment_type statt) - { - enum st_attachment_type statts[ST_ATTACHMENT_COUNT]; -@@ -203,7 +206,7 @@ dri_drawable_validate_att(struct dri_drawable *drawable, - - drawable->texture_stamp = drawable->dPriv->lastStamp - 1; - -- drawable->base.validate(&drawable->base, statts, count, NULL); -+ drawable->base.validate(ctx->st, &drawable->base, statts, count, NULL); - } - - /** -@@ -217,7 +220,7 @@ dri_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target, - struct dri_drawable *drawable = dri_drawable(dPriv); - struct pipe_resource *pt; - -- dri_drawable_validate_att(drawable, ST_ATTACHMENT_FRONT_LEFT); -+ dri_drawable_validate_att(ctx, drawable, ST_ATTACHMENT_FRONT_LEFT); - - /* Use the pipe resource associated with the X drawable */ - pt = drawable->textures[ST_ATTACHMENT_FRONT_LEFT]; -diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.h b/src/gallium/state_trackers/dri/common/dri_drawable.h -index 50e5cc4..c514218 100644 ---- a/src/gallium/state_trackers/dri/common/dri_drawable.h -+++ b/src/gallium/state_trackers/dri/common/dri_drawable.h -@@ -71,7 +71,8 @@ struct dri_drawable - struct pipe_surface *drisw_surface; - - /* hooks filled in by dri2 & drisw */ -- void (*allocate_textures)(struct dri_drawable *drawable, -+ void (*allocate_textures)(struct dri_context *ctx, -+ struct dri_drawable *drawable, - const enum st_attachment_type *statts, - unsigned count); - -diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c -index e4477d6..fea1c8d 100644 ---- a/src/gallium/state_trackers/dri/drm/dri2.c -+++ b/src/gallium/state_trackers/dri/drm/dri2.c -@@ -169,7 +169,8 @@ dri2_drawable_get_buffers(struct dri_drawable *drawable, - * Process __DRIbuffer and convert them into pipe_resources. - */ - static void --dri2_drawable_process_buffers(struct dri_drawable *drawable, -+dri2_drawable_process_buffers(struct dri_context *ctx, -+ struct dri_drawable *drawable, - __DRIbuffer *buffers, unsigned buffer_count, - const enum st_attachment_type *atts, - unsigned att_count) -@@ -180,8 +181,6 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable, - struct winsys_handle whandle; - boolean alloc_depthstencil = FALSE; - unsigned i, j, bind; -- struct pipe_screen *pscreen = screen->base.screen; -- struct pipe_context *pipe = NULL; - - if (drawable->old_num == buffer_count && - drawable->old_w == dri_drawable->w && -@@ -308,14 +307,8 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable, - * The single-sample resources are not exposed - * to the state tracker. - * -- * We don't have a context here, so create one temporarily. -- * We may need to create a persistent context if creation and -- * destruction of the context becomes a bottleneck. - */ -- if (!pipe) -- pipe = pscreen->context_create(pscreen, NULL); -- -- dri_pipe_blit(pipe, -+ dri_pipe_blit(ctx->st->pipe, - drawable->msaa_textures[att], - drawable->textures[att]); - } -@@ -371,11 +364,6 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable, - drawable->old_w = dri_drawable->w; - drawable->old_h = dri_drawable->h; - memcpy(drawable->old, buffers, sizeof(__DRIbuffer) * buffer_count); -- -- if (pipe) { -- pipe->flush(pipe, NULL, 0); -- pipe->destroy(pipe); -- } - } - - static __DRIbuffer * -@@ -470,7 +458,8 @@ dri2_release_buffer(__DRIscreen *sPriv, __DRIbuffer *bPriv) - */ - - static void --dri2_allocate_textures(struct dri_drawable *drawable, -+dri2_allocate_textures(struct dri_context *ctx, -+ struct dri_drawable *drawable, - const enum st_attachment_type *statts, - unsigned statts_count) - { -@@ -479,7 +468,7 @@ dri2_allocate_textures(struct dri_drawable *drawable, - - buffers = dri2_drawable_get_buffers(drawable, statts, &num_buffers); - if (buffers) -- dri2_drawable_process_buffers(drawable, buffers, num_buffers, -+ dri2_drawable_process_buffers(ctx, drawable, buffers, num_buffers, - statts, statts_count); - } - -diff --git a/src/gallium/state_trackers/dri/sw/drisw.c b/src/gallium/state_trackers/dri/sw/drisw.c -index 41f66d5..121a205 100644 ---- a/src/gallium/state_trackers/dri/sw/drisw.c -+++ b/src/gallium/state_trackers/dri/sw/drisw.c -@@ -182,7 +182,8 @@ drisw_flush_frontbuffer(struct dri_context *ctx, - * framebuffer is resized or destroyed. - */ - static void --drisw_allocate_textures(struct dri_drawable *drawable, -+drisw_allocate_textures(struct dri_context *stctx, -+ struct dri_drawable *drawable, - const enum st_attachment_type *statts, - unsigned count) - { -diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_api.c b/src/gallium/state_trackers/egl/common/egl_g3d_api.c -index 3ee0d67..46a3245 100644 ---- a/src/gallium/state_trackers/egl/common/egl_g3d_api.c -+++ b/src/gallium/state_trackers/egl/common/egl_g3d_api.c -@@ -443,7 +443,7 @@ egl_g3d_create_pbuffer_from_client_buffer(_EGLDriver *drv, _EGLDisplay *dpy, - gsurf->client_buffer = buffer; - - /* validate now so that it fails if the client buffer is invalid */ -- if (!gsurf->stfbi->validate(gsurf->stfbi, -+ if (!gsurf->stfbi->validate(NULL, gsurf->stfbi, - &gsurf->stvis.render_buffer, 1, &ptex)) { - egl_g3d_destroy_st_framebuffer(gsurf->stfbi); - FREE(gsurf); -diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_st.c b/src/gallium/state_trackers/egl/common/egl_g3d_st.c -index f2ee11c..cf1846c 100644 ---- a/src/gallium/state_trackers/egl/common/egl_g3d_st.c -+++ b/src/gallium/state_trackers/egl/common/egl_g3d_st.c -@@ -149,7 +149,8 @@ pbuffer_allocate_pbuffer_texture(struct egl_g3d_surface *gsurf) - } - - static boolean --egl_g3d_st_framebuffer_validate_pbuffer(struct st_framebuffer_iface *stfbi, -+egl_g3d_st_framebuffer_validate_pbuffer(struct st_context_iface *stctx, -+ struct st_framebuffer_iface *stfbi, - const enum st_attachment_type *statts, - unsigned count, - struct pipe_resource **out) -@@ -202,7 +203,8 @@ egl_g3d_st_framebuffer_flush_front(struct st_context_iface *stctx, - } - - static boolean --egl_g3d_st_framebuffer_validate(struct st_framebuffer_iface *stfbi, -+egl_g3d_st_framebuffer_validate(struct st_context_iface *stctx, -+ struct st_framebuffer_iface *stfbi, - const enum st_attachment_type *statts, - unsigned count, - struct pipe_resource **out) -diff --git a/src/gallium/state_trackers/glx/xlib/xm_st.c b/src/gallium/state_trackers/glx/xlib/xm_st.c -index 30e69ea..fb69998 100644 ---- a/src/gallium/state_trackers/glx/xlib/xm_st.c -+++ b/src/gallium/state_trackers/glx/xlib/xm_st.c -@@ -194,7 +194,8 @@ xmesa_st_framebuffer_validate_textures(struct st_framebuffer_iface *stfbi, - * \param out returns resources for each of the attachments - */ - static boolean --xmesa_st_framebuffer_validate(struct st_framebuffer_iface *stfbi, -+xmesa_st_framebuffer_validate(struct st_context_iface *stctx, -+ struct st_framebuffer_iface *stfbi, - const enum st_attachment_type *statts, - unsigned count, - struct pipe_resource **out) -diff --git a/src/gallium/state_trackers/osmesa/osmesa.c b/src/gallium/state_trackers/osmesa/osmesa.c -index bb85e5c..3546183 100644 ---- a/src/gallium/state_trackers/osmesa/osmesa.c -+++ b/src/gallium/state_trackers/osmesa/osmesa.c -@@ -342,7 +342,8 @@ osmesa_st_framebuffer_flush_front(struct st_context_iface *stctx, - * its resources). - */ - static boolean --osmesa_st_framebuffer_validate(struct st_framebuffer_iface *stfbi, -+osmesa_st_framebuffer_validate(struct st_context_iface *stctx, -+ struct st_framebuffer_iface *stfbi, - const enum st_attachment_type *statts, - unsigned count, - struct pipe_resource **out) -diff --git a/src/gallium/state_trackers/vega/vg_manager.c b/src/gallium/state_trackers/vega/vg_manager.c -index c079d90..2c43d76 100644 ---- a/src/gallium/state_trackers/vega/vg_manager.c -+++ b/src/gallium/state_trackers/vega/vg_manager.c -@@ -113,7 +113,8 @@ vg_manager_validate_framebuffer(struct vg_context *ctx) - if (stfb->iface_stamp != new_stamp) { - do { - /* validate the fb */ -- if (!stfb->iface->validate(stfb->iface, &stfb->strb_att, -+ if (!stfb->iface->validate((struct st_context_iface *)ctx, -+ stfb->iface, &stfb->strb_att, - 1, &pt) || !pt) - return; - -diff --git a/src/gallium/state_trackers/wgl/stw_st.c b/src/gallium/state_trackers/wgl/stw_st.c -index 9427398..e95c37f 100644 ---- a/src/gallium/state_trackers/wgl/stw_st.c -+++ b/src/gallium/state_trackers/wgl/stw_st.c -@@ -121,7 +121,8 @@ stw_st_framebuffer_validate_locked(struct st_framebuffer_iface *stfb, - } - - static boolean --stw_st_framebuffer_validate(struct st_framebuffer_iface *stfb, -+stw_st_framebuffer_validate(struct st_context_iface *stctx, -+ struct st_framebuffer_iface *stfb, - const enum st_attachment_type *statts, - unsigned count, - struct pipe_resource **out) -diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c -index 098e6c0..b1fd91a 100644 ---- a/src/mesa/state_tracker/st_manager.c -+++ b/src/mesa/state_tracker/st_manager.c -@@ -189,7 +189,7 @@ st_framebuffer_validate(struct st_framebuffer *stfb, - - /* validate the fb */ - do { -- if (!stfb->iface->validate(stfb->iface, stfb->statts, -+ if (!stfb->iface->validate(&st->iface, stfb->iface, stfb->statts, - stfb->num_statts, textures)) - return; - --- -1.8.3.1 - diff --git a/mesa.spec b/mesa.spec index 95340d5..e941de1 100644 --- a/mesa.spec +++ b/mesa.spec @@ -48,12 +48,12 @@ %define _default_patch_fuzz 2 -%define gitdate 20131114 +%define gitdate 20131128 #% define snapshot Summary: Mesa graphics libraries Name: mesa -Version: 9.2.3 +Version: 9.2.4 Release: 1.%{gitdate}%{?dist} License: MIT Group: System Environment/Libraries @@ -600,6 +600,9 @@ rm -rf $RPM_BUILD_ROOT %endif %changelog +* Thu Nov 28 2013 Igor Gnatenko - 9.2.4-1.20131128 +- 9.2.4 upstream release + * Thu Nov 14 2013 Igor Gnatenko - 9.2.3-1.20131114 - 9.2.3 upstream release diff --git a/sources b/sources index caf10db..f4bcce4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -54f46fc070303e0d467779ab39103d58 mesa-20131114.tar.xz +0f501dfd50b6094774b0d564d745a285 mesa-20131128.tar.xz