[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

mesa: Changes to 'upstream-experimental'



 Makefile.am                                               |   12 +--
 VERSION                                                   |    2 
 include/pci_ids/radeonsi_pci_ids.h                        |    7 ++
 src/gallium/auxiliary/vl/vl_compositor.c                  |    2 
 src/gallium/drivers/radeon/radeon_video.c                 |    7 +-
 src/gallium/state_trackers/vdpau/device.c                 |   43 +++++++++++++-
 src/gallium/state_trackers/vdpau/output.c                 |   42 +++++++++----
 src/gallium/state_trackers/vdpau/vdpau_private.h          |    1 
 src/glsl/glcpp/glcpp-lex.l                                |   10 ++-
 src/mesa/Makefile.am                                      |    3 
 src/mesa/drivers/dri/i965/brw_eu_compact.c                |   14 +---
 src/mesa/drivers/dri/i965/brw_meta_fast_clear.c           |    1 
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp            |    7 ++
 src/mesa/drivers/dri/i965/test_vec4_register_coalesce.cpp |    5 -
 14 files changed, 116 insertions(+), 40 deletions(-)

New commits:
commit 390a9f6cb7ddc755380a680ff8e07b308e5b31b4
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Aug 31 19:29:42 2014 +0100

    Increment version to 10.3.0-rc2
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>

diff --git a/VERSION b/VERSION
index 9cad0c5..87d81b2 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-10.3.0-rc1
+10.3.0-rc2

commit 0fbb9a599df898d4e1166d6d6f00cb34a0524bea
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Aug 31 23:16:15 2014 +0100

    mesa: fix make tarballs
    
    Current method of generating distribution tar-balls involves manually
    invoking make + target name in the appropriate places. This temporary
    solution is used until we get 'make dist' working.
    
    Currently it does not work, as in order to have the target (which is
    also a filename) available in the final Makefile we need to add a PHONY
    target + use the correct target name.
    
    Cc: "10.2 10.3" <mesa-stable@lists.freedesktop.org>
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    (cherry picked from commit 88cbe3908f0ea08228a5ffb1808f98b6906c4416)

diff --git a/Makefile.am b/Makefile.am
index d2916da..111c1c8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -64,7 +64,7 @@ IGNORE_FILES = \
 
 parsers: configure
 	$(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp glcpp/glcpp-lex.c glcpp/glcpp-parse.c glcpp/glcpp-parse.h
-	$(MAKE) -C src/mesa program/lex.yy.c program/program_parse.tab.c program/program_parse.tab.h
+	$(MAKE) -C src/mesa ../../src/mesa/program/lex.yy.c ../../src/mesa/program/program_parse.tab.c ../../src/mesa/program/program_parse.tab.h
 
 # Everything for new a Mesa release:
 ARCHIVES = $(PACKAGE_NAME).tar.gz \
diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am
index e71bccb..b23208a 100644
--- a/src/mesa/Makefile.am
+++ b/src/mesa/Makefile.am
@@ -36,7 +36,8 @@ endif
 gldir = $(includedir)/GL
 gl_HEADERS = $(top_srcdir)/include/GL/*.h
 
-.PHONY: $(BUILDDIR)main/git_sha1.h.tmp
+.PHONY: $(BUILDDIR)main/git_sha1.h.tmp $(BUILDDIR)program/lex.yy.c $(BUILDDIR)program/program_parse.tab.c $(BUILDDIR)program/program_parse.tab.h
+
 $(BUILDDIR)main/git_sha1.h.tmp:
 	@touch main/git_sha1.h.tmp
 	@if test -d $(top_srcdir)/.git; then \

commit 2310a4b4cf0fd7a4cd04dd9aba5c89f52070e5d2
Author: Matt Turner <mattst88@gmail.com>
Date:   Thu Aug 28 20:16:42 2014 -0700

    i965/vec4: Update register coalescing test.
    
    In commit 04895f5c I added support for reswizzling writemasks. This test
    was checking that we didn't support this.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82881
    (cherry picked from commit 8b5ac1df17608e0d0d5ce412988ee8de97f61405)

diff --git a/src/mesa/drivers/dri/i965/test_vec4_register_coalesce.cpp b/src/mesa/drivers/dri/i965/test_vec4_register_coalesce.cpp
index 149174c..16e6270 100644
--- a/src/mesa/drivers/dri/i965/test_vec4_register_coalesce.cpp
+++ b/src/mesa/drivers/dri/i965/test_vec4_register_coalesce.cpp
@@ -241,8 +241,5 @@ TEST_F(register_coalesce_test, test_channel_mul_grf)
 
    register_coalesce(v);
 
-   /* This path isn't supported yet in the reswizzling code, so we're checking
-    * that we haven't done anything bad to scalar non-DP[234]s.
-    */
-   EXPECT_NE(mul->dst.reg, to.reg);
+   EXPECT_EQ(mul->dst.reg, to.reg);
 }

commit 8ef3d4fe03de1b370e255a3c900719a8cce59599
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Fri Aug 29 15:15:43 2014 -0700

    i965: Add 2x MSAA support to Broadwell fast clear code.
    
    According to the cited documentation section (but in the newer docs),
    x_scaledown is the same for 2x and 4x MSAA.
    
    +47 piglits.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83081
    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: Matt Turner <mattst88@gmail.com>
    Cc: "10.3" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit e34a363a781a24b2cf6930c4d37f781ffec8a19a)

diff --git a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
index 4fb20d7..aa3a60d 100644
--- a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
+++ b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
@@ -282,6 +282,7 @@ get_fast_clear_rect(struct brw_context *brw, struct gl_framebuffer *fb,
        * factor is 2 vertically and either 2 or 8 horizontally.
        */
       switch (irb->mt->num_samples) {
+      case 2:
       case 4:
          x_scaledown = 8;
          break;

commit 0c67167370bfbfee7d456812c13a87b239530dc9
Author: Christian König <christian.koenig@amd.com>
Date:   Sun Aug 24 12:22:08 2014 +0200

    radeon/uvd: fix field handling on R6XX style UVD
    
    The first UVD generation can only do frame based output.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    (cherry picked from commit 80771e47b6c1e47ab55f17311e1d4e227a9eb3d8)
    Nominated-by: Alex Deucher <alexdeucher@gmail.com>

diff --git a/src/gallium/drivers/radeon/radeon_video.c b/src/gallium/drivers/radeon/radeon_video.c
index 17e9a59..6dcee45 100644
--- a/src/gallium/drivers/radeon/radeon_video.c
+++ b/src/gallium/drivers/radeon/radeon_video.c
@@ -251,8 +251,11 @@ int rvid_get_video_param(struct pipe_screen *screen,
 			       profile != PIPE_VIDEO_PROFILE_VC1_MAIN;
 		case PIPE_VIDEO_CAP_PREFERS_INTERLACED:
 		case PIPE_VIDEO_CAP_SUPPORTS_INTERLACED:
-			/* and MPEG2 only with shaders */
-			return codec != PIPE_VIDEO_FORMAT_MPEG12;
+			/* MPEG2 only with shaders and no support for
+			   interlacing on R6xx style UVD */
+			return codec != PIPE_VIDEO_FORMAT_MPEG12 &&
+			       /* TODO: RV770 might actually work */
+			       rscreen->family > CHIP_RV770;
 		default:
 			break;
 		}

commit 60f136eed9eb6d0622e44f6634162a702ba57c02
Author: Christian König <christian.koenig@amd.com>
Date:   Wed Aug 13 21:01:33 2014 +0200

    vl/compositor: set the scissor before clearing the render target
    
    Otherwise we clear areas that shouldn't be cleared.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit 03a99ba9e41ea86355a4febbe0b1a114d5455b9f)

diff --git a/src/gallium/auxiliary/vl/vl_compositor.c b/src/gallium/auxiliary/vl/vl_compositor.c
index 839fd27..6bd1a88 100644
--- a/src/gallium/auxiliary/vl/vl_compositor.c
+++ b/src/gallium/auxiliary/vl/vl_compositor.c
@@ -1060,6 +1060,7 @@ vl_compositor_render(struct vl_compositor_state *s,
       s->scissor.maxx = dst_surface->width;
       s->scissor.maxy = dst_surface->height;
    }
+   c->pipe->set_scissor_states(c->pipe, 0, 1, &s->scissor);
 
    gen_vertex_data(c, s, dirty_area);
 
@@ -1072,7 +1073,6 @@ vl_compositor_render(struct vl_compositor_state *s,
       dirty_area->x1 = dirty_area->y1 = MIN_DIRTY;
    }
 
-   c->pipe->set_scissor_states(c->pipe, 0, 1, &s->scissor);
    c->pipe->set_framebuffer_state(c->pipe, &c->fb_state);
    c->pipe->bind_vs_state(c->pipe, c->vs);
    c->pipe->set_vertex_buffers(c->pipe, 0, 1, &c->vertex_buf);

commit d2fb1da46d1bf9f5f05175a0ed30919fc0c118bd
Author: Christian König <christian.koenig@amd.com>
Date:   Wed Aug 13 20:21:06 2014 +0200

    st/vdpau: fix vlVdpOutputSurfaceRender(Output|Bitmap)Surface
    
    Correctly handle that the source_surface is only optional.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80561
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit b73c20759fe1b4a96296bed58637f5ded7c9155c)

diff --git a/src/gallium/state_trackers/vdpau/device.c b/src/gallium/state_trackers/vdpau/device.c
index 9c5ec60..efc1fde 100644
--- a/src/gallium/state_trackers/vdpau/device.c
+++ b/src/gallium/state_trackers/vdpau/device.c
@@ -42,6 +42,8 @@ vdp_imp_device_create_x11(Display *display, int screen, VdpDevice *device,
                           VdpGetProcAddress **get_proc_address)
 {
    struct pipe_screen *pscreen;
+   struct pipe_resource *res, res_tmpl;
+   struct pipe_sampler_view sv_tmpl;
    vlVdpDevice *dev = NULL;
    VdpStatus ret;
 
@@ -79,6 +81,43 @@ vdp_imp_device_create_x11(Display *display, int screen, VdpDevice *device,
       goto no_context;
    }
 
+   memset(&res_tmpl, 0, sizeof(res_tmpl));
+
+   res_tmpl.target = PIPE_TEXTURE_2D;
+   res_tmpl.format = PIPE_FORMAT_R8G8B8A8_UNORM;
+   res_tmpl.width0 = 1;
+   res_tmpl.height0 = 1;
+   res_tmpl.depth0 = 1;
+   res_tmpl.array_size = 1;
+   res_tmpl.bind = PIPE_BIND_SAMPLER_VIEW;
+   res_tmpl.usage = PIPE_USAGE_DEFAULT;
+
+   if (!CheckSurfaceParams(pscreen, &res_tmpl)) {
+      ret = VDP_STATUS_NO_IMPLEMENTATION;
+      goto no_resource;
+   }
+
+   res = pscreen->resource_create(pscreen, &res_tmpl);
+   if (!res) {
+      ret = VDP_STATUS_RESOURCES;
+      goto no_resource;
+   }
+
+   memset(&sv_tmpl, 0, sizeof(sv_tmpl));
+   u_sampler_view_default_template(&sv_tmpl, res, res->format);
+
+   sv_tmpl.swizzle_r = PIPE_SWIZZLE_ONE;
+   sv_tmpl.swizzle_g = PIPE_SWIZZLE_ONE;
+   sv_tmpl.swizzle_b = PIPE_SWIZZLE_ONE;
+   sv_tmpl.swizzle_a = PIPE_SWIZZLE_ONE;
+
+   dev->dummy_sv = dev->context->create_sampler_view(dev->context, res, &sv_tmpl);
+   pipe_resource_reference(&res, NULL);
+   if (!dev->dummy_sv) {
+      ret = VDP_STATUS_RESOURCES;
+      goto no_resource;
+   }
+
    *device = vlAddDataHTAB(dev);
    if (*device == 0) {
       ret = VDP_STATUS_ERROR;
@@ -93,8 +132,9 @@ vdp_imp_device_create_x11(Display *display, int screen, VdpDevice *device,
    return VDP_STATUS_OK;
 
 no_handle:
+   pipe_sampler_view_reference(&dev->dummy_sv, NULL);
+no_resource:
    dev->context->destroy(dev->context);
-   /* Destroy vscreen */
 no_context:
    vl_screen_destroy(dev->vscreen);
 no_vscreen:
@@ -185,6 +225,7 @@ vlVdpDeviceFree(vlVdpDevice *dev)
 {
    pipe_mutex_destroy(dev->mutex);
    vl_compositor_cleanup(&dev->compositor);
+   pipe_sampler_view_reference(&dev->dummy_sv, NULL);
    dev->context->destroy(dev->context);
    vl_screen_destroy(dev->vscreen);
    FREE(dev);
diff --git a/src/gallium/state_trackers/vdpau/output.c b/src/gallium/state_trackers/vdpau/output.c
index caae50f..3248f76 100644
--- a/src/gallium/state_trackers/vdpau/output.c
+++ b/src/gallium/state_trackers/vdpau/output.c
@@ -624,9 +624,9 @@ vlVdpOutputSurfaceRenderOutputSurface(VdpOutputSurface destination_surface,
                                       uint32_t flags)
 {
    vlVdpOutputSurface *dst_vlsurface;
-   vlVdpOutputSurface *src_vlsurface;
 
    struct pipe_context *context;
+   struct pipe_sampler_view *src_sv;
    struct vl_compositor *compositor;
    struct vl_compositor_state *cstate;
 
@@ -639,12 +639,19 @@ vlVdpOutputSurfaceRenderOutputSurface(VdpOutputSurface destination_surface,
    if (!dst_vlsurface)
       return VDP_STATUS_INVALID_HANDLE;
 
-   src_vlsurface = vlGetDataHTAB(source_surface);
-   if (!src_vlsurface)
-      return VDP_STATUS_INVALID_HANDLE;
+   if (source_surface == VDP_INVALID_HANDLE) {
+      src_sv = dst_vlsurface->device->dummy_sv;
+
+   } else {
+      vlVdpOutputSurface *src_vlsurface = vlGetDataHTAB(source_surface);
+      if (!src_vlsurface)
+         return VDP_STATUS_INVALID_HANDLE;
 
-   if (dst_vlsurface->device != src_vlsurface->device)
-      return VDP_STATUS_HANDLE_DEVICE_MISMATCH;
+      if (dst_vlsurface->device != src_vlsurface->device)
+         return VDP_STATUS_HANDLE_DEVICE_MISMATCH;
+
+      src_sv = src_vlsurface->sampler_view;
+   }
 
    pipe_mutex_lock(dst_vlsurface->device->mutex);
    vlVdpResolveDelayedRendering(dst_vlsurface->device, NULL, NULL);
@@ -657,7 +664,7 @@ vlVdpOutputSurfaceRenderOutputSurface(VdpOutputSurface destination_surface,
 
    vl_compositor_clear_layers(cstate);
    vl_compositor_set_layer_blend(cstate, 0, blend, false);
-   vl_compositor_set_rgba_layer(cstate, compositor, 0, src_vlsurface->sampler_view,
+   vl_compositor_set_rgba_layer(cstate, compositor, 0, src_sv,
                                 RectToPipe(source_rect, &src_rect), NULL,
                                 ColorsToPipe(colors, flags, vlcolors));
    STATIC_ASSERT(VL_COMPOSITOR_ROTATE_0 == VDP_OUTPUT_SURFACE_RENDER_ROTATE_0);
@@ -688,9 +695,9 @@ vlVdpOutputSurfaceRenderBitmapSurface(VdpOutputSurface destination_surface,
                                       uint32_t flags)
 {
    vlVdpOutputSurface *dst_vlsurface;
-   vlVdpBitmapSurface *src_vlsurface;
 
    struct pipe_context *context;
+   struct pipe_sampler_view *src_sv;
    struct vl_compositor *compositor;
    struct vl_compositor_state *cstate;
 
@@ -703,12 +710,19 @@ vlVdpOutputSurfaceRenderBitmapSurface(VdpOutputSurface destination_surface,
    if (!dst_vlsurface)
       return VDP_STATUS_INVALID_HANDLE;
 
-   src_vlsurface = vlGetDataHTAB(source_surface);
-   if (!src_vlsurface)
-      return VDP_STATUS_INVALID_HANDLE;
+   if (source_surface == VDP_INVALID_HANDLE) {
+      src_sv = dst_vlsurface->device->dummy_sv;
+
+   } else {
+      vlVdpBitmapSurface *src_vlsurface = vlGetDataHTAB(source_surface);
+      if (!src_vlsurface)
+         return VDP_STATUS_INVALID_HANDLE;
 
-   if (dst_vlsurface->device != src_vlsurface->device)
-      return VDP_STATUS_HANDLE_DEVICE_MISMATCH;
+      if (dst_vlsurface->device != src_vlsurface->device)
+         return VDP_STATUS_HANDLE_DEVICE_MISMATCH;
+
+      src_sv = src_vlsurface->sampler_view;
+   }
 
    context = dst_vlsurface->device->context;
    compositor = &dst_vlsurface->device->compositor;
@@ -721,7 +735,7 @@ vlVdpOutputSurfaceRenderBitmapSurface(VdpOutputSurface destination_surface,
 
    vl_compositor_clear_layers(cstate);
    vl_compositor_set_layer_blend(cstate, 0, blend, false);
-   vl_compositor_set_rgba_layer(cstate, compositor, 0, src_vlsurface->sampler_view,
+   vl_compositor_set_rgba_layer(cstate, compositor, 0, src_sv,
                                 RectToPipe(source_rect, &src_rect), NULL,
                                 ColorsToPipe(colors, flags, vlcolors));
    vl_compositor_set_layer_rotation(cstate, 0, flags & 3);
diff --git a/src/gallium/state_trackers/vdpau/vdpau_private.h b/src/gallium/state_trackers/vdpau/vdpau_private.h
index 65f8e47..d1443a0 100644
--- a/src/gallium/state_trackers/vdpau/vdpau_private.h
+++ b/src/gallium/state_trackers/vdpau/vdpau_private.h
@@ -348,6 +348,7 @@ typedef struct
    struct vl_screen *vscreen;
    struct pipe_context *context;
    struct vl_compositor compositor;
+   struct pipe_sampler_view *dummy_sv;
    pipe_mutex mutex;
 
    struct {

commit 627d31dc36be6a92775b038bc4a26a96df8e7191
Author: Carl Worth <cworth@cworth.org>
Date:   Mon Aug 18 11:36:12 2014 -0700

    glcpp: Don't use alternation in the lookahead for empty pragmas.
    
    We've found that there's a buffer overrun bug in flex that's triggered by
    using alternation in a lookahead pattern.
    
    Fortunately, we don't need to match the exact {NEWLINE} expression to
    detect an empty pragma. It suffices to verify that there are no non-space
    characters before any newline character. So we can use a simple [\r\n] to
    get the desired behavior while avoiding the flex bug.
    
    Fixes the regression of piglit's 17000-consecutive-chars-identifier test,
    (which has been crashing since commit
    04e40fd337a244ee77ef9553985e9398ff0344af ).
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82472
    Signed-off-by: Carl Worth <cworth@cworth.org>
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    
    CC: <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 23163df24cf96107ee8ccb372db20f49e9d88948)

diff --git a/src/glsl/glcpp/glcpp-lex.l b/src/glsl/glcpp/glcpp-lex.l
index 98d500e..fa9aa50 100644
--- a/src/glsl/glcpp/glcpp-lex.l
+++ b/src/glsl/glcpp/glcpp-lex.l
@@ -289,8 +289,14 @@ HEXADECIMAL_INTEGER	0[xX][0-9a-fA-F]+[uU]?
 }
 
 	/* Swallow empty #pragma directives, (to avoid confusing the
-	 * downstream compiler). */
-<HASH>pragma{HSPACE}*/{NEWLINE} {
+	 * downstream compiler).
+	 *
+	 * Note: We use a simple regular expression for the lookahead
+	 * here. Specifically, we cannot use the complete {NEWLINE} expression
+	 * since it uses alternation and we've found that there's a flex bug
+	 * where using alternation in the lookahead portion of a pattern
+	 * triggers a buffer overrun. */
+<HASH>pragma{HSPACE}*/[\r\n] {
 	BEGIN INITIAL;
 }
 

commit e4f54d8b470995b88afb0bbf247a8f0a908b0817
Author: Carl Worth <cworth@cworth.org>
Date:   Thu Aug 21 09:03:02 2014 -0700

    Makefile: Switch from md5sums to sha256sums
    
    We switched to these several stable releases ago, (since the MD5 algorithm has
    been broken for some time), but only now did I get around to fixing this in
    the Makefile rather than just performing this step manually.
    
    CC: "10.2 10.3" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 46d03d37bf3a75e86f9f8ab56c6a939d04f23383)

diff --git a/Makefile.am b/Makefile.am
index 4780510..d2916da 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -71,7 +71,7 @@ ARCHIVES = $(PACKAGE_NAME).tar.gz \
 	$(PACKAGE_NAME).tar.bz2 \
 	$(PACKAGE_NAME).zip
 
-tarballs: md5
+tarballs: checksums
 	rm -f ../$(PACKAGE_DIR) $(PACKAGE_NAME).tar
 
 manifest.txt: .git
@@ -98,9 +98,9 @@ $(PACKAGE_NAME).zip: parsers ../$(PACKAGE_DIR) manifest.txt
 	zip -q -@ $(PACKAGE_NAME).zip < $(PACKAGE_DIR)/manifest.txt ; \
 	mv $(PACKAGE_NAME).zip $(PACKAGE_DIR)
 
-md5: $(ARCHIVES)
-	@-md5sum $(PACKAGE_NAME).tar.gz
-	@-md5sum $(PACKAGE_NAME).tar.bz2
-	@-md5sum $(PACKAGE_NAME).zip
+checksums: $(ARCHIVES)
+	@-sha256sum $(PACKAGE_NAME).tar.gz
+	@-sha256sum $(PACKAGE_NAME).tar.bz2
+	@-sha256sum $(PACKAGE_NAME).zip
 
 .PHONY: tarballs md5

commit 2edc941e75c26c93d0954f036d632fde799ed7f5
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Aug 21 11:16:15 2014 -0400

    radeonsi: add new SI pci ids
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit 153df688349dd6e55fa4c280ed6c8abd02c5f890)

diff --git a/include/pci_ids/radeonsi_pci_ids.h b/include/pci_ids/radeonsi_pci_ids.h
index 6412f08..571e863 100644
--- a/include/pci_ids/radeonsi_pci_ids.h
+++ b/include/pci_ids/radeonsi_pci_ids.h
@@ -38,6 +38,7 @@ CHIPSET(0x6828, VERDE_6828, VERDE)
 CHIPSET(0x6829, VERDE_6829, VERDE)
 CHIPSET(0x682A, VERDE_682A, VERDE)
 CHIPSET(0x682B, VERDE_682B, VERDE)
+CHIPSET(0x682C, VERDE_682C, VERDE)
 CHIPSET(0x682D, VERDE_682D, VERDE)
 CHIPSET(0x682F, VERDE_682F, VERDE)
 CHIPSET(0x6830, VERDE_6830, VERDE)
@@ -54,8 +55,11 @@ CHIPSET(0x6600, OLAND_6600, OLAND)
 CHIPSET(0x6601, OLAND_6601, OLAND)
 CHIPSET(0x6602, OLAND_6602, OLAND)
 CHIPSET(0x6603, OLAND_6603, OLAND)
+CHIPSET(0x6604, OLAND_6604, OLAND)
+CHIPSET(0x6605, OLAND_6605, OLAND)
 CHIPSET(0x6606, OLAND_6606, OLAND)
 CHIPSET(0x6607, OLAND_6607, OLAND)
+CHIPSET(0x6608, OLAND_6608, OLAND)
 CHIPSET(0x6610, OLAND_6610, OLAND)
 CHIPSET(0x6611, OLAND_6611, OLAND)
 CHIPSET(0x6613, OLAND_6613, OLAND)

commit eb9681938687a8ba5bb9ec4c5456ff7d6c6794ec
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Aug 21 11:13:17 2014 -0400

    radeonsi: add new CIK pci ids
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit f50b6b489534f8f362953cbe08d37233f1eab669)

diff --git a/include/pci_ids/radeonsi_pci_ids.h b/include/pci_ids/radeonsi_pci_ids.h
index 5099c74..6412f08 100644
--- a/include/pci_ids/radeonsi_pci_ids.h
+++ b/include/pci_ids/radeonsi_pci_ids.h
@@ -73,6 +73,8 @@ CHIPSET(0x666F, HAINAN_666F, HAINAN)
 
 CHIPSET(0x6640, BONAIRE_6640, BONAIRE)
 CHIPSET(0x6641, BONAIRE_6641, BONAIRE)
+CHIPSET(0x6646, BONAIRE_6646, BONAIRE)
+CHIPSET(0x6647, BONAIRE_6647, BONAIRE)
 CHIPSET(0x6649, BONAIRE_6649, BONAIRE)
 CHIPSET(0x6650, BONAIRE_6650, BONAIRE)
 CHIPSET(0x6651, BONAIRE_6651, BONAIRE)
@@ -132,6 +134,7 @@ CHIPSET(0x1313, KAVERI_1313, KAVERI)
 CHIPSET(0x1315, KAVERI_1315, KAVERI)
 CHIPSET(0x1316, KAVERI_1316, KAVERI)
 CHIPSET(0x1317, KAVERI_1317, KAVERI)
+CHIPSET(0x1318, KAVERI_1318, KAVERI)
 CHIPSET(0x131B, KAVERI_131B, KAVERI)
 CHIPSET(0x131C, KAVERI_131C, KAVERI)
 CHIPSET(0x131D, KAVERI_131D, KAVERI)

commit f2a1b7d508d0daa71bd97843d67e43108405cff7
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Sat Aug 16 15:18:21 2014 -0700

    i965: Disable try_emit_b2f_of_compare on Gen4-6.
    
    The optimization relies on CMP setting the destination to 0, which is
    equivalent to 0.0f.  However, early platforms only set the least
    significant byte, leaving the other bits undefined.  So, we must disable
    the optimization on those platforms.
    
    Oddly, Sandybridge wasn't reported as broken.  The PRM states that it
    only sets the LSB, but the internal documentation says that it follows
    the IVB behavior.  Since it wasn't reported as broken, we believe it
    really does follow the IVB behavior.
    
    v2: Allow the optimization on Sandybridge (requested by Matt).
    
    +32 piglits on Ironlake.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?=79963
    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
    Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
    Reviewed-by: Matt Turner <mattst88@gmail.com>
    (cherry picked from commit 97d03b9366bfa55b27feb92aa5afacd9c5f6f421)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index eca5d0c..6e48be7 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -1135,6 +1135,13 @@ vec4_visitor::try_emit_mad(ir_expression *ir)
 bool
 vec4_visitor::try_emit_b2f_of_compare(ir_expression *ir)
 {
+   /* This optimization relies on CMP setting the destination to 0 when
+    * false.  Early hardware only sets the least significant bit, and
+    * leaves the other bits undefined.  So we can't use it.
+    */
+   if (brw->gen < 6)
+      return false;
+
    ir_expression *const cmp = ir->operands[0]->as_expression();
 
    if (cmp == NULL)

commit 53728f60aa5ddf93579abd0d424eeac545fa57d3
Author: Matt Turner <mattst88@gmail.com>
Date:   Thu Aug 21 23:02:49 2014 -0700

    i965: Fix JIP/UIP calculations.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82846
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82929
    (cherry picked from commit d77f5603a5de26e66561ec003118bbfb1a07666b)

diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c b/src/mesa/drivers/dri/i965/brw_eu_compact.c
index 3680c55..4f509dd 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_compact.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c
@@ -1029,19 +1029,17 @@ update_uip_jip(struct brw_context *brw, brw_inst *insn,
 {
    int scale = brw->gen >= 8 ? sizeof(brw_compact_inst) : 1;
 
-   int32_t jip = brw_inst_jip(brw, insn);
-   jip -= scale *
-      compacted_between(this_old_ip, this_old_ip + jip, compacted_counts);
-   brw_inst_set_jip(brw, insn, jip);
+   int32_t jip = brw_inst_jip(brw, insn) / scale;
+   jip -= compacted_between(this_old_ip, this_old_ip + jip, compacted_counts);
+   brw_inst_set_jip(brw, insn, jip * scale);
 
    if (brw_inst_opcode(brw, insn) == BRW_OPCODE_ENDIF ||
        brw_inst_opcode(brw, insn) == BRW_OPCODE_WHILE)
       return;
 
-   int32_t uip = brw_inst_uip(brw, insn);
-   uip -= scale *
-      compacted_between(this_old_ip, this_old_ip + uip, compacted_counts);
-   brw_inst_set_uip(brw, insn, uip);
+   int32_t uip = brw_inst_uip(brw, insn) / scale;
+   uip -= compacted_between(this_old_ip, this_old_ip + uip, compacted_counts);
+   brw_inst_set_uip(brw, insn, uip * scale);
 }
 
 void


Reply to: