panfrost: Promote midgard_program to panfrost/util
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 10 Mar 2020 19:41:56 +0000 (15:41 -0400)
committerMarge Bot <eric+marge@anholt.net>
Wed, 11 Mar 2020 20:28:20 +0000 (20:28 +0000)
We'll want Bifrost to reuse the same linking mechanisms for the most
part.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4150>

src/gallium/drivers/panfrost/pan_assemble.c
src/gallium/drivers/panfrost/pan_blend_shaders.c
src/panfrost/bifrost/meson.build
src/panfrost/midgard/midgard_compile.c
src/panfrost/midgard/midgard_compile.h
src/panfrost/util/meson.build
src/panfrost/util/pan_ir.h

index f8874cee60a9e7bd83759d2f616bf14585f675ca..44e8c7af5616df8fccef84274030e34aae29cb79 100644 (file)
@@ -60,7 +60,7 @@ panfrost_shader_compile(struct panfrost_context *ctx,
 
         /* Call out to Midgard compiler given the above NIR */
 
-        midgard_program program = {
+        panfrost_program program = {
                 .alpha_ref = state->alpha_state.ref_value
         };
 
index a293c6bc3a84fbc117c89ff243d282535ca5d433..0a312f71e2306ac718d15eae51ef32a823f97294 100644 (file)
@@ -181,7 +181,7 @@ panfrost_compile_blend_shader(
 
         /* Compile the built shader */
 
-        midgard_program program;
+        panfrost_program program;
         midgard_compile_shader_nir(shader, &program, true, rt, screen->gpu_id, false);
 
         /* Allow us to patch later */
index bde656933f2846002c91eff0bb99759af6d90ca2..7b374cc4d101c601d314906205993c51f2126b1e 100644 (file)
@@ -43,7 +43,7 @@ bifrost_nir_algebraic_c = custom_target(
 libpanfrost_bifrost = static_library(
   'panfrost_bifrost',
   [libpanfrost_bifrost_files, bifrost_nir_algebraic_c],
-  include_directories : [inc_common, inc_include, inc_src],
+  include_directories : [inc_common, inc_include, inc_src, inc_panfrost_hw],
   dependencies: [idep_nir],
   link_with: [libpanfrost_util],
   c_args : [c_vis_args, no_override_init_args],
index a312f5e1cfa2589fde6f9583b6e20ddeabe68b8f..049f34d8ca7ec3f15a856142333a2d961e89a89e 100644 (file)
@@ -2751,7 +2751,7 @@ mir_add_writeout_loops(compiler_context *ctx)
 }
 
 int
-midgard_compile_shader_nir(nir_shader *nir, midgard_program *program, bool is_blend, unsigned blend_rt, unsigned gpu_id, bool shaderdb)
+midgard_compile_shader_nir(nir_shader *nir, panfrost_program *program, bool is_blend, unsigned blend_rt, unsigned gpu_id, bool shaderdb)
 {
         struct util_dynarray *compiled = &program->compiled;
 
index 016502b319e1449952a48246d41f15c9dbc3385f..a995d12771a7fa3734f0efd47fa33b659918425e 100644 (file)
 #include "compiler/nir/nir.h"
 #include "util/u_dynarray.h"
 #include "panfrost-job.h"
-
-/* Define the general compiler entry point */
-
-#define MAX_SYSVAL_COUNT 32
-
-/* Allow 2D of sysval IDs, while allowing nonparametric sysvals to equal
- * their class for equal comparison */
-
-#define PAN_SYSVAL(type, no) (((no) << 16) | PAN_SYSVAL_##type)
-#define PAN_SYSVAL_TYPE(sysval) ((sysval) & 0xffff)
-#define PAN_SYSVAL_ID(sysval) ((sysval) >> 16)
-
-/* Define some common types. We start at one for easy indexing of hash
- * tables internal to the compiler */
-
-enum {
-        PAN_SYSVAL_VIEWPORT_SCALE = 1,
-        PAN_SYSVAL_VIEWPORT_OFFSET = 2,
-        PAN_SYSVAL_TEXTURE_SIZE = 3,
-        PAN_SYSVAL_SSBO = 4,
-        PAN_SYSVAL_NUM_WORK_GROUPS = 5,
-        PAN_SYSVAL_SAMPLER = 7,
-};
-
-#define PAN_TXS_SYSVAL_ID(texidx, dim, is_array)          \
-       ((texidx) | ((dim) << 7) | ((is_array) ? (1 << 9) : 0))
-
-#define PAN_SYSVAL_ID_TO_TXS_TEX_IDX(id)        ((id) & 0x7f)
-#define PAN_SYSVAL_ID_TO_TXS_DIM(id)            (((id) >> 7) & 0x3)
-#define PAN_SYSVAL_ID_TO_TXS_IS_ARRAY(id)       !!((id) & (1 << 9))
-
-/* Special attribute slots for vertex builtins. Sort of arbitrary but let's be
- * consistent with the blob so we can compare traces easier. */
-
-enum {
-        PAN_VERTEX_ID   = 16,
-        PAN_INSTANCE_ID = 17,
-        PAN_MAX_ATTRIBUTE
-};
-
-typedef struct {
-        int work_register_count;
-        int uniform_count;
-        int uniform_cutoff;
-
-        /* Prepended before uniforms, mapping to SYSVAL_ names for the
-         * sysval */
-
-        unsigned sysval_count;
-        unsigned sysvals[MAX_SYSVAL_COUNT];
-
-        unsigned varyings[32];
-        enum mali_format varying_type[32];
-
-        /* Boolean properties of the program */
-        bool writes_point_size;
-
-        int first_tag;
-
-        struct util_dynarray compiled;
-
-        /* For a blend shader using a constant color -- patch point. If
-         * negative, there's no constant. */
-
-        int blend_patch_offset;
-
-        /* The number of bytes to allocate per-thread for Thread Local Storage
-         * (register spilling), or zero if no spilling is used */
-        unsigned tls_size;
-
-        /* IN: For a fragment shader with a lowered alpha test, the ref value */
-        float alpha_ref;
-} midgard_program;
+#include "panfrost/util/pan_ir.h"
 
 int
-midgard_compile_shader_nir(nir_shader *nir, midgard_program *program, bool is_blend, unsigned blend_rt, unsigned gpu_id, bool shaderdb);
+midgard_compile_shader_nir(nir_shader *nir, panfrost_program *program, bool is_blend, unsigned blend_rt, unsigned gpu_id, bool shaderdb);
 
 /* NIR options are shared between the standalone compiler and the online
  * compiler. Defining it here is the simplest, though maybe not the Right
index 63ca75697e344ebee32fecab321d722d05b9d190..0b7e426c03ffd3b2ca1210d57b7b5bd4dc286e3a 100644 (file)
@@ -27,7 +27,7 @@ libpanfrost_util_files = files(
 libpanfrost_util = static_library(
   'panfrost_util',
   [libpanfrost_util_files],
-  include_directories : [inc_common],
+  include_directories : [inc_common, inc_panfrost_hw],
   c_args : [c_vis_args, no_override_init_args],
   cpp_args : [cpp_vis_args],
   build_by_default : false,
index e6cb7e5a95ea6d95b230845c7b8dc7b864ba4446..774ce26e88eb697af9430b80970e2cedbf0212e5 100644 (file)
 #define __PAN_IR_H
 
 #include <stdint.h>
+#include "panfrost-job.h"
+#include "util/u_dynarray.h"
+
+/* Define the general compiler entry point */
+
+#define MAX_SYSVAL_COUNT 32
+
+/* Allow 2D of sysval IDs, while allowing nonparametric sysvals to equal
+ * their class for equal comparison */
+
+#define PAN_SYSVAL(type, no) (((no) << 16) | PAN_SYSVAL_##type)
+#define PAN_SYSVAL_TYPE(sysval) ((sysval) & 0xffff)
+#define PAN_SYSVAL_ID(sysval) ((sysval) >> 16)
+
+/* Define some common types. We start at one for easy indexing of hash
+ * tables internal to the compiler */
+
+enum {
+        PAN_SYSVAL_VIEWPORT_SCALE = 1,
+        PAN_SYSVAL_VIEWPORT_OFFSET = 2,
+        PAN_SYSVAL_TEXTURE_SIZE = 3,
+        PAN_SYSVAL_SSBO = 4,
+        PAN_SYSVAL_NUM_WORK_GROUPS = 5,
+        PAN_SYSVAL_SAMPLER = 7,
+};
+
+#define PAN_TXS_SYSVAL_ID(texidx, dim, is_array)          \
+       ((texidx) | ((dim) << 7) | ((is_array) ? (1 << 9) : 0))
+
+#define PAN_SYSVAL_ID_TO_TXS_TEX_IDX(id)        ((id) & 0x7f)
+#define PAN_SYSVAL_ID_TO_TXS_DIM(id)            (((id) >> 7) & 0x3)
+#define PAN_SYSVAL_ID_TO_TXS_IS_ARRAY(id)       !!((id) & (1 << 9))
+
+/* Special attribute slots for vertex builtins. Sort of arbitrary but let's be
+ * consistent with the blob so we can compare traces easier. */
+
+enum {
+        PAN_VERTEX_ID   = 16,
+        PAN_INSTANCE_ID = 17,
+        PAN_MAX_ATTRIBUTE
+};
+
+typedef struct {
+        int work_register_count;
+        int uniform_count;
+        int uniform_cutoff;
+
+        /* Prepended before uniforms, mapping to SYSVAL_ names for the
+         * sysval */
+
+        unsigned sysval_count;
+        unsigned sysvals[MAX_SYSVAL_COUNT];
+
+        unsigned varyings[32];
+        enum mali_format varying_type[32];
+
+        /* Boolean properties of the program */
+        bool writes_point_size;
+
+        int first_tag;
+
+        struct util_dynarray compiled;
+
+        /* For a blend shader using a constant color -- patch point. If
+         * negative, there's no constant. */
+
+        int blend_patch_offset;
+
+        /* The number of bytes to allocate per-thread for Thread Local Storage
+         * (register spilling), or zero if no spilling is used */
+        unsigned tls_size;
+
+        /* IN: For a fragment shader with a lowered alpha test, the ref value */
+        float alpha_ref;
+} panfrost_program;
 
 uint16_t
 pan_to_bytemask(unsigned bytes, unsigned mask);