.dir-locals.el | 2 debian/changelog | 38 debian/control | 40 debian/mesa-opencl-icd.install.in | 3 debian/patches/egl-platform-mir.patch | 250 +++-- debian/rules | 10 docs/GL3.txt | 11 docs/index.html | 8 docs/relnotes.html | 1 docs/relnotes/10.4.4.html | 100 ++ docs/relnotes/10.5.0.html | 1 include/D3D9/d3d9types.h | 5 include/GL/glext.h | 57 - scons/llvm.py | 16 src/egl/drivers/dri2/platform_x11.c | 24 src/gallium/auxiliary/Makefile.sources | 1 src/gallium/auxiliary/draw/draw_llvm.c | 2 src/gallium/auxiliary/draw/draw_llvm.h | 2 src/gallium/auxiliary/gallivm/lp_bld_init.c | 2 src/gallium/auxiliary/hud/font.c | 24 src/gallium/auxiliary/hud/hud_context.c | 1 src/gallium/auxiliary/postprocess/pp_mlaa.c | 3 src/gallium/auxiliary/target-helpers/inline_debug_helper.h | 4 src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h | 4 src/gallium/auxiliary/tgsi/tgsi_parse.c | 12 src/gallium/auxiliary/tgsi/tgsi_parse.h | 2 src/gallium/auxiliary/tgsi/tgsi_ureg.c | 28 src/gallium/auxiliary/tgsi/tgsi_ureg.h | 25 src/gallium/auxiliary/util/u_cache.c | 2 src/gallium/auxiliary/util/u_math.h | 14 src/gallium/auxiliary/util/u_pstipple.c | 25 src/gallium/auxiliary/util/u_pstipple.h | 3 src/gallium/auxiliary/util/u_simple_list.h | 199 ---- src/gallium/auxiliary/util/u_simple_shaders.c | 12 src/gallium/auxiliary/util/u_slab.c | 2 src/gallium/auxiliary/util/u_tests.c | 301 +++++- src/gallium/auxiliary/util/u_tests.h | 4 src/gallium/docs/source/screen.rst | 5 src/gallium/docs/source/tgsi.rst | 18 src/gallium/drivers/freedreno/.dir-locals.el | 2 src/gallium/drivers/freedreno/freedreno_screen.c | 2 src/gallium/drivers/i915/i915_screen.c | 2 src/gallium/drivers/ilo/ilo_screen.c | 3 src/gallium/drivers/llvmpipe/lp_context.c | 2 src/gallium/drivers/llvmpipe/lp_scene.c | 2 src/gallium/drivers/llvmpipe/lp_screen.c | 7 src/gallium/drivers/llvmpipe/lp_state_fs.c | 2 src/gallium/drivers/llvmpipe/lp_state_setup.c | 2 src/gallium/drivers/llvmpipe/lp_texture.c | 2 src/gallium/drivers/nouveau/nv30/nv30_screen.c | 2 src/gallium/drivers/nouveau/nv50/nv50_screen.c | 2 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 2 src/gallium/drivers/r300/r300_context.c | 2 src/gallium/drivers/r300/r300_flush.c | 2 src/gallium/drivers/r300/r300_query.c | 2 src/gallium/drivers/r300/r300_reg.h | 22 src/gallium/drivers/r300/r300_screen.c | 8 src/gallium/drivers/r300/r300_state.c | 1 src/gallium/drivers/r300/r300_state_inlines.h | 1 src/gallium/drivers/r600/.dir-locals.el | 2 src/gallium/drivers/r600/r600_asm.c | 6 src/gallium/drivers/r600/r600_pipe.c | 3 src/gallium/drivers/r600/r600_shader.c | 63 + src/gallium/drivers/r600/r700_asm.c | 1 src/gallium/drivers/r600/sb/sb_expr.cpp | 2 src/gallium/drivers/radeon/.dir-locals.el | 2 src/gallium/drivers/radeon/r600_pipe_common.c | 11 src/gallium/drivers/radeon/r600_pipe_common.h | 1 src/gallium/drivers/radeon/r600_streamout.c | 4 src/gallium/drivers/radeonsi/.dir-locals.el | 2 src/gallium/drivers/radeonsi/si_compute.c | 117 +- src/gallium/drivers/radeonsi/si_descriptors.c | 111 +- src/gallium/drivers/radeonsi/si_hw_context.c | 1 src/gallium/drivers/radeonsi/si_pipe.c | 13 src/gallium/drivers/radeonsi/si_pipe.h | 10 src/gallium/drivers/radeonsi/si_pm4.c | 12 src/gallium/drivers/radeonsi/si_pm4.h | 1 src/gallium/drivers/radeonsi/si_shader.c | 101 +- src/gallium/drivers/radeonsi/si_shader.h | 8 src/gallium/drivers/radeonsi/si_state.c | 75 + src/gallium/drivers/radeonsi/si_state.h | 18 src/gallium/drivers/radeonsi/si_state_draw.c | 43 src/gallium/drivers/radeonsi/si_state_shaders.c | 139 ++ src/gallium/drivers/rbug/rbug_context.c | 2 src/gallium/drivers/rbug/rbug_core.c | 2 src/gallium/drivers/rbug/rbug_objects.c | 2 src/gallium/drivers/rbug/rbug_screen.c | 2 src/gallium/drivers/softpipe/sp_screen.c | 4 src/gallium/drivers/softpipe/sp_state_shader.c | 2 src/gallium/drivers/svga/svga_screen.c | 2 src/gallium/drivers/trace/tr_context.c | 2 src/gallium/drivers/trace/tr_screen.c | 2 src/gallium/drivers/trace/tr_texture.c | 2 src/gallium/drivers/vc4/.dir-locals.el | 2 src/gallium/drivers/vc4/kernel/.dir-locals.el | 2 src/gallium/drivers/vc4/vc4_opt_algebraic.c | 43 src/gallium/drivers/vc4/vc4_program.c | 2 src/gallium/drivers/vc4/vc4_qir.c | 15 src/gallium/drivers/vc4/vc4_qir.h | 7 src/gallium/drivers/vc4/vc4_screen.c | 2 src/gallium/include/pipe/p_defines.h | 4 src/gallium/include/pipe/p_state.h | 2 src/gallium/state_trackers/dri/dri_context.c | 7 src/gallium/state_trackers/dri/dri_drawable.c | 2 src/gallium/state_trackers/dri/drisw.c | 2 src/gallium/state_trackers/nine/adapter9.c | 249 ++--- src/gallium/state_trackers/nine/basetexture9.c | 15 src/gallium/state_trackers/nine/cubetexture9.c | 7 src/gallium/state_trackers/nine/device9.c | 250 ++++- src/gallium/state_trackers/nine/device9.h | 7 src/gallium/state_trackers/nine/nine_ff.c | 7 src/gallium/state_trackers/nine/nine_helpers.h | 4 src/gallium/state_trackers/nine/nine_pipe.c | 125 -- src/gallium/state_trackers/nine/nine_pipe.h | 111 ++ src/gallium/state_trackers/nine/nine_shader.c | 103 +- src/gallium/state_trackers/nine/nine_shader.h | 22 src/gallium/state_trackers/nine/nine_state.c | 310 ++++-- src/gallium/state_trackers/nine/nine_state.h | 15 src/gallium/state_trackers/nine/pixelshader9.c | 1 src/gallium/state_trackers/nine/resource9.c | 3 src/gallium/state_trackers/nine/stateblock9.c | 6 src/gallium/state_trackers/nine/surface9.c | 32 src/gallium/state_trackers/nine/swapchain9.c | 60 - src/gallium/state_trackers/nine/texture9.c | 7 src/gallium/state_trackers/nine/vertexdeclaration9.c | 11 src/gallium/state_trackers/nine/vertexshader9.c | 2 src/gallium/state_trackers/nine/volume9.c | 12 src/gallium/state_trackers/nine/volumetexture9.c | 7 src/gallium/state_trackers/osmesa/osmesa.c | 2 src/gallium/targets/d3dadapter9/drm.c | 71 - src/gallium/targets/dri/Makefile.am | 1 src/gallium/winsys/radeon/.dir-locals.el | 2 src/gallium/winsys/radeon/drm/radeon_drm_bo.c | 2 src/glsl/Makefile.sources | 2 src/glsl/README | 2 src/glsl/ast_to_hir.cpp | 21 src/glsl/glsl_lexer.ll | 8 src/glsl/ir_optimization.h | 2 src/glsl/list.h | 4 src/glsl/lower_instructions.cpp | 65 - src/glsl/nir/nir.c | 2 src/glsl/nir/nir.h | 5 src/glsl/nir/nir_algebraic.py | 36 src/glsl/nir/nir_lower_phis_to_scalar.c | 290 ++++++ src/glsl/nir/nir_lower_to_source_mods.c | 4 src/glsl/nir/nir_lower_vec_to_movs.c | 82 + src/glsl/nir/nir_opcodes.py | 4 src/glsl/nir/nir_opt_algebraic.py | 45 src/glsl/nir/nir_opt_remove_phis.c | 109 ++ src/glsl/nir/nir_search.c | 17 src/glsl/nir/nir_search.h | 19 src/glsl/nir/nir_to_ssa.c | 3 src/glsl/nir/nir_types.cpp | 14 src/glsl/nir/nir_types.h | 3 src/glsl/nir/nir_validate.c | 21 src/mapi/glapi/gen/gl_API.xml | 11 src/mesa/Makefile.sources | 1 src/mesa/drivers/common/meta.c | 11 src/mesa/drivers/common/meta.h | 8 src/mesa/drivers/common/meta_blit.c | 43 src/mesa/drivers/common/meta_copy_image.c | 3 src/mesa/drivers/common/meta_generate_mipmap.c | 2 src/mesa/drivers/common/meta_tex_subimage.c | 12 src/mesa/drivers/dri/common/drirc | 4 src/mesa/drivers/dri/i915/i830_texblend.c | 2 src/mesa/drivers/dri/i915/intel_fbo.c | 14 src/mesa/drivers/dri/i915/intel_syncobj.c | 2 src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 15 src/mesa/drivers/dri/i965/brw_context.h | 5 src/mesa/drivers/dri/i965/brw_eu_emit.c | 8 src/mesa/drivers/dri/i965/brw_fs.cpp | 50 - src/mesa/drivers/dri/i965/brw_fs.h | 16 src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 27 src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 37 src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 618 ++++--------- src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp | 36 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 2 src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c | 10 src/mesa/drivers/dri/i965/brw_meta_util.c | 5 src/mesa/drivers/dri/i965/brw_meta_util.h | 2 src/mesa/drivers/dri/i965/brw_shader.cpp | 85 + src/mesa/drivers/dri/i965/brw_shader.h | 2 src/mesa/drivers/dri/i965/brw_vec4.cpp | 8 src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp | 27 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 22 src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 4 src/mesa/drivers/dri/i965/gen6_sf_state.c | 2 src/mesa/drivers/dri/i965/gen7_sf_state.c | 2 src/mesa/drivers/dri/i965/gen7_vs_state.c | 7 src/mesa/drivers/dri/i965/gen7_wm_surface_state.c | 4 src/mesa/drivers/dri/i965/gen8_sf_state.c | 2 src/mesa/drivers/dri/i965/gen8_surface_state.c | 3 src/mesa/drivers/dri/i965/intel_blit.c | 31 src/mesa/drivers/dri/i965/intel_extensions.c | 6 src/mesa/drivers/dri/i965/intel_fbo.c | 20 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 30 src/mesa/drivers/dri/i965/intel_pixel_read.c | 29 src/mesa/drivers/dri/i965/intel_tex_image.c | 7 src/mesa/drivers/dri/i965/intel_tiled_memcpy.c | 30 src/mesa/drivers/dri/i965/intel_tiled_memcpy.h | 4 src/mesa/drivers/dri/nouveau/.dir-locals.el | 2 src/mesa/drivers/dri/nouveau/nouveau_state.c | 2 src/mesa/drivers/dri/r200/r200_cmdbuf.c | 2 src/mesa/drivers/dri/r200/r200_context.c | 2 src/mesa/drivers/dri/r200/r200_ioctl.h | 2 src/mesa/drivers/dri/r200/r200_state.c | 2 src/mesa/drivers/dri/r200/r200_swtcl.c | 2 src/mesa/drivers/dri/r200/r200_tex.c | 2 src/mesa/drivers/dri/radeon/radeon_common_context.c | 2 src/mesa/drivers/dri/radeon/radeon_context.c | 2 src/mesa/drivers/dri/radeon/radeon_dma.c | 2 src/mesa/drivers/dri/radeon/radeon_ioctl.c | 2 src/mesa/drivers/dri/radeon/radeon_ioctl.h | 2 src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c | 2 src/mesa/drivers/dri/radeon/radeon_queryobj.c | 2 src/mesa/drivers/dri/radeon/radeon_queryobj.h | 2 src/mesa/drivers/dri/radeon/radeon_state.c | 4 src/mesa/drivers/dri/radeon/radeon_swtcl.c | 2 src/mesa/drivers/dri/radeon/radeon_tex.c | 2 src/mesa/main/attrib.c | 6 src/mesa/main/blit.c | 2 src/mesa/main/context.c | 2 src/mesa/main/dd.h | 4 src/mesa/main/dlist.c | 197 ++-- src/mesa/main/dlist.h | 3 src/mesa/main/enable.c | 2 src/mesa/main/extensions.c | 5 src/mesa/main/fbobject.c | 2 src/mesa/main/format_utils.c | 4 src/mesa/main/get.c | 1 src/mesa/main/get_hash_params.py | 4 src/mesa/main/glformats.c | 47 src/mesa/main/glformats.h | 3 src/mesa/main/image.c | 14 src/mesa/main/image.h | 3 src/mesa/main/light.c | 2 src/mesa/main/mtypes.h | 10 src/mesa/main/pack.c | 6 src/mesa/main/polygon.c | 46 src/mesa/main/polygon.h | 8 src/mesa/main/querymatrix.c | 51 + src/mesa/main/shader_query.cpp | 5 src/mesa/main/shaderapi.c | 26 src/mesa/main/simple_list.h | 210 ---- src/mesa/main/tests/dispatch_sanity.cpp | 3 src/mesa/main/teximage.c | 368 ++++--- src/mesa/main/texobj.c | 58 + src/mesa/main/uniform_query.cpp | 17 src/mesa/program/ir_to_mesa.cpp | 4 src/mesa/program/prog_hash_table.c | 2 src/mesa/state_tracker/st_atom_rasterizer.c | 1 src/mesa/state_tracker/st_cb_blit.c | 6 src/mesa/state_tracker/st_cb_bufferobjects.c | 11 src/mesa/state_tracker/st_extensions.c | 1 src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 4 src/mesa/swrast/s_blit.c | 43 src/mesa/swrast/s_copypix.c | 25 src/mesa/swrast/swrast.h | 18 src/mesa/tnl/t_rasterpos.c | 2 src/mesa/tnl/t_vb_light.c | 2 src/mesa/tnl/t_vertex_generic.c | 2 src/mesa/tnl/t_vertex_sse.c | 2 src/mesa/vbo/vbo_save_api.c | 5 src/util/Makefile.sources | 1 src/util/macros.h | 52 - src/util/simple_list.h | 211 ++++ src/util/u_atomic.h | 54 - 267 files changed, 4734 insertions(+), 2521 deletions(-)
New commits: commit 326bd7b9b1d39c9f15f538e7ae62fd16ad8e825a Author: Maarten Lankhorst <maarten.lankho...@ubuntu.com> Date: Tue Feb 10 15:43:33 2015 +0100 New upstream snapshot. diff --git a/debian/changelog b/debian/changelog index b5a6596..ad8ab561f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,12 @@ -mesa (10.5.0~git20150113-0ubuntu1) UNRELEASED; urgency=medium +mesa (10.5.0~git20150210-0ubuntu1) UNRELEASED; urgency=medium + [ Timo Aaltonen ] * New upstream snapshot * Update Mir patch. + [ Maarten Lankhorst ] + * New upstream snapshot. + -- Timo Aaltonen <tjaal...@debian.org> Tue, 13 Jan 2015 15:56:02 +0200 mesa (10.4.2-2ubuntu3) vivid; urgency=medium diff --git a/debian/patches/i915-fix-gen4-hangs.patch b/debian/patches/i915-fix-gen4-hangs.patch deleted file mode 100644 index 34e8a5c..0000000 --- a/debian/patches/i915-fix-gen4-hangs.patch +++ /dev/null @@ -1,59 +0,0 @@ -commit 882f702441c6601589bdef805a9157cb113b91dd -Author: Kenneth Graunke <kenn...@whitecape.org> -Date: Sat Jan 17 23:21:15 2015 -0800 - - i965: Work around mysterious Gen4 GPU hangs with minimal state changes. - - Gen4 hardware appears to GPU hang frequently when using Chromium, and - also when running 'glmark2 -b ideas'. Most of the error states contain - 3DPRIMITIVE commands in quick succession, with very few state packets - between them - usually VERTEX_BUFFERS/ELEMENTS and CONSTANT_BUFFER. - - I trimmed an apitrace of the glmark2 hang down to two draw calls with a - glUniformMatrix4fv call between the two. Either draw by itself works - fine, but together, they hang the GPU. Removing the glUniform call - makes the hangs disappear. In the hardware state, this translates to - removing the CONSTANT_BUFFER packet between the two 3DPRIMITIVE packets. - - Flushing before emitting CONSTANT_BUFFER packets also appears to make - the hangs disappear. I observed a slowdown in glxgears by doing it all - the time, so I've chosen to only do it when BRW_NEW_BATCH and - BRW_NEW_PSP are unset (i.e. we haven't done a CS_URB_STATE change or - already flushed the whole pipeline). - - I'd much rather understand the problem, but at this point, I don't see - how we'd ever be able to track it down further. We have no real tools, - and the hardware people moved on years ago. I've analyzed 20+ error - states and read every scrap of documentation I could find. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80568 - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85367 - Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> - Acked-by: Matt Turner <matts...@gmail.com> - Cc: "10.4 10.3" <mesa-sta...@lists.freedesktop.org> - (cherry picked from commit c4fd0c9052dd391d6f2e9bb8e6da209dfc7ef35b) - -diff --git a/src/mesa/drivers/dri/i965/brw_curbe.c b/src/mesa/drivers/dri/i965/brw_curbe.c -index 1a828ed..718d87c 100644 ---- a/src/mesa/drivers/dri/i965/brw_curbe.c -+++ b/src/mesa/drivers/dri/i965/brw_curbe.c -@@ -280,6 +280,19 @@ brw_upload_constant_buffer(struct brw_context *brw) - */ - - emit: -+ /* Work around mysterious 965 hangs that appear to happen if you do -+ * two 3DPRIMITIVEs with only a CONSTANT_BUFFER inbetween. If we -+ * haven't already flushed for some other reason, explicitly do so. -+ * -+ * We've found no documented reason why this should be necessary. -+ */ -+ if (brw->gen == 4 && !brw->is_g4x && -+ (brw->state.dirty.brw & (BRW_NEW_BATCH | BRW_NEW_PSP)) == 0) { -+ BEGIN_BATCH(1); -+ OUT_BATCH(MI_FLUSH); -+ ADVANCE_BATCH(); -+ } -+ - /* BRW_NEW_URB_FENCE: From the gen4 PRM, volume 1, section 3.9.8 - * (CONSTANT_BUFFER (CURBE Load)): - * diff --git a/debian/patches/llvm-3.6-fixes.patch b/debian/patches/llvm-3.6-fixes.patch deleted file mode 100644 index e518f51..0000000 --- a/debian/patches/llvm-3.6-fixes.patch +++ /dev/null @@ -1,616 +0,0 @@ -diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c -index 14c802b..869abb0 100644 ---- a/src/gallium/auxiliary/draw/draw_llvm.c -+++ b/src/gallium/auxiliary/draw/draw_llvm.c -@@ -742,6 +742,7 @@ generate_fetch(struct gallivm_state *gallivm, - val = lp_build_fetch_rgba_aos(gallivm, - format_desc, - lp_float32_vec4_type(), -+ FALSE, - map_ptr, - zero, zero, zero); - LLVMBuildStore(builder, val, temp_ptr); -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format.h b/src/gallium/auxiliary/gallivm/lp_bld_format.h -index 1177fb2..969f1f6 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_format.h -+++ b/src/gallium/auxiliary/gallivm/lp_bld_format.h -@@ -62,6 +62,7 @@ LLVMValueRef - lp_build_fetch_rgba_aos(struct gallivm_state *gallivm, - const struct util_format_description *format_desc, - struct lp_type type, -+ boolean aligned, - LLVMValueRef base_ptr, - LLVMValueRef offset, - LLVMValueRef i, -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c -index af755d4..3c25c32 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c -+++ b/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c -@@ -356,6 +356,7 @@ lp_build_pack_rgba_aos(struct gallivm_state *gallivm, - * Fetch a pixel into a 4 float AoS. - * - * \param format_desc describes format of the image we're fetching from -+ * \param aligned whether the data is guaranteed to be aligned - * \param ptr address of the pixel block (or the texel if uncompressed) - * \param i, j the sub-block pixel coordinates. For non-compressed formats - * these will always be (0, 0). -@@ -365,6 +366,7 @@ LLVMValueRef - lp_build_fetch_rgba_aos(struct gallivm_state *gallivm, - const struct util_format_description *format_desc, - struct lp_type type, -+ boolean aligned, - LLVMValueRef base_ptr, - LLVMValueRef offset, - LLVMValueRef i, -@@ -400,7 +402,7 @@ lp_build_fetch_rgba_aos(struct gallivm_state *gallivm, - - packed = lp_build_gather(gallivm, type.length/4, - format_desc->block.bits, type.width*4, -- base_ptr, offset, TRUE); -+ aligned, base_ptr, offset, TRUE); - - assert(format_desc->block.bits <= vec_len); - -@@ -437,7 +439,7 @@ lp_build_fetch_rgba_aos(struct gallivm_state *gallivm, - LLVMValueRef packed; - - packed = lp_build_gather_elem(gallivm, num_pixels, -- format_desc->block.bits, 32, -+ format_desc->block.bits, 32, aligned, - base_ptr, offset, k, FALSE); - - tmps[k] = lp_build_unpack_arith_rgba_aos(gallivm, -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_format_soa.c -index ff2887e..afaabc0 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_format_soa.c -+++ b/src/gallium/auxiliary/gallivm/lp_bld_format_soa.c -@@ -386,6 +386,7 @@ lp_build_fetch_rgba_soa(struct gallivm_state *gallivm, - type.length, - format_desc->block.bits, - type.width, -+ TRUE, - base_ptr, offset, FALSE); - - /* -@@ -411,8 +412,8 @@ lp_build_fetch_rgba_soa(struct gallivm_state *gallivm, - - packed = lp_build_gather(gallivm, type.length, - format_desc->block.bits, -- type.width, base_ptr, offset, -- FALSE); -+ type.width, TRUE, -+ base_ptr, offset, FALSE); - if (format_desc->format == PIPE_FORMAT_R11G11B10_FLOAT) { - lp_build_r11g11b10_to_float(gallivm, packed, rgba_out); - } -@@ -438,15 +439,15 @@ lp_build_fetch_rgba_soa(struct gallivm_state *gallivm, - unsigned mask = (1 << 8) - 1; - LLVMValueRef s_offset = lp_build_const_int_vec(gallivm, type, 4); - offset = LLVMBuildAdd(builder, offset, s_offset, ""); -- packed = lp_build_gather(gallivm, type.length, -- 32, type.width, base_ptr, offset, FALSE); -+ packed = lp_build_gather(gallivm, type.length, 32, type.width, -+ TRUE, base_ptr, offset, FALSE); - packed = LLVMBuildAnd(builder, packed, - lp_build_const_int_vec(gallivm, type, mask), ""); - } - else { - assert (format_desc->format == PIPE_FORMAT_Z32_FLOAT_S8X24_UINT); -- packed = lp_build_gather(gallivm, type.length, -- 32, type.width, base_ptr, offset, TRUE); -+ packed = lp_build_gather(gallivm, type.length, 32, type.width, -+ TRUE, base_ptr, offset, TRUE); - packed = LLVMBuildBitCast(builder, packed, - lp_build_vec_type(gallivm, type), ""); - } -@@ -472,7 +473,7 @@ lp_build_fetch_rgba_soa(struct gallivm_state *gallivm, - tmp_type.norm = TRUE; - - tmp = lp_build_fetch_rgba_aos(gallivm, format_desc, tmp_type, -- base_ptr, offset, i, j); -+ TRUE, base_ptr, offset, i, j); - - lp_build_rgba8_to_fi32_soa(gallivm, - type, -@@ -522,7 +523,7 @@ lp_build_fetch_rgba_soa(struct gallivm_state *gallivm, - - /* Get a single float[4]={R,G,B,A} pixel */ - tmp = lp_build_fetch_rgba_aos(gallivm, format_desc, tmp_type, -- base_ptr, offset_elem, -+ TRUE, base_ptr, offset_elem, - i_elem, j_elem); - - /* -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format_yuv.c b/src/gallium/auxiliary/gallivm/lp_bld_format_yuv.c -index 873f354..4f5a45c 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_format_yuv.c -+++ b/src/gallium/auxiliary/gallivm/lp_bld_format_yuv.c -@@ -497,7 +497,7 @@ lp_build_fetch_subsampled_rgba_aos(struct gallivm_state *gallivm, - assert(format_desc->block.width == 2); - assert(format_desc->block.height == 1); - -- packed = lp_build_gather(gallivm, n, 32, 32, base_ptr, offset, FALSE); -+ packed = lp_build_gather(gallivm, n, 32, 32, TRUE, base_ptr, offset, FALSE); - - (void)j; - -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_gather.c b/src/gallium/auxiliary/gallivm/lp_bld_gather.c -index 9155d81..d026020 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_gather.c -+++ b/src/gallium/auxiliary/gallivm/lp_bld_gather.c -@@ -76,6 +76,7 @@ lp_build_gather_elem(struct gallivm_state *gallivm, - unsigned length, - unsigned src_width, - unsigned dst_width, -+ boolean aligned, - LLVMValueRef base_ptr, - LLVMValueRef offsets, - unsigned i, -@@ -93,6 +94,27 @@ lp_build_gather_elem(struct gallivm_state *gallivm, - ptr = LLVMBuildBitCast(gallivm->builder, ptr, src_ptr_type, ""); - res = LLVMBuildLoad(gallivm->builder, ptr, ""); - -+ /* XXX -+ * On some archs we probably really want to avoid having to deal -+ * with alignments lower than 4 bytes (if fetch size is a power of -+ * two >= 32). On x86 it doesn't matter, however. -+ * We should be able to guarantee full alignment for any kind of texture -+ * fetch (except ARB_texture_buffer_range, oops), but not vertex fetch -+ * (there's PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY and friends -+ * but I don't think that's quite what we wanted). -+ * For ARB_texture_buffer_range, PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT -+ * looks like a good fit, but it seems this cap bit (and OpenGL) aren't -+ * enforcing what we want (which is what d3d10 does, the offset needs to -+ * be aligned to element size, but GL has bytes regardless of element -+ * size which would only leave us with minimum alignment restriction of 16 -+ * which doesn't make much sense if the type isn't 4x32bit). Due to -+ * translation of offsets to first_elem in sampler_views it actually seems -+ * gallium could not do anything else except 16 no matter what... -+ */ -+ if (!aligned) { -+ lp_set_load_alignment(res, 1); -+ } -+ - assert(src_width <= dst_width); - if (src_width > dst_width) { - res = LLVMBuildTrunc(gallivm->builder, res, dst_elem_type, ""); -@@ -126,6 +148,7 @@ lp_build_gather_elem(struct gallivm_state *gallivm, - * @param length length of the offsets - * @param src_width src element width in bits - * @param dst_width result element width in bits (src will be expanded to fit) -+ * @param aligned whether the data is guaranteed to be aligned (to src_width) - * @param base_ptr base pointer, should be a i8 pointer type. - * @param offsets vector with offsets - * @param vector_justify select vector rather than integer justification -@@ -135,6 +158,7 @@ lp_build_gather(struct gallivm_state *gallivm, - unsigned length, - unsigned src_width, - unsigned dst_width, -+ boolean aligned, - LLVMValueRef base_ptr, - LLVMValueRef offsets, - boolean vector_justify) -@@ -144,7 +168,7 @@ lp_build_gather(struct gallivm_state *gallivm, - if (length == 1) { - /* Scalar */ - return lp_build_gather_elem(gallivm, length, -- src_width, dst_width, -+ src_width, dst_width, aligned, - base_ptr, offsets, 0, vector_justify); - } else { - /* Vector */ -@@ -158,7 +182,7 @@ lp_build_gather(struct gallivm_state *gallivm, - LLVMValueRef index = lp_build_const_int32(gallivm, i); - LLVMValueRef elem; - elem = lp_build_gather_elem(gallivm, length, -- src_width, dst_width, -+ src_width, dst_width, aligned, - base_ptr, offsets, i, vector_justify); - res = LLVMBuildInsertElement(gallivm->builder, res, elem, index, ""); - } -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_gather.h b/src/gallium/auxiliary/gallivm/lp_bld_gather.h -index ee69473..3ede476 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_gather.h -+++ b/src/gallium/auxiliary/gallivm/lp_bld_gather.h -@@ -45,6 +45,7 @@ lp_build_gather_elem(struct gallivm_state *gallivm, - unsigned length, - unsigned src_width, - unsigned dst_width, -+ boolean aligned, - LLVMValueRef base_ptr, - LLVMValueRef offsets, - unsigned i, -@@ -55,6 +56,7 @@ lp_build_gather(struct gallivm_state *gallivm, - unsigned length, - unsigned src_width, - unsigned dst_width, -+ boolean aligned, - LLVMValueRef base_ptr, - LLVMValueRef offsets, - boolean vector_justify); -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp -index fe3c754..5210acc 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp -+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp -@@ -500,8 +500,12 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT, - MM = new ShaderMemoryManager(JMM); - *OutCode = MM->getGeneratedCode(); - -+#if HAVE_LLVM >= 0x0306 -+ builder.setMCJITMemoryManager(std::unique_ptr<RTDyldMemoryManager>(MM)); -+#else - builder.setMCJITMemoryManager(MM); - #endif -+#endif - } else { - #if HAVE_LLVM < 0x0306 - BaseMemoryManager* JMM = reinterpret_cast<BaseMemoryManager*>(CMM); -diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c -index 394521d..d7fde81 100644 ---- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c -+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c -@@ -581,6 +581,7 @@ lp_build_sample_fetch_image_nearest(struct lp_build_sample_context *bld, - bld->texel_type.length, - bld->format_desc->block.bits, - bld->texel_type.width, -+ TRUE, - data_ptr, offset, TRUE); - - rgba8 = LLVMBuildBitCast(builder, rgba8, u8n_vec_type, ""); -@@ -589,6 +590,7 @@ lp_build_sample_fetch_image_nearest(struct lp_build_sample_context *bld, - rgba8 = lp_build_fetch_rgba_aos(bld->gallivm, - bld->format_desc, - u8n.type, -+ TRUE, - data_ptr, offset, - x_subcoord, - y_subcoord); -@@ -919,6 +921,7 @@ lp_build_sample_fetch_image_linear(struct lp_build_sample_context *bld, - bld->texel_type.length, - bld->format_desc->block.bits, - bld->texel_type.width, -+ TRUE, - data_ptr, offset[k][j][i], TRUE); - - rgba8 = LLVMBuildBitCast(builder, rgba8, u8n_vec_type, ""); -@@ -927,6 +930,7 @@ lp_build_sample_fetch_image_linear(struct lp_build_sample_context *bld, - rgba8 = lp_build_fetch_rgba_aos(bld->gallivm, - bld->format_desc, - u8n.type, -+ TRUE, - data_ptr, offset[k][j][i], - x_subcoord[i], - y_subcoord[j]); -diff --git a/src/gallium/drivers/llvmpipe/lp_test_format.c b/src/gallium/drivers/llvmpipe/lp_test_format.c -index 48bf06e..d9abd1a 100644 ---- a/src/gallium/drivers/llvmpipe/lp_test_format.c -+++ b/src/gallium/drivers/llvmpipe/lp_test_format.c -@@ -112,7 +112,7 @@ add_fetch_rgba_test(struct gallivm_state *gallivm, unsigned verbose, - block = LLVMAppendBasicBlockInContext(context, func, "entry"); - LLVMPositionBuilderAtEnd(builder, block); - -- rgba = lp_build_fetch_rgba_aos(gallivm, desc, type, -+ rgba = lp_build_fetch_rgba_aos(gallivm, desc, type, TRUE, - packed_ptr, offset, i, j); - - LLVMBuildStore(builder, rgba, rgba_ptr); -@@ -252,6 +252,7 @@ test_format_unorm8(unsigned verbose, FILE *fp, - } - - /* To ensure it's 16-byte aligned */ -+ /* Could skip this and use unaligned lp_build_fetch_rgba_aos */ - memcpy(packed, test->packed, sizeof packed); - - for (i = 0; i < desc->block.height; ++i) { -diff --git a/src/gallium/drivers/r600/r600_llvm.c b/src/gallium/drivers/r600/r600_llvm.c -index e8cae00..bca934e 100644 ---- a/src/gallium/drivers/r600/r600_llvm.c -+++ b/src/gallium/drivers/r600/r600_llvm.c -@@ -881,7 +881,7 @@ unsigned r600_llvm_compile( - const char * gpu_family = r600_get_llvm_processor_name(family); - - memset(&binary, 0, sizeof(struct radeon_shader_binary)); -- r = radeon_llvm_compile(mod, &binary, gpu_family, dump); -+ r = radeon_llvm_compile(mod, &binary, gpu_family, dump, NULL); - - r = r600_create_shader(bc, &binary, use_kill); - -diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c -index f9393e6..b349123 100644 ---- a/src/gallium/drivers/radeon/r600_pipe_common.c -+++ b/src/gallium/drivers/radeon/r600_pipe_common.c -@@ -36,6 +36,10 @@ - #include "radeon/radeon_video.h" - #include <inttypes.h> - -+#ifndef HAVE_LLVM -+#define HAVE_LLVM 0 -+#endif -+ - /* - * pipe_context - */ -@@ -501,6 +505,12 @@ static int r600_get_compute_param(struct pipe_screen *screen, - switch (param) { - case PIPE_COMPUTE_CAP_IR_TARGET: { - const char *gpu; -+ const char *triple; -+ if (rscreen->family <= CHIP_ARUBA || HAVE_LLVM < 0x0306) { -+ triple = "r600--"; -+ } else { -+ triple = "amdgcn--"; -+ } - switch(rscreen->family) { - /* Clang < 3.6 is missing Hainan in its list of - * GPUs, so we need to use the name of a similar GPU. -@@ -515,9 +525,10 @@ static int r600_get_compute_param(struct pipe_screen *screen, - break; - } - if (ret) { -- sprintf(ret, "%s-r600--", gpu); -+ sprintf(ret, "%s-%s", gpu, triple); -+ - } -- return (8 + strlen(gpu)) * sizeof(char); -+ return (strlen(triple) + strlen(gpu)) * sizeof(char); - } - case PIPE_COMPUTE_CAP_GRID_DIMENSION: - if (ret) { -diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.c b/src/gallium/drivers/radeon/radeon_llvm_emit.c -index dc871d7..b98afb2 100644 ---- a/src/gallium/drivers/radeon/radeon_llvm_emit.c -+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.c -@@ -98,19 +98,19 @@ static void init_r600_target() - } - } - --static LLVMTargetRef get_r600_target() -+LLVMTargetRef radeon_llvm_get_r600_target(const char *triple) - { - LLVMTargetRef target = NULL; -+ char *err_message = NULL; - -- for (target = LLVMGetFirstTarget(); target; -- target = LLVMGetNextTarget(target)) { -- if (!strncmp(LLVMGetTargetName(target), "r600", 4)) { -- break; -- } -- } -+ init_r600_target(); - -- if (!target) { -- fprintf(stderr, "Can't find target r600\n"); -+ if (LLVMGetTargetFromTriple(triple, &target, &err_message)) { -+ fprintf(stderr, "Cannot find target for triple %s ", triple); -+ if (err_message) { -+ fprintf(stderr, "%s\n", err_message); -+ } -+ LLVMDisposeMessage(err_message); - return NULL; - } - return target; -@@ -138,14 +138,13 @@ static void radeonDiagnosticHandler(LLVMDiagnosticInfoRef di, void *context) - * @returns 0 for success, 1 for failure - */ - unsigned radeon_llvm_compile(LLVMModuleRef M, struct radeon_shader_binary *binary, -- const char *gpu_family, unsigned dump) -+ const char *gpu_family, unsigned dump, LLVMTargetMachineRef tm) - { - -- LLVMTargetRef target; -- LLVMTargetMachineRef tm; - char cpu[CPU_STRING_LEN]; - char fs[FS_STRING_LEN]; - char *err; -+ bool dispose_tm = false; - LLVMContextRef llvm_ctx; - unsigned rval = 0; - LLVMMemoryBufferRef out_buffer; -@@ -154,22 +153,23 @@ unsigned radeon_llvm_compile(LLVMModuleRef M, struct radeon_shader_binary *binar - char triple[TRIPLE_STRING_LEN]; - LLVMBool mem_err; - -- /* initialise */ -- init_r600_target(); -- -- target = get_r600_target(); -- if (!target) { -- return 1; -- } -- -- strncpy(cpu, gpu_family, CPU_STRING_LEN); -- memset(fs, 0, sizeof(fs)); -- if (dump) { -- LLVMDumpModule(M); -- strncpy(fs, "+DumpCode", FS_STRING_LEN); -+ if (!tm) { -+ strncpy(triple, "r600--", TRIPLE_STRING_LEN); -+ LLVMTargetRef target = radeon_llvm_get_r600_target(triple); -+ if (!target) { -+ return 1; -+ } -+ strncpy(cpu, gpu_family, CPU_STRING_LEN); -+ memset(fs, 0, sizeof(fs)); -+ if (dump) { -+ LLVMDumpModule(M); -+ strncpy(fs, "+DumpCode", FS_STRING_LEN); -+ } -+ tm = LLVMCreateTargetMachine(target, triple, cpu, fs, -+ LLVMCodeGenLevelDefault, LLVMRelocDefault, -+ LLVMCodeModelDefault); -+ dispose_tm = true; - } -- strncpy(triple, "r600--", TRIPLE_STRING_LEN); -- - /* Setup Diagnostic Handler*/ - llvm_ctx = LLVMGetModuleContext(M); - -@@ -179,9 +179,6 @@ unsigned radeon_llvm_compile(LLVMModuleRef M, struct radeon_shader_binary *binar - rval = 0; - - /* Compile IR*/ -- tm = LLVMCreateTargetMachine(target, triple, cpu, fs, -- LLVMCodeGenLevelDefault, LLVMRelocDefault, -- LLVMCodeModelDefault); - mem_err = LLVMTargetMachineEmitToMemoryBuffer(tm, M, LLVMObjectFile, &err, - &out_buffer); - -@@ -205,6 +202,9 @@ unsigned radeon_llvm_compile(LLVMModuleRef M, struct radeon_shader_binary *binar - - /* Clean up */ - LLVMDisposeMemoryBuffer(out_buffer); -- LLVMDisposeTargetMachine(tm); -+ -+ if (dispose_tm) { -+ LLVMDisposeTargetMachine(tm); -+ } - return rval; - } -diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.h b/src/gallium/drivers/radeon/radeon_llvm_emit.h -index 780ff5f..3ccef78 100644 ---- a/src/gallium/drivers/radeon/radeon_llvm_emit.h -+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.h -@@ -28,15 +28,19 @@ - #define RADEON_LLVM_EMIT_H - - #include <llvm-c/Core.h> -+#include <llvm-c/TargetMachine.h> - - struct radeon_shader_binary; - - void radeon_llvm_shader_type(LLVMValueRef F, unsigned type); - -+LLVMTargetRef radeon_llvm_get_r600_target(const char *triple); -+ - unsigned radeon_llvm_compile( - LLVMModuleRef M, - struct radeon_shader_binary *binary, - const char * gpu_family, -- unsigned dump); -+ unsigned dump, -+ LLVMTargetMachineRef tm); - - #endif /* RADEON_LLVM_EMIT_H */ -diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c -index 53c83ba..f99bf76 100644 ---- a/src/gallium/drivers/radeonsi/si_pipe.c -+++ b/src/gallium/drivers/radeonsi/si_pipe.c -@@ -25,10 +25,14 @@ - #include "si_public.h" - #include "sid.h" - -+#include "radeon/radeon_llvm_emit.h" - #include "radeon/radeon_uvd.h" - #include "util/u_memory.h" - #include "vl/vl_decoder.h" - -+#include <llvm-c/Target.h> -+#include <llvm-c/TargetMachine.h> -+ - /* - * pipe_context - */ -@@ -417,6 +421,12 @@ static void si_destroy_screen(struct pipe_screen* pscreen) - if (!sscreen->b.ws->unref(sscreen->b.ws)) - return; - -+#if HAVE_LLVM >= 0x0306 -+ // r600_destroy_common_screen() frees sscreen, so we need to make -+ // sure to dispose the TargetMachine before we call it. -+ LLVMDisposeTargetMachine(sscreen->tm); -+#endif -+ - r600_destroy_common_screen(&sscreen->b); - } - -@@ -474,6 +484,12 @@ static bool si_initialize_pipe_config(struct si_screen *sscreen) - struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws) - { - struct si_screen *sscreen = CALLOC_STRUCT(si_screen); -+ LLVMTargetRef r600_target; -+#if HAVE_LLVM >= 0x0306 -+ const char *triple = "amdgcn--"; -+#else -+ const char *triple = "r600--"; -+#endif - if (sscreen == NULL) { - return NULL; - } -@@ -501,5 +517,13 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws) - /* Create the auxiliary context. This must be done last. */ - sscreen->b.aux_context = sscreen->b.b.context_create(&sscreen->b.b, NULL); - -+#if HAVE_LLVM >= 0x0306 -+ /* Initialize LLVM TargetMachine */ -+ r600_target = radeon_llvm_get_r600_target(triple); -+ sscreen->tm = LLVMCreateTargetMachine(r600_target, triple, -+ r600_get_llvm_processor_name(sscreen->b.family), -+ "+DumpCode", LLVMCodeGenLevelDefault, LLVMRelocDefault, -+ LLVMCodeModelDefault); -+#endif - return &sscreen->b.b; - } -diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h -index 5f5404d..597949d 100644 ---- a/src/gallium/drivers/radeonsi/si_pipe.h -+++ b/src/gallium/drivers/radeonsi/si_pipe.h -@@ -28,6 +28,8 @@ - - #include "si_state.h" - -+#include <llvm-c/TargetMachine.h> -+ - #ifdef PIPE_ARCH_BIG_ENDIAN - #define SI_BIG_ENDIAN 1 - #else -@@ -43,6 +45,7 @@ struct si_compute; - - struct si_screen { - struct r600_common_screen b; -+ LLVMTargetMachineRef tm; - }; - - struct si_sampler_view { -diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c -index 541e733..afc6aad 100644 ---- a/src/gallium/drivers/radeonsi/si_shader.c -+++ b/src/gallium/drivers/radeonsi/si_shader.c -@@ -2602,7 +2602,7 @@ int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader, - shader->selector ? shader->selector->tokens : NULL); - memset(&binary, 0, sizeof(binary)); - r = radeon_llvm_compile(mod, &binary, -- r600_get_llvm_processor_name(sscreen->b.family), dump); -+ r600_get_llvm_processor_name(sscreen->b.family), dump, sscreen->tm); - - if (r) { - return r; -@@ -2740,6 +2740,13 @@ int si_shader_create(struct si_screen *sscreen, struct si_shader *shader) - bld_base->op_actions[TGSI_OPCODE_EMIT].emit = si_llvm_emit_vertex; - bld_base->op_actions[TGSI_OPCODE_ENDPRIM].emit = si_llvm_emit_primitive; - -+ if (HAVE_LLVM >= 0x0306) { -+ bld_base->op_actions[TGSI_OPCODE_MAX].emit = build_tgsi_intrinsic_nomem; -+ bld_base->op_actions[TGSI_OPCODE_MAX].intr_name = "llvm.maxnum.f32"; -+ bld_base->op_actions[TGSI_OPCODE_MIN].emit = build_tgsi_intrinsic_nomem; -+ bld_base->op_actions[TGSI_OPCODE_MIN].intr_name = "llvm.minnum.f32"; -+ } -+ - si_shader_ctx.radeon_bld.load_system_value = declare_system_value; - si_shader_ctx.tokens = sel->tokens; - tgsi_parse_init(&si_shader_ctx.parse, si_shader_ctx.tokens); -diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp -index e953822..f2b6f59 100644 ---- a/src/gallium/state_trackers/clover/llvm/invocation.cpp -+++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp -@@ -281,7 +281,11 @@ namespace { - } - - for (unsigned i = 0; i < kernel_node->getNumOperands(); ++i) { -+#if HAVE_LLVM >= 0x0306 -+ kernels.push_back(llvm::mdconst::dyn_extract<llvm::Function>( -+#else - kernels.push_back(llvm::dyn_cast<llvm::Function>( -+#endif - kernel_node->getOperand(i)->getOperand(0))); - } - } diff --git a/debian/patches/series b/debian/patches/series index 09cb9c0..af4c631 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,5 +3,3 @@ # Ubuntu patches. egl-platform-mir.patch i915-dont-default-to-2.1.patch -i915-fix-gen4-hangs.patch -llvm-3.6-fixes.patch commit d1e21325cf3c394f5fb28808a113826ea3b7f54b Author: Brian Paul <bri...@vmware.com> Date: Wed Feb 4 13:44:48 2015 -0700 gallium/hud: also try R8_UNORM format for font texture Convert the code to try formats from an array rather than a bunch of if/else cases. -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/e1ylc5j-00054s...@moszumanska.debian.org