[Mesa-dev] [PATCH 1/2] intel/isl: Reduce header file duplication

Jason Ekstrand jason at jlekstrand.net
Thu Aug 17 21:57:16 UTC 2017


---
 src/intel/isl/isl_emit_depth_stencil.c |   4 --
 src/intel/isl/isl_genX_priv.h          |  45 ++++++++++++
 src/intel/isl/isl_priv.h               | 126 +++++++++------------------------
 src/intel/isl/isl_surface_state.c      |   4 --
 4 files changed, 78 insertions(+), 101 deletions(-)
 create mode 100644 src/intel/isl/isl_genX_priv.h

diff --git a/src/intel/isl/isl_emit_depth_stencil.c b/src/intel/isl/isl_emit_depth_stencil.c
index 0d541fd..0af0478 100644
--- a/src/intel/isl/isl_emit_depth_stencil.c
+++ b/src/intel/isl/isl_emit_depth_stencil.c
@@ -37,10 +37,6 @@ __gen_combine_address(void *data, void *loc, uint64_t addr, uint32_t delta)
 
 #include "isl_priv.h"
 
-#define __PASTE2(x, y) x ## y
-#define __PASTE(x, y) __PASTE2(x, y)
-#define isl_genX(x) __PASTE(isl_, genX(x))
-
 static const uint32_t isl_to_gen_ds_surftype[] = {
 #if GEN_GEN >= 9
    /* From the SKL PRM, "3DSTATE_DEPTH_STENCIL::SurfaceType":
diff --git a/src/intel/isl/isl_genX_priv.h b/src/intel/isl/isl_genX_priv.h
new file mode 100644
index 0000000..f6336cb
--- /dev/null
+++ b/src/intel/isl/isl_genX_priv.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2017 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+/*
+ * NOTE: The header can be included multiple times, from the same file.
+ */
+
+/*
+ * Gen-specific function declarations.  This header must *not* be included
+ * directly.  Instead, it is included multiple times by isl_priv.h
+ *
+ * In this header file, the usual isl_genX() macro is available.
+ */
+
+void
+isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
+                            const struct isl_surf_fill_state_info *restrict info);
+
+void
+isl_genX(buffer_fill_state_s)(void *state,
+                              const struct isl_buffer_fill_state_info *restrict info);
+
+void
+isl_genX(emit_depth_stencil_hiz_s)(const struct isl_device *dev, void *batch,
+                                   const struct isl_depth_stencil_hiz_emit_info *restrict info);
diff --git a/src/intel/isl/isl_priv.h b/src/intel/isl/isl_priv.h
index 525d8a2..2122e7c 100644
--- a/src/intel/isl/isl_priv.h
+++ b/src/intel/isl/isl_priv.h
@@ -158,98 +158,38 @@ isl_extent3d_el_to_sa(enum isl_format fmt, struct isl_extent3d extent_el)
    };
 }
 
-void
-isl_gen4_surf_fill_state_s(const struct isl_device *dev, void *state,
-                           const struct isl_surf_fill_state_info *restrict info);
-
-void
-isl_gen5_surf_fill_state_s(const struct isl_device *dev, void *state,
-                           const struct isl_surf_fill_state_info *restrict info);
-
-void
-isl_gen6_surf_fill_state_s(const struct isl_device *dev, void *state,
-                           const struct isl_surf_fill_state_info *restrict info);
-
-void
-isl_gen7_surf_fill_state_s(const struct isl_device *dev, void *state,
-                           const struct isl_surf_fill_state_info *restrict info);
-
-void
-isl_gen75_surf_fill_state_s(const struct isl_device *dev, void *state,
-                            const struct isl_surf_fill_state_info *restrict info);
-void
-isl_gen8_surf_fill_state_s(const struct isl_device *dev, void *state,
-                           const struct isl_surf_fill_state_info *restrict info);
-void
-isl_gen9_surf_fill_state_s(const struct isl_device *dev, void *state,
-                           const struct isl_surf_fill_state_info *restrict info);
-
-void
-isl_gen10_surf_fill_state_s(const struct isl_device *dev, void *state,
-                            const struct isl_surf_fill_state_info *restrict info);
-
-void
-isl_gen4_buffer_fill_state_s(void *state,
-                             const struct isl_buffer_fill_state_info *restrict info);
-
-void
-isl_gen5_buffer_fill_state_s(void *state,
-                             const struct isl_buffer_fill_state_info *restrict info);
-
-void
-isl_gen6_buffer_fill_state_s(void *state,
-                             const struct isl_buffer_fill_state_info *restrict info);
-
-void
-isl_gen7_buffer_fill_state_s(void *state,
-                             const struct isl_buffer_fill_state_info *restrict info);
-
-void
-isl_gen75_buffer_fill_state_s(void *state,
-                              const struct isl_buffer_fill_state_info *restrict info);
-
-void
-isl_gen8_buffer_fill_state_s(void *state,
-                             const struct isl_buffer_fill_state_info *restrict info);
-
-void
-isl_gen9_buffer_fill_state_s(void *state,
-                             const struct isl_buffer_fill_state_info *restrict info);
-
-void
-isl_gen10_buffer_fill_state_s(void *state,
-                              const struct isl_buffer_fill_state_info *restrict info);
-
-void
-isl_gen4_emit_depth_stencil_hiz_s(const struct isl_device *dev, void *batch,
-                                  const struct isl_depth_stencil_hiz_emit_info *restrict info);
-
-void
-isl_gen5_emit_depth_stencil_hiz_s(const struct isl_device *dev, void *batch,
-                                  const struct isl_depth_stencil_hiz_emit_info *restrict info);
-
-void
-isl_gen6_emit_depth_stencil_hiz_s(const struct isl_device *dev, void *batch,
-                                  const struct isl_depth_stencil_hiz_emit_info *restrict info);
-
-void
-isl_gen7_emit_depth_stencil_hiz_s(const struct isl_device *dev, void *batch,
-                                  const struct isl_depth_stencil_hiz_emit_info *restrict info);
-
-void
-isl_gen75_emit_depth_stencil_hiz_s(const struct isl_device *dev, void *batch,
-                                   const struct isl_depth_stencil_hiz_emit_info *restrict info);
-
-void
-isl_gen8_emit_depth_stencil_hiz_s(const struct isl_device *dev, void *batch,
-                                  const struct isl_depth_stencil_hiz_emit_info *restrict info);
-
-void
-isl_gen9_emit_depth_stencil_hiz_s(const struct isl_device *dev, void *batch,
-                                  const struct isl_depth_stencil_hiz_emit_info *restrict info);
-
-void
-isl_gen10_emit_depth_stencil_hiz_s(const struct isl_device *dev, void *batch,
-                                   const struct isl_depth_stencil_hiz_emit_info *restrict info);
+/* This is useful for adding the isl_prefix to genX functions */
+#define __PASTE2(x, y) x ## y
+#define __PASTE(x, y) __PASTE2(x, y)
+#define isl_genX(x) __PASTE(isl_, genX(x))
+
+#ifdef genX
+#  include "isl_genX_priv.h"
+#else
+#  define genX(x) gen4_##x
+#  include "isl_genX_priv.h"
+#  undef genX
+#  define genX(x) gen5_##x
+#  include "isl_genX_priv.h"
+#  undef genX
+#  define genX(x) gen6_##x
+#  include "isl_genX_priv.h"
+#  undef genX
+#  define genX(x) gen7_##x
+#  include "isl_genX_priv.h"
+#  undef genX
+#  define genX(x) gen75_##x
+#  include "isl_genX_priv.h"
+#  undef genX
+#  define genX(x) gen8_##x
+#  include "isl_genX_priv.h"
+#  undef genX
+#  define genX(x) gen9_##x
+#  include "isl_genX_priv.h"
+#  undef genX
+#  define genX(x) gen10_##x
+#  include "isl_genX_priv.h"
+#  undef genX
+#endif
 
 #endif /* ISL_PRIV_H */
diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
index e8bdb65..cd8bef2 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -37,10 +37,6 @@ __gen_combine_address(void *data, void *loc, uint64_t addr, uint32_t delta)
 
 #include "isl_priv.h"
 
-#define __PASTE2(x, y) x ## y
-#define __PASTE(x, y) __PASTE2(x, y)
-#define isl_genX(x) __PASTE(isl_, genX(x))
-
 #if GEN_GEN >= 8
 static const uint8_t isl_to_gen_halign[] = {
     [4] = HALIGN4,
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list