Mesa (main): crocus: Replace devinfo->ver[x10] checks with GFX_VER[x10]

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Oct 22 06:30:42 UTC 2021


Module: Mesa
Branch: main
Commit: 1429feaf293e5a34dd32c632b46931f15e769bb6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1429feaf293e5a34dd32c632b46931f15e769bb6

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Oct 21 16:38:56 2021 -0700

crocus: Replace devinfo->ver[x10] checks with GFX_VER[x10]

These files are compiled per-generation, so we can just use the #define
instead of the actual field dereference to allow the compiler to dead
code eliminate whole paths.

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13475>

---

 src/gallium/drivers/crocus/crocus_state.c | 25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/src/gallium/drivers/crocus/crocus_state.c b/src/gallium/drivers/crocus/crocus_state.c
index 10705a0b7bb..f575fdb8157 100644
--- a/src/gallium/drivers/crocus/crocus_state.c
+++ b/src/gallium/drivers/crocus/crocus_state.c
@@ -426,7 +426,7 @@ flush_before_state_base_change(struct crocus_batch *batch)
     * rendering.  It's a bit of a big hammer but it appears to work.
     */
    const unsigned dc_flush =
-      batch->screen->devinfo.ver >= 7 ? PIPE_CONTROL_DATA_CACHE_FLUSH : 0;
+      GFX_VER >= 7 ? PIPE_CONTROL_DATA_CACHE_FLUSH : 0;
    crocus_emit_end_of_pipe_sync(batch,
                                 "change STATE_BASE_ADDRESS (flushes)",
                                 PIPE_CONTROL_RENDER_TARGET_FLUSH |
@@ -698,7 +698,6 @@ static bool
 crocus_calculate_urb_fence(struct crocus_batch *batch, unsigned csize,
                            unsigned vsize, unsigned sfsize)
 {
-   const struct intel_device_info *devinfo = &batch->screen->devinfo;
    struct crocus_context *ice = batch->ice;
    if (csize < limits[URB_CS].min_entry_size)
       csize = limits[URB_CS].min_entry_size;
@@ -729,7 +728,7 @@ crocus_calculate_urb_fence(struct crocus_batch *batch, unsigned csize,
 
       ice->urb.constrained = 0;
 
-      if (devinfo->ver == 5) {
+      if (GFX_VER == 5) {
          ice->urb.nr_vs_entries = 128;
          ice->urb.nr_sf_entries = 48;
          if (check_urb_layout(ice)) {
@@ -739,7 +738,7 @@ crocus_calculate_urb_fence(struct crocus_batch *batch, unsigned csize,
             ice->urb.nr_vs_entries = limits[URB_VS].preferred_nr_entries;
             ice->urb.nr_sf_entries = limits[URB_SF].preferred_nr_entries;
          }
-      } else if (devinfo->is_g4x) {
+      } else if (GFX_VERx10 == 45) {
          ice->urb.nr_vs_entries = 64;
          if (check_urb_layout(ice)) {
             goto done;
@@ -1246,7 +1245,7 @@ emit_pipeline_select(struct crocus_batch *batch, uint32_t pipeline)
     *     MI_PIPELINE_SELECT command to change the Pipeline Select Mode."
     */
    const unsigned dc_flush =
-      batch->screen->devinfo.ver >= 7 ? PIPE_CONTROL_DATA_CACHE_FLUSH : 0;
+      GFX_VER >= 7 ? PIPE_CONTROL_DATA_CACHE_FLUSH : 0;
    crocus_emit_pipe_control_flush(batch,
                                   "workaround: PIPELINE_SELECT flushes (1/2)",
                                   PIPE_CONTROL_RENDER_TARGET_FLUSH |
@@ -2694,7 +2693,7 @@ crocus_create_sampler_view(struct pipe_context *ctx,
       tex = util_format_has_depth(desc) ? &zres->base.b : &sres->base.b;
 
       if (tex->format == PIPE_FORMAT_S8_UINT)
-         if (devinfo->ver == 7 && sres->shadow)
+         if (GFX_VER == 7 && sres->shadow)
             tex = &sres->shadow->base.b;
    }
 
@@ -2713,7 +2712,7 @@ crocus_create_sampler_view(struct pipe_context *ctx,
    crocus_combine_swizzle(isv->swizzle, fmt.swizzles, vswz);
 
    /* hardcode stencil swizzles - hw returns 0G01, we want GGGG */
-   if (devinfo->ver < 6 &&
+   if (GFX_VER < 6 &&
        (tmpl->format == PIPE_FORMAT_X32_S8X24_UINT ||
         tmpl->format == PIPE_FORMAT_X24S8_UINT)) {
       isv->swizzle[0] = tmpl->swizzle_g;
@@ -4964,7 +4963,6 @@ emit_surface_state(struct crocus_batch *batch,
                    uint32_t *surf_state,
                    uint32_t addr_offset)
 {
-   const struct intel_device_info *devinfo = &batch->screen->devinfo;
    struct isl_device *isl_dev = &batch->screen->isl_dev;
    uint32_t reloc = RELOC_32BIT;
    uint64_t offset_B = res->offset;
@@ -4984,7 +4982,7 @@ emit_surface_state(struct crocus_batch *batch,
                                  &tile_x_sa, &tile_y_sa);
          view.base_array_layer = 0;
          view.base_level = 0;
-      } else if (res->base.b.target == PIPE_TEXTURE_CUBE && devinfo->ver == 4) {
+      } else if (res->base.b.target == PIPE_TEXTURE_CUBE && GFX_VER == 4) {
          isl_surf_get_image_surf(isl_dev, in_surf,
                                  view.base_level, view.base_array_layer,
                                  0,
@@ -5038,7 +5036,7 @@ emit_surface_state(struct crocus_batch *batch,
        *
        * FIXME: move to the point of assignment.
        */
-      if (devinfo->ver == 8) {
+      if (GFX_VER == 8) {
          uint64_t *aux_addr = (uint64_t *)(surf_state + (isl_dev->ss.aux_addr_offset / 4));
          *aux_addr = crocus_state_reloc(batch,
                                         addr_offset + isl_dev->ss.aux_addr_offset,
@@ -5062,7 +5060,6 @@ emit_surface(struct crocus_batch *batch,
              bool blend_enable,
              uint32_t write_disables)
 {
-   const struct intel_device_info *devinfo = &batch->screen->devinfo;
    struct isl_device *isl_dev = &batch->screen->isl_dev;
    struct crocus_resource *res = (struct crocus_resource *)surf->base.texture;
    struct isl_view *view = &surf->view;
@@ -5070,7 +5067,7 @@ emit_surface(struct crocus_batch *batch,
    enum pipe_texture_target target = res->base.b.target;
    bool adjust_surf = false;
 
-   if (devinfo->ver == 4 && target == PIPE_TEXTURE_CUBE)
+   if (GFX_VER == 4 && target == PIPE_TEXTURE_CUBE)
       adjust_surf = true;
 
    if (surf->align_res)
@@ -5685,9 +5682,6 @@ setup_constant_buffers(struct crocus_context *ice,
 static void
 gen7_emit_vs_workaround_flush(struct crocus_batch *batch)
 {
-   ASSERTED const struct intel_device_info *devinfo = &batch->screen->devinfo;
-
-   assert(devinfo->ver == 7);
    crocus_emit_pipe_control_write(batch,
                                   "vs workaround",
                                   PIPE_CONTROL_WRITE_IMMEDIATE
@@ -9161,6 +9155,7 @@ void
 genX(crocus_init_screen_state)(struct crocus_screen *screen)
 {
    assert(screen->devinfo.verx10 == GFX_VERx10);
+   assert(screen->devinfo.ver == GFX_VER);
    screen->vtbl.destroy_state = crocus_destroy_state;
    screen->vtbl.init_render_context = crocus_init_render_context;
    screen->vtbl.upload_render_state = crocus_upload_render_state;



More information about the mesa-commit mailing list