diff --git a/packages/graphics/Mesa/patches/Mesa-99.01-Add_LLVM_VERSION_PATCH_to_DEFINES.patch b/packages/graphics/Mesa/patches/Mesa-99.01-Add_LLVM_VERSION_PATCH_to_DEFINES.patch new file mode 100644 index 0000000000..06e51eea8b --- /dev/null +++ b/packages/graphics/Mesa/patches/Mesa-99.01-Add_LLVM_VERSION_PATCH_to_DEFINES.patch @@ -0,0 +1,26 @@ +diff -Naur Mesa-10.1.3/configure.ac Mesa-10.1.3.patch/configure.ac +--- Mesa-10.1.3/configure.ac 2014-05-09 16:15:36.000000000 +0200 ++++ Mesa-10.1.3.patch/configure.ac 2014-05-12 11:20:15.124212119 +0200 +@@ -1602,6 +1602,13 @@ + + AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR], + [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) ++ ++ dnl In LLVM 3.4.1 patch level was defined in config.h and not ++ dnl llvm-config.h ++ AC_COMPUTE_INT([LLVM_VERSION_PATCH], [LLVM_VERSION_PATCH], ++ [#include "${LLVM_INCLUDEDIR}/llvm/Config/config.h"], ++ LLVM_VERSION_PATCH=0) dnl Default if LLVM_VERSION_PATCH not found ++ + AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR], + [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) + +@@ -1627,7 +1634,7 @@ + LLVM_COMPONENTS="${LLVM_COMPONENTS} option" + fi + fi +- DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT" ++ DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DLLVM_VERSION_PATCH=$LLVM_VERSION_PATCH" + MESA_LLVM=1 + + dnl Check for Clang internal headers diff --git a/packages/graphics/Mesa/patches/Mesa-99.02-radeonsi-Enable_geometry_shaders_with_LLVM-3.4.1.patch b/packages/graphics/Mesa/patches/Mesa-99.02-radeonsi-Enable_geometry_shaders_with_LLVM-3.4.1.patch new file mode 100644 index 0000000000..841d92ac37 --- /dev/null +++ b/packages/graphics/Mesa/patches/Mesa-99.02-radeonsi-Enable_geometry_shaders_with_LLVM-3.4.1.patch @@ -0,0 +1,119 @@ +From 93c2ebbd83604263fa46351a7efcde382322024b Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Fri, 09 May 2014 08:24:42 +0000 +Subject: radeonsi: Enable geometry shaders with LLVM 3.4.1 + +Reviewed-by: Michel Dänzer + +CC: "10.1 10.2" +--- +diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c +index e0b211f..38ad077 100644 +--- a/src/gallium/drivers/radeonsi/si_descriptors.c ++++ b/src/gallium/drivers/radeonsi/si_descriptors.c +@@ -152,7 +152,7 @@ static void si_update_descriptors(struct si_context *sctx, + 7 + /* copy */ + (4 + desc->element_dw_size) * util_bitcount(desc->dirty_mask) + /* update */ + 4; /* pointer update */ +-#if HAVE_LLVM >= 0x0305 ++#if LLVM_SUPPORTS_GEOM_SHADERS + if (desc->shader_userdata_reg >= R_00B130_SPI_SHADER_USER_DATA_VS_0 && + desc->shader_userdata_reg < R_00B230_SPI_SHADER_USER_DATA_GS_0) + desc->atom.num_dw += 4; /* second pointer update */ +@@ -177,7 +177,7 @@ static void si_emit_shader_pointer(struct si_context *sctx, + radeon_emit(cs, va); + radeon_emit(cs, va >> 32); + +-#if HAVE_LLVM >= 0x0305 ++#if LLVM_SUPPORTS_GEOM_SHADERS + if (desc->shader_userdata_reg >= R_00B130_SPI_SHADER_USER_DATA_VS_0 && + desc->shader_userdata_reg < R_00B230_SPI_SHADER_USER_DATA_GS_0) { + radeon_emit(cs, PKT3(PKT3_SET_SH_REG, 2, 0)); +diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c +index e5d0a95..07c00cf 100644 +--- a/src/gallium/drivers/radeonsi/si_pipe.c ++++ b/src/gallium/drivers/radeonsi/si_pipe.c +@@ -225,7 +225,7 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param) + return 4; + + case PIPE_CAP_GLSL_FEATURE_LEVEL: +- return HAVE_LLVM >= 0x0305 ? 330 : 140; ++ return (LLVM_SUPPORTS_GEOM_SHADERS) ? 330 : 140; + + case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE: + return MIN2(sscreen->b.info.vram_size, 0xFFFFFFFF); +@@ -309,7 +309,7 @@ static int si_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enu + case PIPE_SHADER_VERTEX: + break; + case PIPE_SHADER_GEOMETRY: +-#if HAVE_LLVM < 0x0305 ++#if !(LLVM_SUPPORTS_GEOM_SHADERS) + return 0; + #endif + break; +diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h +index 1601a4b..de42477 100644 +--- a/src/gallium/drivers/radeonsi/si_pipe.h ++++ b/src/gallium/drivers/radeonsi/si_pipe.h +@@ -39,6 +39,10 @@ + + #define SI_MAX_DRAW_CS_DWORDS 18 + ++#define LLVM_SUPPORTS_GEOM_SHADERS \ ++ ((HAVE_LLVM >= 0x0305) || \ ++ (HAVE_LLVM == 0x0304 && LLVM_VERSION_PATCH >= 1)) ++ + struct si_pipe_compute; + + struct si_screen { +diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c +index 9d048c5..a98be24 100644 +--- a/src/gallium/drivers/radeonsi/si_state.c ++++ b/src/gallium/drivers/radeonsi/si_state.c +@@ -2174,7 +2174,7 @@ static void *si_create_fs_state(struct pipe_context *ctx, + return si_create_shader_state(ctx, state, PIPE_SHADER_FRAGMENT); + } + +-#if HAVE_LLVM >= 0x0305 ++#if LLVM_SUPPORTS_GEOM_SHADERS + + static void *si_create_gs_state(struct pipe_context *ctx, + const struct pipe_shader_state *state) +@@ -2204,7 +2204,7 @@ static void si_bind_vs_shader(struct pipe_context *ctx, void *state) + sctx->vs_shader = sel; + } + +-#if HAVE_LLVM >= 0x0305 ++#if LLVM_SUPPORTS_GEOM_SHADERS + + static void si_bind_gs_shader(struct pipe_context *ctx, void *state) + { +@@ -2272,7 +2272,7 @@ static void si_delete_vs_shader(struct pipe_context *ctx, void *state) + si_delete_shader_selector(ctx, sel); + } + +-#if HAVE_LLVM >= 0x0305 ++#if LLVM_SUPPORTS_GEOM_SHADERS + + static void si_delete_gs_shader(struct pipe_context *ctx, void *state) + { +@@ -2769,7 +2769,7 @@ static void si_bind_vs_sampler_states(struct pipe_context *ctx, unsigned count, + si_set_sampler_states(sctx, pm4, count, states, + &sctx->samplers[PIPE_SHADER_VERTEX], + R_00B130_SPI_SHADER_USER_DATA_VS_0); +-#if HAVE_LLVM >= 0x0305 ++#if LLVM_SUPPORTS_GEOM_SHADERS + si_set_sampler_states(sctx, pm4, count, states, + &sctx->samplers[PIPE_SHADER_VERTEX], + R_00B330_SPI_SHADER_USER_DATA_ES_0); +@@ -3001,7 +3001,7 @@ void si_init_state_functions(struct si_context *sctx) + sctx->b.b.bind_fs_state = si_bind_ps_shader; + sctx->b.b.delete_vs_state = si_delete_vs_shader; + sctx->b.b.delete_fs_state = si_delete_ps_shader; +-#if HAVE_LLVM >= 0x0305 ++#if LLVM_SUPPORTS_GEOM_SHADERS + sctx->b.b.create_gs_state = si_create_gs_state; + sctx->b.b.bind_gs_state = si_bind_gs_shader; + sctx->b.b.delete_gs_state = si_delete_gs_shader; +-- +cgit v0.9.0.2-2-gbebe