[Mesa-dev] Add interpolateAt builtin support to the radeonsi nir backend

2018-01-14 Thread Timothy Arceri
This series is intended to be applied on top of the previous serires
that ebales glsl 450 starting with:

[PATCH 1/5] ac/radeonsi: add tcs load outputs support

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 4/8] radeonsi/nir: add si_nir_load_sample_position() helper

2018-01-14 Thread Timothy Arceri
---
 src/gallium/drivers/radeonsi/si_shader.c | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index 8e91a45455..a04b01eb79 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1905,6 +1905,12 @@ static LLVMValueRef load_sample_position(struct 
si_shader_context *ctx, LLVMValu
return lp_build_gather_values(>gallivm, pos, 4);
 }
 
+static LLVMValueRef si_nir_load_sample_position(struct ac_shader_abi *abi, 
LLVMValueRef sample_id)
+{
+   struct si_shader_context *ctx = si_shader_context_from_abi(abi);
+   return load_sample_position(ctx, sample_id);
+}
+
 static LLVMValueRef si_load_tess_coord(struct ac_shader_abi *abi,
   LLVMTypeRef type,
   unsigned num_components)
-- 
2.14.3

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 6/8] ac/radeonsi: add lookup_interp_param and load_sample_position to the abi

2018-01-14 Thread Timothy Arceri
The will enable the interpolateAt builtins to work on the radeonsi
nir backend.
---
 src/amd/common/ac_nir_to_llvm.c  | 64 +---
 src/amd/common/ac_shader_abi.h   |  7 
 src/gallium/drivers/radeonsi/si_shader.c |  2 +
 3 files changed, 44 insertions(+), 29 deletions(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 7de208011a..94e1b68eee 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -3925,9 +3925,11 @@ static LLVMValueRef visit_var_atomic(struct 
nir_to_llvm_context *ctx,
return result;
 }
 
-static LLVMValueRef lookup_interp_param(struct nir_to_llvm_context *ctx,
+static LLVMValueRef lookup_interp_param(struct ac_shader_abi *abi,
enum glsl_interp_mode interp, unsigned 
location)
 {
+   struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
+
switch (interp) {
case INTERP_MODE_FLAT:
default:
@@ -3953,9 +3955,11 @@ static LLVMValueRef lookup_interp_param(struct 
nir_to_llvm_context *ctx,
return NULL;
 }
 
-static LLVMValueRef load_sample_position(struct nir_to_llvm_context *ctx,
+static LLVMValueRef load_sample_position(struct ac_shader_abi *abi,
 LLVMValueRef sample_id)
 {
+   struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi);
+
LLVMValueRef result;
LLVMValueRef ptr = ac_build_gep0(>ac, ctx->ring_offsets, 
LLVMConstInt(ctx->ac.i32, RING_PS_SAMPLE_POSITIONS, false));
 
@@ -3977,7 +3981,7 @@ static LLVMValueRef load_sample_pos(struct ac_nir_context 
*ctx)
return ac_build_gather_values(>ac, values, 2);
 }
 
-static LLVMValueRef visit_interp(struct nir_to_llvm_context *ctx,
+static LLVMValueRef visit_interp(struct ac_nir_context *ctx,
 const nir_intrinsic_instr *instr)
 {
LLVMValueRef result[4];
@@ -3995,33 +3999,33 @@ static LLVMValueRef visit_interp(struct 
nir_to_llvm_context *ctx,
case nir_intrinsic_interp_var_at_sample:
case nir_intrinsic_interp_var_at_offset:
location = INTERP_CENTER;
-   src0 = get_src(ctx->nir, instr->src[0]);
+   src0 = get_src(ctx, instr->src[0]);
break;
default:
break;
}
 
if (instr->intrinsic == nir_intrinsic_interp_var_at_offset) {
-   src_c0 = ac_to_float(>ac, 
LLVMBuildExtractElement(ctx->builder, src0, ctx->ac.i32_0, ""));
-   src_c1 = ac_to_float(>ac, 
LLVMBuildExtractElement(ctx->builder, src0, ctx->ac.i32_1, ""));
+   src_c0 = ac_to_float(>ac, 
LLVMBuildExtractElement(ctx->ac.builder, src0, ctx->ac.i32_0, ""));
+   src_c1 = ac_to_float(>ac, 
LLVMBuildExtractElement(ctx->ac.builder, src0, ctx->ac.i32_1, ""));
} else if (instr->intrinsic == nir_intrinsic_interp_var_at_sample) {
LLVMValueRef sample_position;
LLVMValueRef halfval = LLVMConstReal(ctx->ac.f32, 0.5f);
 
/* fetch sample ID */
-   sample_position = load_sample_position(ctx, src0);
+   sample_position = ctx->abi->load_sample_position(ctx->abi, 
src0);
 
-   src_c0 = LLVMBuildExtractElement(ctx->builder, sample_position, 
ctx->ac.i32_0, "");
-   src_c0 = LLVMBuildFSub(ctx->builder, src_c0, halfval, "");
-   src_c1 = LLVMBuildExtractElement(ctx->builder, sample_position, 
ctx->ac.i32_1, "");
-   src_c1 = LLVMBuildFSub(ctx->builder, src_c1, halfval, "");
+   src_c0 = LLVMBuildExtractElement(ctx->ac.builder, 
sample_position, ctx->ac.i32_0, "");
+   src_c0 = LLVMBuildFSub(ctx->ac.builder, src_c0, halfval, "");
+   src_c1 = LLVMBuildExtractElement(ctx->ac.builder, 
sample_position, ctx->ac.i32_1, "");
+   src_c1 = LLVMBuildFSub(ctx->ac.builder, src_c1, halfval, "");
}
-   interp_param = lookup_interp_param(ctx, 
instr->variables[0]->var->data.interpolation, location);
+   interp_param = ctx->abi->lookup_interp_param(ctx->abi, 
instr->variables[0]->var->data.interpolation, location);
attr_number = LLVMConstInt(ctx->ac.i32, input_index, false);
 
if (location == INTERP_CENTER) {
LLVMValueRef ij_out[2];
-   LLVMValueRef ddxy_out = emit_ddxy_interp(ctx->nir, 
interp_param);
+   LLVMValueRef ddxy_out = emit_ddxy_interp(ctx, interp_param);
 
/*
 * take the I then J parameters, and the DDX/Y for it, and
@@ -4034,24 +4038,24 @@ static LLVMValueRef visit_interp(struct 
nir_to_llvm_context *ctx,
for (unsigned i = 0; i < 2; i++) {
LLVMValueRef ix_ll = LLVMConstInt(ctx->ac.i32, i, 
false);
LLVMValueRef iy_ll = LLVMConstInt(ctx->ac.i32, i + 2, 
false);
-   LLVMValueRef ddx_el = 

[Mesa-dev] [PATCH 3/8] radeonsi/nir: add si_nir_lookup_interp_param() helper

2018-01-14 Thread Timothy Arceri
---
 src/amd/common/ac_nir_to_llvm.c   |  4 ---
 src/amd/common/ac_nir_to_llvm.h   |  5 
 src/amd/common/ac_shader_abi.h|  2 ++
 src/gallium/drivers/radeonsi/si_shader_internal.h |  4 +++
 src/gallium/drivers/radeonsi/si_shader_nir.c  | 36 +++
 5 files changed, 47 insertions(+), 4 deletions(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index e79fdd2ec2..3efb01137c 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -3926,10 +3926,6 @@ static LLVMValueRef visit_var_atomic(struct 
nir_to_llvm_context *ctx,
return result;
 }
 
-#define INTERP_CENTER 0
-#define INTERP_CENTROID 1
-#define INTERP_SAMPLE 2
-
 static LLVMValueRef lookup_interp_param(struct nir_to_llvm_context *ctx,
enum glsl_interp_mode interp, unsigned 
location)
 {
diff --git a/src/amd/common/ac_nir_to_llvm.h b/src/amd/common/ac_nir_to_llvm.h
index b3ad0a0985..99bc3ef8dd 100644
--- a/src/amd/common/ac_nir_to_llvm.h
+++ b/src/amd/common/ac_nir_to_llvm.h
@@ -115,6 +115,11 @@ enum ac_ud_index {
AC_UD_MAX_UD = AC_UD_TCS_MAX_UD,
 };
 
+/* Interpolation locations */
+#define INTERP_CENTER 0
+#define INTERP_CENTROID 1
+#define INTERP_SAMPLE 2
+
 /* descriptor index into scratch ring offsets */
 #define RING_SCRATCH 0
 #define RING_ESGS_VS 1
diff --git a/src/amd/common/ac_shader_abi.h b/src/amd/common/ac_shader_abi.h
index 3e9e7a4786..579fca9e7c 100644
--- a/src/amd/common/ac_shader_abi.h
+++ b/src/amd/common/ac_shader_abi.h
@@ -26,6 +26,8 @@
 
 #include 
 
+#include "compiler/shader_enums.h"
+
 enum ac_descriptor_type {
AC_DESC_IMAGE,
AC_DESC_FMASK,
diff --git a/src/gallium/drivers/radeonsi/si_shader_internal.h 
b/src/gallium/drivers/radeonsi/si_shader_internal.h
index 7306481ccd..8b0e73abbf 100644
--- a/src/gallium/drivers/radeonsi/si_shader_internal.h
+++ b/src/gallium/drivers/radeonsi/si_shader_internal.h
@@ -292,6 +292,10 @@ LLVMValueRef si_llvm_load_input_gs(struct ac_shader_abi 
*abi,
   LLVMTypeRef type,
   unsigned swizzle);
 
+LLVMValueRef si_nir_lookup_interp_param(struct ac_shader_abi *abi,
+   enum glsl_interp_mode interp,
+   unsigned location);
+
 void si_llvm_emit_store(struct lp_build_tgsi_context *bld_base,
const struct tgsi_full_instruction *inst,
const struct tgsi_opcode_info *info,
diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c 
b/src/gallium/drivers/radeonsi/si_shader_nir.c
index d2314e03ec..32ac985bc7 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -624,6 +624,42 @@ LLVMValueRef si_nir_load_input_gs(struct ac_shader_abi 
*abi,
return ac_build_varying_gather_values(>ac, value, num_components, 
component);
 }
 
+LLVMValueRef
+si_nir_lookup_interp_param(struct ac_shader_abi *abi,
+  enum glsl_interp_mode interp, unsigned location)
+{
+   struct si_shader_context *ctx = si_shader_context_from_abi(abi);
+   int interp_param_idx = -1;
+
+   switch (interp) {
+   case INTERP_MODE_FLAT:
+   return NULL;
+   case INTERP_MODE_SMOOTH:
+   case INTERP_MODE_NONE:
+   if (location == INTERP_CENTER)
+   interp_param_idx = SI_PARAM_PERSP_CENTER;
+   else if (location == INTERP_CENTROID)
+   interp_param_idx = SI_PARAM_PERSP_CENTROID;
+   else if (location == INTERP_SAMPLE)
+   interp_param_idx = SI_PARAM_PERSP_SAMPLE;
+   break;
+   case INTERP_MODE_NOPERSPECTIVE:
+   if (location == INTERP_CENTER)
+   interp_param_idx = SI_PARAM_LINEAR_CENTER;
+   else if (location == INTERP_CENTROID)
+   interp_param_idx = SI_PARAM_LINEAR_CENTROID;
+   else if (location == INTERP_SAMPLE)
+   interp_param_idx = SI_PARAM_LINEAR_SAMPLE;
+   break;
+   default:
+   assert(!"Unhandled interpolation mode.");
+   return NULL;
+   }
+
+   return interp_param_idx != -1 ?
+   LLVMGetParam(ctx->main_fn, interp_param_idx) : NULL;
+}
+
 static LLVMValueRef
 si_nir_load_sampler_desc(struct ac_shader_abi *abi,
 unsigned descriptor_set, unsigned base_index,
-- 
2.14.3

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 1/8] radeonsi/nir: add interpolate at intrinsics to scan_instruction()

2018-01-14 Thread Timothy Arceri
---
 src/gallium/drivers/radeonsi/si_shader_nir.c | 26 ++
 1 file changed, 26 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c 
b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 20b3beccc4..fcc857f838 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -124,6 +124,32 @@ static void scan_instruction(struct tgsi_shader_info *info,
case nir_intrinsic_ssbo_atomic_comp_swap:
info->writes_memory = true;
break;
+   case nir_intrinsic_interp_var_at_centroid:
+   case nir_intrinsic_interp_var_at_sample:
+   case nir_intrinsic_interp_var_at_offset: {
+   enum glsl_interp_mode interp =
+   intr->variables[0]->var->data.interpolation;
+   switch (interp) {
+   case INTERP_MODE_SMOOTH:
+   case INTERP_MODE_NONE:
+   if (intr->intrinsic == 
nir_intrinsic_interp_var_at_centroid)
+   info->uses_persp_centroid = true;
+   else
+   info->uses_persp_center = true;
+   break;
+   case INTERP_MODE_NOPERSPECTIVE:
+   if (intr->intrinsic == 
nir_intrinsic_interp_var_at_centroid)
+   info->uses_linear_centroid = true;
+   else
+   info->uses_linear_center = true;
+   break;
+   case INTERP_MODE_FLAT:
+   break;
+   default:
+   unreachable("Unsupported interpoation type");
+   }
+   break;
+   }
default:
break;
}
-- 
2.14.3

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 7/8] radeonsi/nir: add input support for arrays that have not been copied to temps and split

2018-01-14 Thread Timothy Arceri
We need this to be able to support the interpolateAt builtins in a
sane way. It also leads to the generation of more optimal code.
---
 src/gallium/drivers/radeonsi/si_shader_nir.c | 146 +++
 1 file changed, 81 insertions(+), 65 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c 
b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 32ac985bc7..a9e852c0bc 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -259,7 +259,14 @@ void si_nir_scan_shader(const struct nir_shader *nir,
unsigned num_inputs = 0;
nir_foreach_variable(variable, >inputs) {
unsigned semantic_name, semantic_index;
-   unsigned attrib_count = 
glsl_count_attribute_slots(variable->type,
+
+   const struct glsl_type *type = variable->type;
+   if (nir_is_per_vertex_io(variable, nir->info.stage)) {
+   assert(glsl_type_is_array(type));
+   type = glsl_get_array_element(type);
+   }
+
+   unsigned attrib_count = glsl_count_attribute_slots(type,
   
nir->info.stage == MESA_SHADER_VERTEX);
 
/* Vertex shader inputs don't have semantics. The state
@@ -274,9 +281,6 @@ void si_nir_scan_shader(const struct nir_shader *nir,
continue;
}
 
-   assert(nir->info.stage != MESA_SHADER_FRAGMENT ||
-  (attrib_count == 1 && "not implemented"));
-
/* Fragment shader position is a system value. */
if (nir->info.stage == MESA_SHADER_FRAGMENT &&
variable->data.location == VARYING_SLOT_POS) {
@@ -289,63 +293,71 @@ void si_nir_scan_shader(const struct nir_shader *nir,
}
 
i = variable->data.driver_location;
-   if (processed_inputs & ((uint64_t)1 << i))
-   continue;
 
-   processed_inputs |= ((uint64_t)1 << i);
-   num_inputs++;
+   for (unsigned j = 0; j < attrib_count; j++, i++) {
 
-   tgsi_get_gl_varying_semantic(variable->data.location, true,
-_name, _index);
+   if (processed_inputs & ((uint64_t)1 << i)) {
+//printf("continue %s %d\n", variable->name, variable->data.location + j);
+   continue;
+}
 
-   info->input_semantic_name[i] = semantic_name;
-   info->input_semantic_index[i] = semantic_index;
+   processed_inputs |= ((uint64_t)1 << i);
+   num_inputs++;
 
-   if (variable->data.sample)
-   info->input_interpolate_loc[i] = 
TGSI_INTERPOLATE_LOC_SAMPLE;
-   else if (variable->data.centroid)
-   info->input_interpolate_loc[i] = 
TGSI_INTERPOLATE_LOC_CENTROID;
-   else
-   info->input_interpolate_loc[i] = 
TGSI_INTERPOLATE_LOC_CENTER;
+//printf("in %s %d idx %d\n", variable->name, variable->data.location + j, i);
 
-   enum glsl_base_type base_type =
-   glsl_get_base_type(glsl_without_array(variable->type));
+   tgsi_get_gl_varying_semantic(variable->data.location + 
j, true,
+_name, 
_index);
 
-   switch (variable->data.interpolation) {
-   case INTERP_MODE_NONE:
-   if (glsl_base_type_is_integer(base_type)) {
-   info->input_interpolate[i] = 
TGSI_INTERPOLATE_CONSTANT;
-   break;
-   }
+   info->input_semantic_name[i] = semantic_name;
+   info->input_semantic_index[i] = semantic_index;
 
-   if (semantic_name == TGSI_SEMANTIC_COLOR) {
-   info->input_interpolate[i] = 
TGSI_INTERPOLATE_COLOR;
-   break;
-   }
-   /* fall-through */
+   if (variable->data.sample)
+   info->input_interpolate_loc[i] = 
TGSI_INTERPOLATE_LOC_SAMPLE;
+   else if (variable->data.centroid)
+   info->input_interpolate_loc[i] = 
TGSI_INTERPOLATE_LOC_CENTROID;
+   else
+   info->input_interpolate_loc[i] = 
TGSI_INTERPOLATE_LOC_CENTER;
 
-   case INTERP_MODE_SMOOTH:
-   assert(!glsl_base_type_is_integer(base_type));
+   enum glsl_base_type base_type =
+   
glsl_get_base_type(glsl_without_array(variable->type));
 
-   info->input_interpolate[i] = 
TGSI_INTERPOLATE_PERSPECTIVE;
-   

[Mesa-dev] [PATCH 5/8] radeonsi/nir: add prim_mask to the abi

2018-01-14 Thread Timothy Arceri
---
 src/amd/common/ac_nir_to_llvm.c  | 11 +--
 src/amd/common/ac_shader_abi.h   |  1 +
 src/gallium/drivers/radeonsi/si_shader.c |  7 ---
 3 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 3efb01137c..7de208011a 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -126,7 +126,6 @@ struct nir_to_llvm_context {
LLVMValueRef hs_ring_tess_offchip;
LLVMValueRef hs_ring_tess_factor;
 
-   LLVMValueRef prim_mask;
LLVMValueRef sample_pos_offset;
LLVMValueRef persp_sample, persp_center, persp_centroid;
LLVMValueRef linear_sample, linear_center, linear_centroid;
@@ -1006,7 +1005,7 @@ static void create_function(struct nir_to_llvm_context 
*ctx,
add_arg(, ARG_SGPR, ctx->ac.i32,
>sample_pos_offset);
 
-   add_arg(, ARG_SGPR, ctx->ac.i32, >prim_mask);
+   add_arg(, ARG_SGPR, ctx->ac.i32, >abi.prim_mask);
add_arg(, ARG_VGPR, ctx->ac.v2i32, >persp_sample);
add_arg(, ARG_VGPR, ctx->ac.v2i32, >persp_center);
add_arg(, ARG_VGPR, ctx->ac.v2i32, >persp_centroid);
@@ -4072,12 +4071,12 @@ static LLVMValueRef visit_interp(struct 
nir_to_llvm_context *ctx,
 
result[chan] = ac_build_fs_interp(>ac,
  llvm_chan, 
attr_number,
- ctx->prim_mask, i, j);
+ ctx->abi.prim_mask, 
i, j);
} else {
result[chan] = ac_build_fs_interp_mov(>ac,
  
LLVMConstInt(ctx->ac.i32, 2, false),
  llvm_chan, 
attr_number,
- ctx->prim_mask);
+ 
ctx->abi.prim_mask);
}
}
return ac_build_varying_gather_values(>ac, result, 
instr->num_components,
@@ -5329,7 +5328,7 @@ prepare_interp_optimize(struct nir_to_llvm_context *ctx,
}
 
if (uses_center && uses_centroid) {
-   LLVMValueRef sel = LLVMBuildICmp(ctx->builder, LLVMIntSLT, 
ctx->prim_mask, ctx->ac.i32_0, "");
+   LLVMValueRef sel = LLVMBuildICmp(ctx->builder, LLVMIntSLT, 
ctx->abi.prim_mask, ctx->ac.i32_0, "");
ctx->persp_centroid = LLVMBuildSelect(ctx->builder, sel, 
ctx->persp_center, ctx->persp_centroid, "");
ctx->linear_centroid = LLVMBuildSelect(ctx->builder, sel, 
ctx->linear_center, ctx->linear_centroid, "");
}
@@ -5360,7 +5359,7 @@ handle_fs_inputs(struct nir_to_llvm_context *ctx,
if (i >= VARYING_SLOT_VAR0 || i == VARYING_SLOT_PNTC ||
i == VARYING_SLOT_PRIMITIVE_ID || i == VARYING_SLOT_LAYER) {
interp_param = *inputs;
-   interp_fs_input(ctx, index, interp_param, 
ctx->prim_mask,
+   interp_fs_input(ctx, index, interp_param, 
ctx->abi.prim_mask,
inputs);
 
if (!interp_param)
diff --git a/src/amd/common/ac_shader_abi.h b/src/amd/common/ac_shader_abi.h
index 579fca9e7c..38727478d3 100644
--- a/src/amd/common/ac_shader_abi.h
+++ b/src/amd/common/ac_shader_abi.h
@@ -53,6 +53,7 @@ struct ac_shader_abi {
LLVMValueRef front_face;
LLVMValueRef ancillary;
LLVMValueRef sample_coverage;
+   LLVMValueRef prim_mask;
 
/* For VS and PS: pre-loaded shader inputs.
 *
diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index a04b01eb79..26599201ab 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1853,7 +1853,7 @@ void si_llvm_load_input_fs(
interp_fs_input(ctx, input_index, semantic_name,
semantic_index, 0, /* this param is unused */
shader->selector->info.colors_read, interp_param,
-   LLVMGetParam(main_fn, SI_PARAM_PRIM_MASK),
+   ctx->abi.prim_mask,
LLVMGetParam(main_fn, SI_PARAM_FRONT_FACE),
[0]);
 }
@@ -4092,7 +4092,7 @@ static void build_interp_intrinsic(const struct 
lp_build_tgsi_action *action,
int input_base, input_array_size;
int chan;
int i;
-   LLVMValueRef prim_mask = LLVMGetParam(ctx->main_fn, SI_PARAM_PRIM_MASK);
+   LLVMValueRef prim_mask = ctx->abi.prim_mask;
LLVMValueRef array_idx;
int interp_param_idx;
unsigned interp;
@@ -4889,7 +4889,8 @@ static void create_function(struct si_shader_context *ctx)
  

[Mesa-dev] [PATCH 8/8] st/glsl_to_nir: disable io lowering and forced indirect array splitting in fs

2018-01-14 Thread Timothy Arceri
We need this to be able to support the interpolateAt builtins in a
sane way. It also leads to the generation of more optimal code.

The lowering and splitting is made conditional on glsl 400 because
vc4 and freedreno both expect these passes to be enabled and niether
support glsl 400 so don't need to deal with the interpolateAt builtins.

We leave the other stages for now as to avoid regressions.
---
 src/mesa/state_tracker/st_glsl_to_nir.cpp | 13 +++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp 
b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index 6e3a1548f4..bc55c5b7db 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -461,7 +461,9 @@ st_nir_get_mesa_program(struct gl_context *ctx,
 struct gl_linked_shader *shader)
 {
struct st_context *st = st_context(ctx);
+   struct pipe_screen *screen = st->pipe->screen;
struct gl_program *prog;
+   unsigned glsl_version = screen->get_param(screen, 
PIPE_CAP_GLSL_FEATURE_LEVEL);
 
validate_ir_tree(shader->ir);
 
@@ -491,11 +493,14 @@ st_nir_get_mesa_program(struct gl_context *ctx,
prog->nir = nir;
 
if (nir->info.stage != MESA_SHADER_TESS_CTRL &&
-   nir->info.stage != MESA_SHADER_TESS_EVAL) {
+   nir->info.stage != MESA_SHADER_TESS_EVAL &&
+   (nir->info.stage != MESA_SHADER_FRAGMENT ||
+(glsl_version < 400 && nir->info.stage == MESA_SHADER_FRAGMENT))) {
   NIR_PASS_V(nir, nir_lower_io_to_temporaries,
  nir_shader_get_entrypoint(nir),
  true, true);
}
+
NIR_PASS_V(nir, nir_lower_global_vars_to_local);
NIR_PASS_V(nir, nir_split_var_copies);
NIR_PASS_V(nir, nir_lower_var_copies);
@@ -665,12 +670,16 @@ st_finalize_nir(struct st_context *st, struct gl_program 
*prog,
 struct gl_shader_program *shader_program, nir_shader *nir)
 {
struct pipe_screen *screen = st->pipe->screen;
+   unsigned glsl_version = screen->get_param(screen, 
PIPE_CAP_GLSL_FEATURE_LEVEL);
 
NIR_PASS_V(nir, nir_split_var_copies);
NIR_PASS_V(nir, nir_lower_var_copies);
if (nir->info.stage != MESA_SHADER_TESS_CTRL &&
-   nir->info.stage != MESA_SHADER_TESS_EVAL)
+   nir->info.stage != MESA_SHADER_TESS_EVAL &&
+   (nir->info.stage != MESA_SHADER_FRAGMENT ||
+(glsl_version < 400 && nir->info.stage == MESA_SHADER_FRAGMENT))) {
   NIR_PASS_V(nir, nir_lower_io_arrays_to_elements_no_indirects);
+   }
 
if (nir->info.stage == MESA_SHADER_VERTEX) {
   /* Needs special handling so drvloc matches the vbo state: */
-- 
2.14.3

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 2/8] radeonsi/nir: move the interpolation qualifier scanning

2018-01-14 Thread Timothy Arceri
We need to collect this when scanning over the instruction rather
than when scanning over the inputs otherwise we might get confliting
values for inputs that are use by the interpolateAt* builtins.
---
 src/gallium/drivers/radeonsi/si_shader_nir.c | 52 +++-
 1 file changed, 36 insertions(+), 16 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c 
b/src/gallium/drivers/radeonsi/si_shader_nir.c
index fcc857f838..d2314e03ec 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -124,6 +124,40 @@ static void scan_instruction(struct tgsi_shader_info *info,
case nir_intrinsic_ssbo_atomic_comp_swap:
info->writes_memory = true;
break;
+   case nir_intrinsic_load_var: {
+   nir_variable *var = intr->variables[0]->var;
+   nir_variable_mode mode = var->data.mode;
+   enum glsl_base_type base_type =
+   
glsl_get_base_type(glsl_without_array(var->type));
+
+   if (mode == nir_var_shader_in) {
+   switch (var->data.interpolation) {
+   case INTERP_MODE_NONE:
+   if 
(glsl_base_type_is_integer(base_type))
+   break;
+
+   /* fall-through */
+   case INTERP_MODE_SMOOTH:
+   if (var->data.sample)
+   info->uses_persp_sample = true;
+   else if (var->data.centroid)
+   info->uses_persp_centroid = 
true;
+   else
+   info->uses_persp_center = true;
+   break;
+
+   case INTERP_MODE_NOPERSPECTIVE:
+   if (var->data.sample)
+   info->uses_linear_sample = true;
+   else if (var->data.centroid)
+   info->uses_linear_centroid = 
true;
+   else
+   info->uses_linear_center = true;
+   break;
+   }
+   }
+   break;
+   }
case nir_intrinsic_interp_var_at_centroid:
case nir_intrinsic_interp_var_at_sample:
case nir_intrinsic_interp_var_at_offset: {
@@ -286,34 +320,20 @@ void si_nir_scan_shader(const struct nir_shader *nir,
 
if (semantic_name == TGSI_SEMANTIC_COLOR) {
info->input_interpolate[i] = 
TGSI_INTERPOLATE_COLOR;
-   goto persp_locations;
+   break;
}
/* fall-through */
+
case INTERP_MODE_SMOOTH:
assert(!glsl_base_type_is_integer(base_type));
 
info->input_interpolate[i] = 
TGSI_INTERPOLATE_PERSPECTIVE;
-
-   persp_locations:
-   if (variable->data.sample)
-   info->uses_persp_sample = true;
-   else if (variable->data.centroid)
-   info->uses_persp_centroid = true;
-   else
-   info->uses_persp_center = true;
break;
 
case INTERP_MODE_NOPERSPECTIVE:
assert(!glsl_base_type_is_integer(base_type));
 
info->input_interpolate[i] = TGSI_INTERPOLATE_LINEAR;
-
-   if (variable->data.sample)
-   info->uses_linear_sample = true;
-   else if (variable->data.centroid)
-   info->uses_linear_centroid = true;
-   else
-   info->uses_linear_center = true;
break;
 
case INTERP_MODE_FLAT:
-- 
2.14.3

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 104490] [radeonsi/290x] Dota2 fails to start (can't create opengl context)

2018-01-14 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=104490

Christian Inci  changed:

   What|Removed |Added

 CC||chris.bugsfd@broke-the-inte
   ||r.net

--- Comment #10 from Christian Inci  ---
*** Bug 104627 has been marked as a duplicate of this bug. ***

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] radeon: remove unneeded semicolons

2018-01-14 Thread Grazvydas Ignotas
Trivial. Found by Coccinelle.
---
 src/gallium/drivers/radeon/radeon_vcn_dec.c | 6 +++---
 src/mesa/drivers/dri/radeon/radeon_debug.c  | 2 +-
 src/mesa/drivers/dri/radeon/radeon_state_init.c | 2 +-
 src/mesa/drivers/dri/radeon/radeon_swtcl.c  | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_vcn_dec.c 
b/src/gallium/drivers/radeon/radeon_vcn_dec.c
index 8be9538..5999b92 100644
--- a/src/gallium/drivers/radeon/radeon_vcn_dec.c
+++ b/src/gallium/drivers/radeon/radeon_vcn_dec.c
@@ -633,14 +633,14 @@ static struct pb_buffer *rvcn_dec_message_decode(struct 
radeon_decoder *dec,
 
index->offset = offset_codec;
index->size = sizeof(rvcn_dec_message_avc_t);
index->filled = 0;
 
-   decode->stream_type = dec->stream_type;;
+   decode->stream_type = dec->stream_type;
decode->decode_flags = 0x1;
-   decode->width_in_samples = dec->base.width;;
-   decode->height_in_samples = dec->base.height;;
+   decode->width_in_samples = dec->base.width;
+   decode->height_in_samples = dec->base.height;
 
decode->bsd_size = align(dec->bs_size, 128);
decode->dpb_size = dec->dpb.res->buf->size;
decode->dt_size =
((struct r600_resource *)((struct vl_video_buffer 
*)target)->resources[0])->buf->size +
diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.c 
b/src/mesa/drivers/dri/radeon/radeon_debug.c
index 383a5df..91f86a9 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.c
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.c
@@ -73,11 +73,11 @@ void _radeon_debug_add_indent(void)
const size_t length = sizeof(radeon->debug.indent)
/ sizeof(radeon->debug.indent[0]);
if (radeon->debug.indent_depth < length - 1) {
radeon->debug.indent[radeon->debug.indent_depth] = '\t';
++radeon->debug.indent_depth;
-   };
+   }
 }
 
 void _radeon_debug_remove_indent(void)
 {
GET_CURRENT_CONTEXT(ctx);
diff --git a/src/mesa/drivers/dri/radeon/radeon_state_init.c 
b/src/mesa/drivers/dri/radeon/radeon_state_init.c
index 99c535a..b847be5 100644
--- a/src/mesa/drivers/dri/radeon/radeon_state_init.c
+++ b/src/mesa/drivers/dri/radeon/radeon_state_init.c
@@ -438,11 +438,11 @@ static void cube_emit_cs(struct gl_context *ctx, struct 
radeon_state_atom *atom)
switch(i) {
case 1: base_reg = RADEON_PP_CUBIC_OFFSET_T1_0; break;
case 2: base_reg = RADEON_PP_CUBIC_OFFSET_T2_0; break;
default:
case 0: base_reg = RADEON_PP_CUBIC_OFFSET_T0_0; break;
-   };
+   }
BEGIN_BATCH(dwords);
OUT_BATCH_TABLE(atom->cmd, 2);
lvl = >mt->levels[0];
for (j = 0; j < 5; j++) {
OUT_BATCH(CP_PACKET0(base_reg + (4 * j), 0));
diff --git a/src/mesa/drivers/dri/radeon/radeon_swtcl.c 
b/src/mesa/drivers/dri/radeon/radeon_swtcl.c
index d5365cd..860bba6 100644
--- a/src/mesa/drivers/dri/radeon/radeon_swtcl.c
+++ b/src/mesa/drivers/dri/radeon/radeon_swtcl.c
@@ -207,11 +207,11 @@ static void radeonSetVertexFormat( struct gl_context *ctx 
)
 radeon_cp_vc_frmts[i][1] );
   }
   break;
default:
   continue;
-   };
+   }
 }
   }
}
 
if (rmesa->radeon.tnl_index_bitset != index_bitset ||
-- 
2.7.4

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] mesa: remove unneeded semicolons

2018-01-14 Thread Grazvydas Ignotas
Trivial. Found by Coccinelle.
---
 src/gbm/backends/dri/gbm_dri.c   | 2 +-
 src/mesa/main/dlist.c| 2 +-
 src/mesa/main/program_resource.c | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index b2121cb..fd5fb4b 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -438,11 +438,11 @@ dri_screen_create_dri2(struct gbm_dri_device *dri, char 
*driver_name)
 
ret = dri_load_driver(dri);
if (ret) {
   fprintf(stderr, "failed to load driver: %s\n", dri->driver_name);
   return ret;
-   };
+   }
 
dri->loader_extensions = gbm_dri_screen_extensions;
 
if (dri->dri2 == NULL)
   return -1;
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c
index b7d1406..a6b212e 100644
--- a/src/mesa/main/dlist.c
+++ b/src/mesa/main/dlist.c
@@ -1910,11 +1910,11 @@ save_CallLists(GLsizei num, GLenum type, const GLvoid * 
lists)
n = alloc_instruction(ctx, OPCODE_CALL_LISTS, 2 + POINTER_DWORDS);
if (n) {
   n[1].i = num;
   n[2].e = type;
   save_pointer([3], lists_copy);
-   };
+   }
 
/* After this, we don't know what state we're in.  Invalidate all
 * cached information previously gathered:
 */
invalidate_saved_current_state( ctx );
diff --git a/src/mesa/main/program_resource.c b/src/mesa/main/program_resource.c
index 4eacdfb..5fa5d75 100644
--- a/src/mesa/main/program_resource.c
+++ b/src/mesa/main/program_resource.c
@@ -198,11 +198,11 @@ _mesa_GetProgramInterfaceiv(GLuint program, GLenum 
programInterface,
   default:
 _mesa_error(ctx, GL_INVALID_OPERATION,
 "glGetProgramInterfaceiv(%s pname %s)",
 _mesa_enum_to_string(programInterface),
 _mesa_enum_to_string(pname));
-  };
+  }
   break;
case GL_MAX_NUM_COMPATIBLE_SUBROUTINES:
   switch (programInterface) {
   case GL_VERTEX_SUBROUTINE_UNIFORM:
   case GL_FRAGMENT_SUBROUTINE_UNIFORM:
-- 
2.7.4

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] osmesa: don't check SmoothFlag twice

2018-01-14 Thread Grazvydas Ignotas
Trivial. Found by Coccinelle.
---
 src/mesa/drivers/osmesa/osmesa.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c
index 1df3da4..e0f87b8 100644
--- a/src/mesa/drivers/osmesa/osmesa.c
+++ b/src/mesa/drivers/osmesa/osmesa.c
@@ -212,11 +212,10 @@ osmesa_choose_line_function( struct gl_context *ctx )
*/
   return NULL;
}
 
if (ctx->RenderMode != GL_RENDER ||
-   ctx->Line.SmoothFlag ||
ctx->Texture._MaxEnabledTexImageUnit == -1 ||
ctx->Light.ShadeModel != GL_FLAT ||
ctx->Line.Width != 1.0F ||
ctx->Line.StippleFlag ||
ctx->Line.SmoothFlag) {
-- 
2.7.4

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 104626] broadcom/vc5: double compare

2018-01-14 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=104626

--- Comment #1 from Grazvydas Ignotas  ---
also in src/gallium/drivers/vc5/vc5_emit.c:

+int min_img_filter = psampler->min_img_filter;
+int min_mip_filter = psampler->min_mip_filter;
+int mag_img_filter = psampler->mag_img_filter;
+
+if (vc5_get_tex_return_size(psview->format) == 32) {
+min_mip_filter = PIPE_TEX_MIPFILTER_NEAREST;
+mag_img_filter = PIPE_TEX_FILTER_NEAREST;
+mag_img_filter = PIPE_TEX_FILTER_NEAREST;
+}

did you mean min_img_filter instead of setting mag_img_filter twice?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 104626] broadcom/vc5: double compare

2018-01-14 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=104626

Bug ID: 104626
   Summary: broadcom/vc5: double compare
   Product: Mesa
   Version: git
  Hardware: Other
OS: All
Status: NEW
  Severity: normal
  Priority: medium
 Component: Other
  Assignee: e...@anholt.net
  Reporter: nota...@gmail.com
QA Contact: mesa-dev@lists.freedesktop.org

2e3c7beb1e60a47e1f5dd12d28ac3f328555a543 adds:

+if (surf->format == PIPE_FORMAT_B4G4R4A4_UNORM ||
+surf->format == PIPE_FORMAT_B4G4R4A4_UNORM) {

perhaps something else was intended?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 104625] semicolon after if

2018-01-14 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=104625

Bug ID: 104625
   Summary: semicolon after if
   Product: Mesa
   Version: git
  Hardware: Other
OS: All
Status: NEW
  Severity: normal
  Priority: medium
 Component: Other
  Assignee: thellst...@vmware.com
  Reporter: nota...@gmail.com
QA Contact: mesa-dev@lists.freedesktop.org

9d81ab73768db6647c116f4710f7a93d8d41e3b1 adds this:

+  if (blit_info->src.resource->format != blit_info->src.format ||
+  blit_info->dst.resource->format != blit_info->dst.format ||
+  !util_is_format_compatible(src_desc, dst_desc));

which looks wrong and does nothing if I read it right. Perhaps something else
was intended?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] glx: fix non-dri build

2018-01-14 Thread Dylan Baker
I don't know enough about glx to know if this is correct, but you'll need to 
add the c files to the meson.build as well

On January 13, 2018 3:36:30 AM PST, Samuel Thibault 
 wrote:
>glXGetDriverConfig parameters do not provide a context to dynamically
>check for the presence of the function, so the dispatcher directly
>calls
>glXGetDriverConfig, but in non-dri builds dri_glx.c didn't provide
>glXGetDriverConfig.
>
>This change makes it provide a NULL-returning stub in non-dri builds.
>
>Fixes: 84f764a7591 "glxglvnddispatch: Add missing dispatch for
>GetDriverConfig"
>
>---
>Compiling dri_glx.c in non-dri builds might be frowned upon. I'll be
>happy to move the glXGetDriverConfig to another file if somebody tells
>me which file would be the proper place.
>---
> src/glx/Makefile.am |  2 +-
> src/glx/dri_glx.c   | 11 ++-
> src/glx/glxclient.h |  4 ++--
> 3 files changed, 13 insertions(+), 4 deletions(-)
>
>diff --git a/src/glx/Makefile.am b/src/glx/Makefile.am
>index 5448a0907..0ae403403 100644
>--- a/src/glx/Makefile.am
>+++ b/src/glx/Makefile.am
>@@ -59,6 +59,7 @@ libglx_la_SOURCES = \
>   clientinfo.c \
>   compsize.c \
>   create_context.c \
>+  dri_glx.c \
>   eval.c \
>   glxclient.h \
>   glxcmds.c \
>@@ -123,7 +124,6 @@ libglx_la_SOURCES += \
>   dri2_glx.c \
>   dri2.h \
>   dri2_priv.h \
>-  dri_glx.c \
>   dri_sarea.h \
>   XF86dri.c \
>   xf86dri.h \
>diff --git a/src/glx/dri_glx.c b/src/glx/dri_glx.c
>index 5c4346cec..893cb4acd 100644
>--- a/src/glx/dri_glx.c
>+++ b/src/glx/dri_glx.c
>@@ -32,12 +32,13 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
>SOFTWARE.
>  *
>  */
> 
>+#include "glxclient.h"
>+
> #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
> 
> #include 
> #include 
> #include 
>-#include "glxclient.h"
> #include "xf86dri.h"
> #include "dri2.h"
> #include "dri_sarea.h"
>@@ -1020,4 +1021,12 @@ driCreateDisplay(Display * dpy)
>return >base;
> }
> 
>+#else /* GLX_DIRECT_RENDERING */
>+
>+_GLX_PUBLIC const char *
>+glXGetDriverConfig(const char *driverName)
>+{
>+  return NULL;
>+}
>+
> #endif /* GLX_DIRECT_RENDERING */
>diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
>index f3a36cf10..a1925a5fe 100644
>--- a/src/glx/glxclient.h
>+++ b/src/glx/glxclient.h
>@@ -169,10 +169,10 @@ extern unsigned dri2GetSwapEventType(Display
>*dpy, XID drawable);
> */
> extern const char *glXGetScreenDriver(Display * dpy, int scrNum);
> 
>-extern const char *glXGetDriverConfig(const char *driverName);
>-
> #endif
> 
>+extern const char *glXGetDriverConfig(const char *driverName);
>+
>//
> 
> #define __GL_CLIENT_ATTRIB_STACK_DEPTH 16
>-- 
>2.15.1
>
>___
>mesa-dev mailing list
>mesa-dev@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] r600/shader: Initialize max_driver_temp_used correctly for the first time

2018-01-14 Thread Gert Wollny
Without this initialization the temp registers used in tgsi_declaration
may used random indices, and this may result in failing translation from TGSI
with an error message "GPR limit exceeded", because the random index is greater
then the allowed limit implying that the shader uses more temporary registers 
then
available.

Signed-off-by: Gert Wollny 
---
 src/gallium/drivers/r600/r600_shader.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index d60a94cb4c..4b1e8c768e 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -3335,6 +3335,7 @@ static int r600_shader_from_tgsi(struct r600_context 
*rctx,
 
ctx.nliterals = 0;
ctx.literals = NULL;
+   ctx.max_driver_temp_used = 0;
 
shader->fs_write_all = 
ctx.info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS] &&
   ctx.info.colors_written == 1;
-- 
2.13.6

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 104490] [radeonsi/290x] Dota2 fails to start (can't create opengl context)

2018-01-14 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=104490

--- Comment #9 from Mike Lothian  ---
Has there been any progress on this bug?

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] u_thread: Use pthread_setname_np on linux only

2018-01-14 Thread Samuel Thibault
pthread_setname_np was added in glibc 2.12 for the Linux port only, other
ports do not necessarily have it.
---
 src/util/u_thread.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/util/u_thread.h b/src/util/u_thread.h
index 26cc0b093..8c6e0bdc5 100644
--- a/src/util/u_thread.h
+++ b/src/util/u_thread.h
@@ -62,7 +62,8 @@ static inline void u_thread_setname( const char *name )
 {
 #if defined(HAVE_PTHREAD)
 #  if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && 
defined(__GLIBC_MINOR__) && \
-  (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12))
+  (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) && \
+  defined(__linux__)
pthread_setname_np(pthread_self(), name);
 #  endif
 #endif
-- 
2.15.1

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] glx: fix non-dri build

2018-01-14 Thread Samuel Thibault
glXGetDriverConfig parameters do not provide a context to dynamically
check for the presence of the function, so the dispatcher directly calls
glXGetDriverConfig, but in non-dri builds dri_glx.c didn't provide
glXGetDriverConfig.

This change makes it provide a NULL-returning stub in non-dri builds.

Fixes: 84f764a7591 "glxglvnddispatch: Add missing dispatch for GetDriverConfig"

---
Compiling dri_glx.c in non-dri builds might be frowned upon. I'll be
happy to move the glXGetDriverConfig to another file if somebody tells
me which file would be the proper place.
---
 src/glx/Makefile.am |  2 +-
 src/glx/dri_glx.c   | 11 ++-
 src/glx/glxclient.h |  4 ++--
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/glx/Makefile.am b/src/glx/Makefile.am
index 5448a0907..0ae403403 100644
--- a/src/glx/Makefile.am
+++ b/src/glx/Makefile.am
@@ -59,6 +59,7 @@ libglx_la_SOURCES = \
clientinfo.c \
compsize.c \
create_context.c \
+   dri_glx.c \
eval.c \
glxclient.h \
glxcmds.c \
@@ -123,7 +124,6 @@ libglx_la_SOURCES += \
dri2_glx.c \
dri2.h \
dri2_priv.h \
-   dri_glx.c \
dri_sarea.h \
XF86dri.c \
xf86dri.h \
diff --git a/src/glx/dri_glx.c b/src/glx/dri_glx.c
index 5c4346cec..893cb4acd 100644
--- a/src/glx/dri_glx.c
+++ b/src/glx/dri_glx.c
@@ -32,12 +32,13 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  */
 
+#include "glxclient.h"
+
 #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 
 #include 
 #include 
 #include 
-#include "glxclient.h"
 #include "xf86dri.h"
 #include "dri2.h"
 #include "dri_sarea.h"
@@ -1020,4 +1021,12 @@ driCreateDisplay(Display * dpy)
return >base;
 }
 
+#else /* GLX_DIRECT_RENDERING */
+
+_GLX_PUBLIC const char *
+glXGetDriverConfig(const char *driverName)
+{
+  return NULL;
+}
+
 #endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
index f3a36cf10..a1925a5fe 100644
--- a/src/glx/glxclient.h
+++ b/src/glx/glxclient.h
@@ -169,10 +169,10 @@ extern unsigned dri2GetSwapEventType(Display *dpy, XID 
drawable);
 */
 extern const char *glXGetScreenDriver(Display * dpy, int scrNum);
 
-extern const char *glXGetDriverConfig(const char *driverName);
-
 #endif
 
+extern const char *glXGetDriverConfig(const char *driverName);
+
 //
 
 #define __GL_CLIENT_ATTRIB_STACK_DEPTH 16
-- 
2.15.1

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev