summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2021-07-22 10:02:57 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2021-07-22 10:02:57 +0000
commitc409d296d1991bdd3611ee8f60676e3e3708e134 (patch)
tree3019350112c17e95e2ff2491580da5e81b7707be
parent0e555fbab33ea36ab33d34961bad0585ab2feb43 (diff)
Import Mesa 21.1.5
-rw-r--r--lib/mesa/src/compiler/nir/tests/lower_returns_tests.cpp6
-rw-r--r--lib/mesa/src/compiler/nir/tests/ssa_def_bits_used_tests.cpp3
-rw-r--r--lib/mesa/src/compiler/spirv/nir_load_libclc.c62
-rw-r--r--lib/mesa/src/compiler/spirv/nir_lower_libclc.c4
-rw-r--r--lib/mesa/src/freedreno/decode/redump.h78
5 files changed, 41 insertions, 112 deletions
diff --git a/lib/mesa/src/compiler/nir/tests/lower_returns_tests.cpp b/lib/mesa/src/compiler/nir/tests/lower_returns_tests.cpp
index 83b9fcd23..d34f26be5 100644
--- a/lib/mesa/src/compiler/nir/tests/lower_returns_tests.cpp
+++ b/lib/mesa/src/compiler/nir/tests/lower_returns_tests.cpp
@@ -56,7 +56,11 @@ nir_phi_instr *create_one_source_phi(nir_shader *shader, nir_block *pred,
{
nir_phi_instr *phi = nir_phi_instr_create(shader);
- nir_phi_instr_add_src(phi, pred, nir_src_for_ssa(def));
+ nir_phi_src *phi_src;
+ phi_src = ralloc(phi, nir_phi_src);
+ phi_src->pred = pred;
+ phi_src->src = nir_src_for_ssa(def);
+ exec_list_push_tail(&phi->srcs, &phi_src->node);
nir_ssa_dest_init(&phi->instr, &phi->dest,
def->num_components, def->bit_size, NULL);
diff --git a/lib/mesa/src/compiler/nir/tests/ssa_def_bits_used_tests.cpp b/lib/mesa/src/compiler/nir/tests/ssa_def_bits_used_tests.cpp
index 4c9aa2950..b38eef0d2 100644
--- a/lib/mesa/src/compiler/nir/tests/ssa_def_bits_used_tests.cpp
+++ b/lib/mesa/src/compiler/nir/tests/ssa_def_bits_used_tests.cpp
@@ -50,7 +50,8 @@ protected:
static bool
is_used_once(const nir_ssa_def *def)
{
- return list_is_singular(&def->uses);
+ return list_is_singular(&def->uses) &&
+ list_is_empty(&def->if_uses);
}
nir_alu_instr *
diff --git a/lib/mesa/src/compiler/spirv/nir_load_libclc.c b/lib/mesa/src/compiler/spirv/nir_load_libclc.c
index 567fb2669..18d46147b 100644
--- a/lib/mesa/src/compiler/spirv/nir_load_libclc.c
+++ b/lib/mesa/src/compiler/spirv/nir_load_libclc.c
@@ -239,66 +239,6 @@ nir_can_find_libclc(unsigned ptr_bit_size)
}
}
-/** Adds generic pointer variants of libclc functions
- *
- * Libclc currently doesn't contain generic variants for a bunch of functions
- * like `frexp` but the OpenCL spec with generic pointers requires them. We
- * really should fix libclc but, in the mean time, we can easily duplicate
- * every function that works on global memory and make it also work on generic
- * memory.
- */
-static void
-libclc_add_generic_variants(nir_shader *shader)
-{
- nir_foreach_function(func, shader) {
- /* These don't need generic variants */
- if (strstr(func->name, "async_work_group_strided_copy"))
- continue;
-
- char *U3AS1 = strstr(func->name, "U3AS1");
- if (U3AS1 == NULL)
- continue;
-
- ptrdiff_t offset_1 = U3AS1 - func->name + 4;
- assert(offset_1 < strlen(func->name) && func->name[offset_1] == '1');
-
- char *generic_name = ralloc_strdup(shader, func->name);
- assert(generic_name[offset_1] == '1');
- generic_name[offset_1] = '4';
-
- if (nir_shader_get_function_for_name(shader, generic_name))
- continue;
-
- nir_function *gfunc = nir_function_create(shader, generic_name);
- gfunc->num_params = func->num_params;
- gfunc->params = ralloc_array(shader, nir_parameter, gfunc->num_params);
- for (unsigned i = 0; i < gfunc->num_params; i++)
- gfunc->params[i] = func->params[i];
-
- gfunc->impl = nir_function_impl_clone(shader, func->impl);
- gfunc->impl->function = gfunc;
-
- /* Rewrite any global pointers to generic */
- nir_foreach_block(block, gfunc->impl) {
- nir_foreach_instr(instr, block) {
- if (instr->type != nir_instr_type_deref)
- continue;
-
- nir_deref_instr *deref = nir_instr_as_deref(instr);
- if (!nir_deref_mode_may_be(deref, nir_var_mem_global))
- continue;
-
- assert(deref->type != nir_deref_type_var);
- assert(nir_deref_mode_is(deref, nir_var_mem_global));
-
- deref->modes = nir_var_mem_generic;
- }
- }
-
- nir_metadata_preserve(gfunc->impl, nir_metadata_none);
- }
-}
-
nir_shader *
nir_load_libclc_shader(unsigned ptr_bit_size,
struct disk_cache *disk_cache,
@@ -353,8 +293,6 @@ nir_load_libclc_shader(unsigned ptr_bit_size,
NIR_PASS_V(nir, nir_lower_variable_initializers, nir_var_function_temp);
NIR_PASS_V(nir, nir_lower_returns);
- NIR_PASS_V(nir, libclc_add_generic_variants);
-
/* TODO: One day, we may want to run some optimizations on the libclc
* shader once and cache them to save time in each shader call.
*/
diff --git a/lib/mesa/src/compiler/spirv/nir_lower_libclc.c b/lib/mesa/src/compiler/spirv/nir_lower_libclc.c
index b3e121f3a..ebaa54c1a 100644
--- a/lib/mesa/src/compiler/spirv/nir_lower_libclc.c
+++ b/lib/mesa/src/compiler/spirv/nir_lower_libclc.c
@@ -38,10 +38,6 @@ lower_clc_call_instr(nir_instr *instr, nir_builder *b,
{
nir_call_instr *call = nir_instr_as_call(instr);
nir_function *func = NULL;
-
- if (!call->callee->name)
- return false;
-
nir_foreach_function(function, clc_shader) {
if (strcmp(function->name, call->callee->name) == 0) {
func = function;
diff --git a/lib/mesa/src/freedreno/decode/redump.h b/lib/mesa/src/freedreno/decode/redump.h
index bf202d883..1b5d3e1af 100644
--- a/lib/mesa/src/freedreno/decode/redump.h
+++ b/lib/mesa/src/freedreno/decode/redump.h
@@ -24,63 +24,53 @@
#ifndef REDUMP_H_
#define REDUMP_H_
-#include "util/u_math.h"
-
enum rd_sect_type {
- RD_NONE,
- RD_TEST, /* ascii text */
- RD_CMD, /* ascii text */
- RD_GPUADDR, /* u32 gpuaddr, u32 size */
- RD_CONTEXT, /* raw dump */
- RD_CMDSTREAM, /* raw dump */
- RD_CMDSTREAM_ADDR, /* gpu addr of cmdstream */
- RD_PARAM, /* u32 param_type, u32 param_val, u32 bitlen */
- RD_FLUSH, /* empty, clear previous params */
- RD_PROGRAM, /* shader program, raw dump */
- RD_VERT_SHADER,
- RD_FRAG_SHADER,
- RD_BUFFER_CONTENTS,
- RD_GPU_ID,
- RD_CHIP_ID,
+ RD_NONE,
+ RD_TEST, /* ascii text */
+ RD_CMD, /* ascii text */
+ RD_GPUADDR, /* u32 gpuaddr, u32 size */
+ RD_CONTEXT, /* raw dump */
+ RD_CMDSTREAM, /* raw dump */
+ RD_CMDSTREAM_ADDR, /* gpu addr of cmdstream */
+ RD_PARAM, /* u32 param_type, u32 param_val, u32 bitlen */
+ RD_FLUSH, /* empty, clear previous params */
+ RD_PROGRAM, /* shader program, raw dump */
+ RD_VERT_SHADER,
+ RD_FRAG_SHADER,
+ RD_BUFFER_CONTENTS,
+ RD_GPU_ID,
};
/* RD_PARAM types: */
enum rd_param_type {
- RD_PARAM_SURFACE_WIDTH,
- RD_PARAM_SURFACE_HEIGHT,
- RD_PARAM_SURFACE_PITCH,
- RD_PARAM_COLOR,
- RD_PARAM_BLIT_X,
- RD_PARAM_BLIT_Y,
- RD_PARAM_BLIT_WIDTH,
- RD_PARAM_BLIT_HEIGHT,
- RD_PARAM_BLIT_X2, /* BLIT_X + BLIT_WIDTH */
- RD_PARAM_BLIT_Y2, /* BLIT_Y + BLIT_WIDTH */
+ RD_PARAM_SURFACE_WIDTH,
+ RD_PARAM_SURFACE_HEIGHT,
+ RD_PARAM_SURFACE_PITCH,
+ RD_PARAM_COLOR,
+ RD_PARAM_BLIT_X,
+ RD_PARAM_BLIT_Y,
+ RD_PARAM_BLIT_WIDTH,
+ RD_PARAM_BLIT_HEIGHT,
+ RD_PARAM_BLIT_X2, /* BLIT_X + BLIT_WIDTH */
+ RD_PARAM_BLIT_Y2, /* BLIT_Y + BLIT_WIDTH */
};
void rd_start(const char *name, const char *fmt, ...) __attribute__((weak));
void rd_end(void) __attribute__((weak));
-void rd_write_section(enum rd_sect_type type, const void *buf, int sz)
- __attribute__((weak));
+void rd_write_section(enum rd_sect_type type, const void *buf, int sz) __attribute__((weak));
/* for code that should run with and without libwrap, use the following
* macros which check if the fxns are present before calling
*/
-#define RD_START(n, f, ...) \
- do { \
- if (rd_start) \
- rd_start(n, f, ##__VA_ARGS__); \
- } while (0)
-#define RD_END() \
- do { \
- if (rd_end) \
- rd_end(); \
- } while (0)
-#define RD_WRITE_SECTION(t, b, s) \
- do { \
- if (rd_write_section) \
- rd_write_section(t, b, s); \
- } while (0)
+#define RD_START(n,f,...) do { if (rd_start) rd_start(n,f,##__VA_ARGS__); } while (0)
+#define RD_END() do { if (rd_end) rd_end(); } while (0)
+#define RD_WRITE_SECTION(t,b,s) do { if (rd_write_section) rd_write_section(t,b,s); } while (0)
+
+#ifndef ARRAY_SIZE
+# define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
+#endif
+#undef ALIGN
+#define ALIGN(v,a) (((v) + (a) - 1) & ~((a) - 1))
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))