ilo: use an accessor for dev->gen
authorChia-I Wu <olvaffe@gmail.com>
Fri, 12 Sep 2014 02:55:58 +0000 (10:55 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Fri, 12 Sep 2014 08:58:30 +0000 (16:58 +0800)
It should enable us to do specialized builds by making the accessor return a
constant.

24 files changed:
src/gallium/drivers/ilo/ilo_3d.c
src/gallium/drivers/ilo/ilo_3d_pipeline.c
src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c
src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c
src/gallium/drivers/ilo/ilo_blitter_rectlist.c
src/gallium/drivers/ilo/ilo_builder_decode.c
src/gallium/drivers/ilo/ilo_common.h
src/gallium/drivers/ilo/ilo_format.c
src/gallium/drivers/ilo/ilo_format.h
src/gallium/drivers/ilo/ilo_gpe.h
src/gallium/drivers/ilo/ilo_gpe_gen6.c
src/gallium/drivers/ilo/ilo_gpe_gen6.h
src/gallium/drivers/ilo/ilo_gpe_gen7.c
src/gallium/drivers/ilo/ilo_gpe_gen7.h
src/gallium/drivers/ilo/ilo_layout.c
src/gallium/drivers/ilo/ilo_resource.c
src/gallium/drivers/ilo/ilo_screen.c
src/gallium/drivers/ilo/ilo_shader.c
src/gallium/drivers/ilo/ilo_transfer.c
src/gallium/drivers/ilo/shader/ilo_shader_fs.c
src/gallium/drivers/ilo/shader/ilo_shader_vs.c
src/gallium/drivers/ilo/shader/toy_compiler_disasm.c
src/gallium/drivers/ilo/shader/toy_helpers.h
src/gallium/drivers/ilo/shader/toy_legalize.c

index 484823ee82080dad80adb7fc7bc0e80db633d58b..413d15a9cbea0cc8505fa30e8d7aa97c8f382de2 100644 (file)
@@ -627,7 +627,7 @@ ilo_check_restart_index(const struct ilo_context *ilo, unsigned restart_index)
     * Haswell (GEN(7.5)) supports an arbitrary cut index, check everything
     * older.
     */
-   if (ilo->dev->gen >= ILO_GEN(7.5))
+   if (ilo_dev_gen(ilo->dev) >= ILO_GEN(7.5))
       return true;
 
    /* Note: indices must be unsigned byte, unsigned short or unsigned int */
@@ -663,7 +663,7 @@ ilo_check_restart_prim_type(const struct ilo_context *ilo, unsigned prim)
    case PIPE_PRIM_QUAD_STRIP:
    case PIPE_PRIM_QUADS:
    case PIPE_PRIM_TRIANGLE_FAN:
-      if (ilo->dev->gen >= ILO_GEN(7.5)) {
+      if (ilo_dev_gen(ilo->dev) >= ILO_GEN(7.5)) {
          /* Haswell and newer parts can handle these prim types. */
          return true;
       }
@@ -816,7 +816,7 @@ ilo_texture_barrier(struct pipe_context *pipe)
    ilo_3d_pipeline_emit_flush(hw3d->pipeline);
 
    /* don't know why */
-   if (ilo->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(ilo->dev) >= ILO_GEN(7))
       ilo_cp_flush(hw3d->cp, "texture barrier");
 }
 
index 26d3ec3e327de12c6e38aec91f6492ba3f92a3c5..bbac8ce427857dc7ee0bce67ffda6493f8029c0c 100644 (file)
@@ -77,7 +77,7 @@ ilo_3d_pipeline_create(struct ilo_cp *cp, const struct ilo_dev_info *dev)
    p->cp = cp;
    p->dev = dev;
 
-   switch (p->dev->gen) {
+   switch (ilo_dev_gen(p->dev)) {
    case ILO_GEN(6):
       ilo_3d_pipeline_init_gen6(p);
       break;
@@ -137,7 +137,7 @@ static void
 handle_invalid_batch_bo(struct ilo_3d_pipeline *p, bool unset)
 {
    if (p->invalidate_flags & ILO_3D_PIPELINE_INVALIDATE_BATCH_BO) {
-      if (p->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6))
          p->state.has_gen6_wa_pipe_control = false;
 
       if (unset)
@@ -166,7 +166,7 @@ ilo_3d_pipeline_emit_draw(struct ilo_3d_pipeline *p,
       p->state.so_num_vertices = 0;
 
       /* on GEN7+, we need SOL_RESET to reset the SO write offsets */
-      if (p->dev->gen >= ILO_GEN(7))
+      if (ilo_dev_gen(p->dev) >= ILO_GEN(7))
          ilo_cp_set_one_off_flags(p->cp, INTEL_EXEC_GEN7_SOL_RESET);
    }
 
index 4046e63655bf7f8f27b681187b0b655484c4eedf..bf07ce7468efc3005c5f86098bb579f71cbeb313 100644 (file)
@@ -50,7 +50,7 @@ static void
 gen6_wa_pipe_control_post_sync(struct ilo_3d_pipeline *p,
                                bool caller_post_sync)
 {
-   assert(p->dev->gen == ILO_GEN(6));
+   assert(ilo_dev_gen(p->dev) == ILO_GEN(6));
 
    /* emit once */
    if (p->state.has_gen6_wa_pipe_control)
@@ -93,7 +93,7 @@ gen6_wa_pipe_control_post_sync(struct ilo_3d_pipeline *p,
 static void
 gen6_wa_pipe_control_wm_multisample_flush(struct ilo_3d_pipeline *p)
 {
-   assert(p->dev->gen == ILO_GEN(6));
+   assert(ilo_dev_gen(p->dev) == ILO_GEN(6));
 
    gen6_wa_pipe_control_post_sync(p, false);
 
@@ -114,7 +114,7 @@ gen6_wa_pipe_control_wm_multisample_flush(struct ilo_3d_pipeline *p)
 static void
 gen6_wa_pipe_control_wm_depth_flush(struct ilo_3d_pipeline *p)
 {
-   assert(p->dev->gen == ILO_GEN(6));
+   assert(ilo_dev_gen(p->dev) == ILO_GEN(6));
 
    gen6_wa_pipe_control_post_sync(p, false);
 
@@ -139,7 +139,7 @@ gen6_wa_pipe_control_wm_depth_flush(struct ilo_3d_pipeline *p)
 static void
 gen6_wa_pipe_control_wm_max_threads_stall(struct ilo_3d_pipeline *p)
 {
-   assert(p->dev->gen == ILO_GEN(6));
+   assert(ilo_dev_gen(p->dev) == ILO_GEN(6));
 
    /* the post-sync workaround should cover this already */
    if (p->state.has_gen6_wa_pipe_control)
@@ -161,7 +161,7 @@ gen6_wa_pipe_control_wm_max_threads_stall(struct ilo_3d_pipeline *p)
 static void
 gen6_wa_pipe_control_vs_const_flush(struct ilo_3d_pipeline *p)
 {
-   assert(p->dev->gen == ILO_GEN(6));
+   assert(ilo_dev_gen(p->dev) == ILO_GEN(6));
 
    gen6_wa_pipe_control_post_sync(p, false);
 
@@ -186,7 +186,7 @@ gen6_pipeline_common_select(struct ilo_3d_pipeline *p,
 {
    /* PIPELINE_SELECT */
    if (session->hw_ctx_changed) {
-      if (p->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6))
          gen6_wa_pipe_control_post_sync(p, false);
 
       gen6_PIPELINE_SELECT(&p->cp->builder, 0x0);
@@ -200,7 +200,7 @@ gen6_pipeline_common_sip(struct ilo_3d_pipeline *p,
 {
    /* STATE_SIP */
    if (session->hw_ctx_changed) {
-      if (p->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6))
          gen6_wa_pipe_control_post_sync(p, false);
 
       gen6_STATE_SIP(&p->cp->builder, 0);
@@ -215,7 +215,7 @@ gen6_pipeline_common_base_address(struct ilo_3d_pipeline *p,
    /* STATE_BASE_ADDRESS */
    if (session->state_bo_changed || session->kernel_bo_changed ||
        session->batch_bo_changed) {
-      if (p->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6))
          gen6_wa_pipe_control_post_sync(p, false);
 
       ilo_builder_batch_state_base_address(&p->cp->builder,
@@ -399,7 +399,7 @@ gen6_pipeline_vf(struct ilo_3d_pipeline *p,
                  const struct ilo_context *ilo,
                  struct gen6_pipeline_session *session)
 {
-   if (p->dev->gen >= ILO_GEN(7.5)) {
+   if (ilo_dev_gen(p->dev) >= ILO_GEN(7.5)) {
       /* 3DSTATE_INDEX_BUFFER */
       if (DIRTY(IB) || session->batch_bo_changed) {
          gen6_3DSTATE_INDEX_BUFFER(&p->cp->builder,
@@ -486,7 +486,7 @@ gen6_pipeline_vs(struct ilo_3d_pipeline *p,
     * the classic i965 does this in upload_vs_state(), citing a spec that I
     * cannot find
     */
-   if (emit_3dstate_vs && p->dev->gen == ILO_GEN(6))
+   if (emit_3dstate_vs && ilo_dev_gen(p->dev) == ILO_GEN(6))
       gen6_wa_pipe_control_post_sync(p, false);
 
    /* 3DSTATE_CONSTANT_VS */
@@ -504,7 +504,7 @@ gen6_pipeline_vs(struct ilo_3d_pipeline *p,
       gen6_3DSTATE_VS(&p->cp->builder, ilo->vs, num_samplers);
    }
 
-   if (emit_3dstate_constant_vs && p->dev->gen == ILO_GEN(6))
+   if (emit_3dstate_constant_vs && ilo_dev_gen(p->dev) == ILO_GEN(6))
       gen6_wa_pipe_control_vs_const_flush(p);
 }
 
@@ -579,7 +579,7 @@ gen6_pipeline_gs_svbi(struct ilo_3d_pipeline *p,
 
    /* 3DSTATE_GS_SVB_INDEX */
    if (emit) {
-      if (p->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6))
          gen6_wa_pipe_control_post_sync(p, false);
 
       gen6_3DSTATE_GS_SVB_INDEX(&p->cp->builder,
@@ -652,7 +652,7 @@ gen6_pipeline_sf_rect(struct ilo_3d_pipeline *p,
 {
    /* 3DSTATE_DRAWING_RECTANGLE */
    if (DIRTY(FB)) {
-      if (p->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6))
          gen6_wa_pipe_control_post_sync(p, false);
 
       gen6_3DSTATE_DRAWING_RECTANGLE(&p->cp->builder, 0, 0,
@@ -681,7 +681,7 @@ gen6_pipeline_wm(struct ilo_3d_pipeline *p,
       const bool cc_may_kill = (ilo->dsa->dw_alpha ||
                                 ilo->blend->alpha_to_coverage);
 
-      if (p->dev->gen == ILO_GEN(6) && session->hw_ctx_changed)
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6) && session->hw_ctx_changed)
          gen6_wa_pipe_control_wm_max_threads_stall(p);
 
       gen6_3DSTATE_WM(&p->cp->builder, ilo->fs, num_samplers,
@@ -701,7 +701,7 @@ gen6_pipeline_wm_multisample(struct ilo_3d_pipeline *p,
       packed_sample_pos = (ilo->fb.num_samples > 1) ?
          &p->packed_sample_position_4x : &p->packed_sample_position_1x;
 
-      if (p->dev->gen == ILO_GEN(6)) {
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6)) {
          gen6_wa_pipe_control_post_sync(p, false);
          gen6_wa_pipe_control_wm_multisample_flush(p);
       }
@@ -742,7 +742,7 @@ gen6_pipeline_wm_depth(struct ilo_3d_pipeline *p,
          clear_params = 0;
       }
 
-      if (p->dev->gen == ILO_GEN(6)) {
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6)) {
          gen6_wa_pipe_control_post_sync(p, false);
          gen6_wa_pipe_control_wm_depth_flush(p);
       }
@@ -762,7 +762,7 @@ gen6_pipeline_wm_raster(struct ilo_3d_pipeline *p,
    /* 3DSTATE_POLY_STIPPLE_PATTERN and 3DSTATE_POLY_STIPPLE_OFFSET */
    if ((DIRTY(RASTERIZER) || DIRTY(POLY_STIPPLE)) &&
        ilo->rasterizer->state.poly_stipple_enable) {
-      if (p->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6))
          gen6_wa_pipe_control_post_sync(p, false);
 
       gen6_3DSTATE_POLY_STIPPLE_PATTERN(&p->cp->builder,
@@ -773,7 +773,7 @@ gen6_pipeline_wm_raster(struct ilo_3d_pipeline *p,
 
    /* 3DSTATE_LINE_STIPPLE */
    if (DIRTY(RASTERIZER) && ilo->rasterizer->state.line_stipple_enable) {
-      if (p->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6))
          gen6_wa_pipe_control_post_sync(p, false);
 
       gen6_3DSTATE_LINE_STIPPLE(&p->cp->builder,
@@ -783,7 +783,7 @@ gen6_pipeline_wm_raster(struct ilo_3d_pipeline *p,
 
    /* 3DSTATE_AA_LINE_PARAMETERS */
    if (DIRTY(RASTERIZER) && ilo->rasterizer->state.line_smooth) {
-      if (p->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(6))
          gen6_wa_pipe_control_post_sync(p, false);
 
       gen6_3DSTATE_AA_LINE_PARAMETERS(&p->cp->builder);
@@ -796,7 +796,7 @@ gen6_pipeline_state_viewports(struct ilo_3d_pipeline *p,
                               struct gen6_pipeline_session *session)
 {
    /* SF_CLIP_VIEWPORT and CC_VIEWPORT */
-   if (p->dev->gen >= ILO_GEN(7) && DIRTY(VIEWPORT)) {
+   if (ilo_dev_gen(p->dev) >= ILO_GEN(7) && DIRTY(VIEWPORT)) {
       p->state.SF_CLIP_VIEWPORT = gen7_SF_CLIP_VIEWPORT(&p->cp->builder,
             ilo->viewport.cso, ilo->viewport.count);
 
@@ -920,7 +920,7 @@ gen6_pipeline_state_surfaces_so(struct ilo_3d_pipeline *p,
 {
    const struct ilo_so_state *so = &ilo->so;
 
-   if (p->dev->gen != ILO_GEN(6))
+   if (ilo_dev_gen(p->dev) != ILO_GEN(6))
       return;
 
    /* SURFACE_STATEs for stream output targets */
@@ -1451,7 +1451,7 @@ ilo_3d_pipeline_emit_draw_gen6(struct ilo_3d_pipeline *p,
 void
 ilo_3d_pipeline_emit_flush_gen6(struct ilo_3d_pipeline *p)
 {
-   if (p->dev->gen == ILO_GEN(6))
+   if (ilo_dev_gen(p->dev) == ILO_GEN(6))
       gen6_wa_pipe_control_post_sync(p, false);
 
    gen6_PIPE_CONTROL(&p->cp->builder,
@@ -1469,7 +1469,7 @@ void
 ilo_3d_pipeline_emit_write_timestamp_gen6(struct ilo_3d_pipeline *p,
                                           struct intel_bo *bo, int index)
 {
-   if (p->dev->gen == ILO_GEN(6))
+   if (ilo_dev_gen(p->dev) == ILO_GEN(6))
       gen6_wa_pipe_control_post_sync(p, true);
 
    gen6_PIPE_CONTROL(&p->cp->builder,
@@ -1482,7 +1482,7 @@ void
 ilo_3d_pipeline_emit_write_depth_count_gen6(struct ilo_3d_pipeline *p,
                                             struct intel_bo *bo, int index)
 {
-   if (p->dev->gen == ILO_GEN(6))
+   if (ilo_dev_gen(p->dev) == ILO_GEN(6))
       gen6_wa_pipe_control_post_sync(p, false);
 
    gen6_PIPE_CONTROL(&p->cp->builder,
@@ -1505,8 +1505,8 @@ ilo_3d_pipeline_emit_write_statistics_gen6(struct ilo_3d_pipeline *p,
       GEN6_REG_CL_INVOCATION_COUNT,
       GEN6_REG_CL_PRIMITIVES_COUNT,
       GEN6_REG_PS_INVOCATION_COUNT,
-      p->dev->gen >= ILO_GEN(7) ? GEN7_REG_HS_INVOCATION_COUNT : 0,
-      p->dev->gen >= ILO_GEN(7) ? GEN7_REG_DS_INVOCATION_COUNT : 0,
+      ilo_dev_gen(p->dev) >= ILO_GEN(7) ? GEN7_REG_HS_INVOCATION_COUNT : 0,
+      ilo_dev_gen(p->dev) >= ILO_GEN(7) ? GEN7_REG_DS_INVOCATION_COUNT : 0,
       0,
    };
    int i;
@@ -1766,7 +1766,7 @@ gen6_pipeline_estimate_state_size(const struct ilo_3d_pipeline *p,
       size += align(GEN6_COLOR_CALC_STATE__SIZE, alignment);
 
       /* viewport arrays */
-      if (p->dev->gen >= ILO_GEN(7)) {
+      if (ilo_dev_gen(p->dev) >= ILO_GEN(7)) {
          size +=
             align(GEN7_SF_CLIP_VIEWPORT__SIZE * ILO_MAX_VIEWPORTS, 16) +
             align(GEN6_CC_VIEWPORT__SIZE * ILO_MAX_VIEWPORTS, 8) +
@@ -1801,7 +1801,7 @@ gen6_pipeline_estimate_state_size(const struct ilo_3d_pipeline *p,
       switch (sh_type) {
       case PIPE_SHADER_VERTEX:
          if (ilo->vs) {
-            if (p->dev->gen == ILO_GEN(6)) {
+            if (ilo_dev_gen(p->dev) == ILO_GEN(6)) {
                const struct pipe_stream_output_info *so_info =
                   ilo_shader_get_kernel_so_info(ilo->vs);
 
@@ -1816,7 +1816,7 @@ gen6_pipeline_estimate_state_size(const struct ilo_3d_pipeline *p,
          }
          break;
       case PIPE_SHADER_GEOMETRY:
-         if (ilo->gs && p->dev->gen == ILO_GEN(6)) {
+         if (ilo->gs && ilo_dev_gen(p->dev) == ILO_GEN(6)) {
             const struct pipe_stream_output_info *so_info =
                ilo_shader_get_kernel_so_info(ilo->gs);
 
index e9f98fdeea1e7cd6494340cc41fe9d8e4b8038ed..c657ebbdf9faa9a7b63315d8adcf4fa9b674e125 100644 (file)
@@ -46,7 +46,8 @@ gen7_wa_pipe_control_cs_stall(struct ilo_3d_pipeline *p,
    struct intel_bo *bo = NULL;
    uint32_t dw1 = GEN6_PIPE_CONTROL_CS_STALL;
 
-   assert(p->dev->gen == ILO_GEN(7) || p->dev->gen == ILO_GEN(7.5));
+   assert(ilo_dev_gen(p->dev) == ILO_GEN(7) ||
+          ilo_dev_gen(p->dev) == ILO_GEN(7.5));
 
    /* emit once */
    if (p->state.has_gen6_wa_pipe_control)
@@ -94,7 +95,8 @@ gen7_wa_pipe_control_cs_stall(struct ilo_3d_pipeline *p,
 static void
 gen7_wa_pipe_control_vs_depth_stall(struct ilo_3d_pipeline *p)
 {
-   assert(p->dev->gen == ILO_GEN(7) || p->dev->gen == ILO_GEN(7.5));
+   assert(ilo_dev_gen(p->dev) == ILO_GEN(7) ||
+          ilo_dev_gen(p->dev) == ILO_GEN(7.5));
 
    /*
     * From the Ivy Bridge PRM, volume 2 part 1, page 106:
@@ -115,7 +117,8 @@ static void
 gen7_wa_pipe_control_wm_depth_stall(struct ilo_3d_pipeline *p,
                                     bool change_depth_buffer)
 {
-   assert(p->dev->gen == ILO_GEN(7) || p->dev->gen == ILO_GEN(7.5));
+   assert(ilo_dev_gen(p->dev) == ILO_GEN(7) ||
+          ilo_dev_gen(p->dev) == ILO_GEN(7.5));
 
    /*
     * From the Ivy Bridge PRM, volume 2 part 1, page 276:
@@ -163,7 +166,8 @@ gen7_wa_pipe_control_wm_depth_stall(struct ilo_3d_pipeline *p,
 static void
 gen7_wa_pipe_control_ps_max_threads_stall(struct ilo_3d_pipeline *p)
 {
-   assert(p->dev->gen == ILO_GEN(7) || p->dev->gen == ILO_GEN(7.5));
+   assert(ilo_dev_gen(p->dev) == ILO_GEN(7) ||
+          ilo_dev_gen(p->dev) == ILO_GEN(7.5));
 
    /*
     * From the Ivy Bridge PRM, volume 2 part 1, page 286:
@@ -188,8 +192,8 @@ gen7_pipeline_common_urb(struct ilo_3d_pipeline *p,
    /* 3DSTATE_URB_{VS,GS,HS,DS} */
    if (DIRTY(VE) || DIRTY(VS)) {
       /* the first 16KB are reserved for VS and PS PCBs */
-      const int offset =
-         (p->dev->gen == ILO_GEN(7.5) && p->dev->gt == 3) ? 32768 : 16384;
+      const int offset = (ilo_dev_gen(p->dev) == ILO_GEN(7.5) &&
+            p->dev->gt == 3) ? 32768 : 16384;
       int vs_entry_size, vs_total_size;
 
       vs_entry_size = (ilo->vs) ?
@@ -231,8 +235,8 @@ gen7_pipeline_common_pcb_alloc(struct ilo_3d_pipeline *p,
        * Push constant buffers are only allowed to take up at most the first
        * 16KB of the URB.  Split the space evenly for VS and FS.
        */
-      const int max_size =
-         (p->dev->gen == ILO_GEN(7.5) && p->dev->gt == 3) ? 32768 : 16384;
+      const int max_size = (ilo_dev_gen(p->dev) == ILO_GEN(7.5) &&
+            p->dev->gt == 3) ? 32768 : 16384;
       const int size = max_size / 2;
       int offset = 0;
 
@@ -241,7 +245,7 @@ gen7_pipeline_common_pcb_alloc(struct ilo_3d_pipeline *p,
 
       gen7_3DSTATE_PUSH_CONSTANT_ALLOC_PS(&p->cp->builder, offset, size);
 
-      if (p->dev->gen == ILO_GEN(7))
+      if (ilo_dev_gen(p->dev) == ILO_GEN(7))
          gen7_wa_pipe_control_cs_stall(p, true, true);
    }
 }
@@ -504,7 +508,8 @@ gen7_pipeline_wm(struct ilo_3d_pipeline *p,
       const int num_samplers = ilo->sampler[PIPE_SHADER_FRAGMENT].count;
       const bool dual_blend = ilo->blend->dual_blend;
 
-      if ((p->dev->gen == ILO_GEN(7) || p->dev->gen == ILO_GEN(7.5)) &&
+      if ((ilo_dev_gen(p->dev) == ILO_GEN(7) ||
+           ilo_dev_gen(p->dev) == ILO_GEN(7.5)) &&
           session->hw_ctx_changed)
          gen7_wa_pipe_control_ps_max_threads_stall(p);
 
@@ -659,7 +664,7 @@ gen7_rectlist_pcb_alloc(struct ilo_3d_pipeline *p,
     * 16KB of the URB.  Split the space evenly for VS and FS.
     */
    const int max_size =
-      (p->dev->gen == ILO_GEN(7.5) && p->dev->gt == 3) ? 32768 : 16384;
+      (ilo_dev_gen(p->dev) == ILO_GEN(7.5) && p->dev->gt == 3) ? 32768 : 16384;
    const int size = max_size / 2;
    int offset = 0;
 
@@ -678,7 +683,7 @@ gen7_rectlist_urb(struct ilo_3d_pipeline *p,
 {
    /* the first 16KB are reserved for VS and PS PCBs */
    const int offset =
-      (p->dev->gen == ILO_GEN(7.5) && p->dev->gt == 3) ? 32768 : 16384;
+      (ilo_dev_gen(p->dev) == ILO_GEN(7.5) && p->dev->gt == 3) ? 32768 : 16384;
 
    gen7_3DSTATE_URB_VS(&p->cp->builder, offset, p->dev->urb_size - offset,
          blitter->ve.count * 4 * sizeof(float));
index a2c3695cc4f03ce158cccb3ad44d102628b140f0..009780a1cd9ed64f8e6b8873056e81d492ed4297 100644 (file)
@@ -379,7 +379,8 @@ hiz_can_clear_zs(const struct ilo_blitter *blitter,
     */
    switch (tex->layout.format) {
    case PIPE_FORMAT_Z16_UNORM:
-      if (blitter->ilo->dev->gen == ILO_GEN(6) && tex->base.width0 % 16)
+      if (ilo_dev_gen(blitter->ilo->dev) == ILO_GEN(6) &&
+          tex->base.width0 % 16)
          return false;
       break;
    case PIPE_FORMAT_Z24_UNORM_S8_UINT:
index 404182ef5e1a72993920e3443eb8043ca04e626c..d4370bf4200d63860e6ca1bf6337918ad5641b87 100644 (file)
@@ -213,7 +213,7 @@ writer_decode_sf_viewport(const struct ilo_builder *builder,
                           enum ilo_builder_writer_type which,
                           const struct ilo_builder_item *item)
 {
-   if (builder->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(builder->dev) >= ILO_GEN(7))
       writer_decode_sf_clip_viewport_gen7(builder, which, item);
    else
       writer_decode_sf_viewport_gen6(builder, which, item);
@@ -453,7 +453,7 @@ writer_decode_surface(const struct ilo_builder *builder,
                       enum ilo_builder_writer_type which,
                       const struct ilo_builder_item *item)
 {
-   if (builder->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(builder->dev) >= ILO_GEN(7))
       writer_decode_surface_gen7(builder, which, item);
    else
       writer_decode_surface_gen6(builder, which, item);
index 41d9ea69956576392474b51c9ff6087bfa0d14a9..591730d8754bccb25a9a2c53b7b601b258c16fb7 100644 (file)
@@ -76,13 +76,21 @@ struct ilo_dev_info {
    bool has_timestamp;
    bool has_gen7_sol_reset;
 
-   int gen;
+   /* use ilo_dev_gen() */
+   int gen_opaque;
+
    int gt;
    int urb_size;
 };
 
 extern int ilo_debug;
 
+static inline int
+ilo_dev_gen(const struct ilo_dev_info *dev)
+{
+   return dev->gen_opaque;
+}
+
 /**
  * Print a message, for dumping or debugging.
  */
index ab23f6b005bedfe8c700d8193ee057e4c99d8725..d0d3be0221313de97a364e4e57aa9a90137bc88b 100644 (file)
@@ -705,8 +705,12 @@ ilo_format_supports_rt(const struct ilo_dev_info *dev,
 
    assert(!cap->rt_write_blending || cap->rt_write_blending >= cap->rt_write);
 
-   return util_format_is_pure_integer(format) ? (dev->gen >= cap->rt_write) :
-      (cap->rt_write_blending) ? (dev->gen >= cap->rt_write_blending) : false;
+   if (util_format_is_pure_integer(format))
+      return (ilo_dev_gen(dev) >= cap->rt_write);
+   else if (cap->rt_write_blending)
+      return (ilo_dev_gen(dev) >= cap->rt_write_blending);
+   else
+      return false;
 }
 
 static bool
@@ -722,8 +726,12 @@ ilo_format_supports_sampler(const struct ilo_dev_info *dev,
 
    assert(!cap->filtering || cap->filtering >= cap->sampling);
 
-   return util_format_is_pure_integer(format) ? (dev->gen >= cap->sampling) :
-      (cap->filtering) ? (dev->gen >= cap->filtering) : false;
+   if (util_format_is_pure_integer(format))
+      return (ilo_dev_gen(dev) >= cap->sampling);
+   else if (cap->filtering)
+      return (ilo_dev_gen(dev) >= cap->filtering);
+   else
+      return false;
 }
 
 static bool
@@ -734,7 +742,8 @@ ilo_format_supports_vb(const struct ilo_dev_info *dev,
    const struct ilo_vf_cap *cap = (idx >= 0 && idx < Elements(ilo_vf_caps)) ?
       &ilo_vf_caps[idx] : NULL;
 
-   return (cap && cap->vertex_element && dev->gen >= cap->vertex_element);
+   return (cap && cap->vertex_element &&
+         ilo_dev_gen(dev) >= cap->vertex_element);
 }
 
 static boolean
index dfa682d8efa7eba85cbbf553ebc08b65358a33d4..ebbec60838f736cdab9eab8121074b69dedad0d0 100644 (file)
@@ -93,7 +93,7 @@ ilo_translate_format(const struct ilo_dev_info *dev,
       }
       break;
    case PIPE_BIND_VERTEX_BUFFER:
-      if (dev->gen >= ILO_GEN(7.5))
+      if (ilo_dev_gen(dev) >= ILO_GEN(7.5))
          return ilo_translate_color_format(dev, format);
 
       /*
index 4c226fd8ab19759170368488ef5a0e6ada81fdd9..f3d1bb53d3e1a10f12cb7747ef4c73bdeedbf04c 100644 (file)
@@ -338,7 +338,7 @@ ilo_gpe_init_rasterizer(const struct ilo_dev_info *dev,
    ilo_gpe_init_rasterizer_clip(dev, state, &rasterizer->clip);
    ilo_gpe_init_rasterizer_sf(dev, state, &rasterizer->sf);
 
-   if (dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(dev) >= ILO_GEN(7))
       ilo_gpe_init_rasterizer_wm_gen7(dev, state, &rasterizer->wm);
    else
       ilo_gpe_init_rasterizer_wm_gen6(dev, state, &rasterizer->wm);
@@ -417,7 +417,7 @@ ilo_gpe_init_view_surface_null(const struct ilo_dev_info *dev,
                                unsigned depth, unsigned level,
                                struct ilo_view_surface *surf)
 {
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       ilo_gpe_init_view_surface_null_gen7(dev,
             width, height, depth, level, surf);
    }
@@ -436,7 +436,7 @@ ilo_gpe_init_view_surface_for_buffer(const struct ilo_dev_info *dev,
                                      bool is_rt, bool render_cache_rw,
                                      struct ilo_view_surface *surf)
 {
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       ilo_gpe_init_view_surface_for_buffer_gen7(dev, buf, offset, size,
             struct_size, elem_format, is_rt, render_cache_rw, surf);
    }
@@ -457,7 +457,7 @@ ilo_gpe_init_view_surface_for_texture(const struct ilo_dev_info *dev,
                                       bool is_rt,
                                       struct ilo_view_surface *surf)
 {
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       ilo_gpe_init_view_surface_for_texture_gen7(dev, tex, format,
             first_level, num_levels, first_layer, num_layers,
             is_rt, surf);
@@ -496,7 +496,7 @@ ilo_gpe_init_gs_cso(const struct ilo_dev_info *dev,
                     const struct ilo_shader_state *gs,
                     struct ilo_shader_cso *cso)
 {
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       ilo_gpe_init_gs_cso_gen7(dev, gs, cso);
    }
    else {
@@ -519,7 +519,7 @@ ilo_gpe_init_fs_cso(const struct ilo_dev_info *dev,
                     const struct ilo_shader_state *fs,
                     struct ilo_shader_cso *cso)
 {
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       ilo_gpe_init_fs_cso_gen7(dev, fs, cso);
    }
    else {
index 4dd5f13982a014dd49fbdfb28cbb9918eeca5a7b..c99802666700bad20ec5e8c290fb8b89879bb977 100644 (file)
@@ -354,7 +354,7 @@ ilo_gpe_init_vs_cso(const struct ilo_dev_info *dev,
    if (!vue_read_len)
       vue_read_len = 1;
 
-   switch (dev->gen) {
+   switch (ilo_dev_gen(dev)) {
    case ILO_GEN(6):
       /*
        * From the Sandy Bridge PRM, volume 1 part 1, page 22:
@@ -393,7 +393,7 @@ ilo_gpe_init_vs_cso(const struct ilo_dev_info *dev,
    dw5 = GEN6_VS_DW5_STATISTICS |
          GEN6_VS_DW5_VS_ENABLE;
 
-   if (dev->gen >= ILO_GEN(7.5))
+   if (ilo_dev_gen(dev) >= ILO_GEN(7.5))
       dw5 |= (max_threads - 1) << GEN75_VS_DW5_MAX_THREADS__SHIFT;
    else
       dw5 |= (max_threads - 1) << GEN6_VS_DW5_MAX_THREADS__SHIFT;
@@ -517,7 +517,7 @@ ilo_gpe_init_rasterizer_clip(const struct ilo_dev_info *dev,
 
    dw1 = GEN6_CLIP_DW1_STATISTICS;
 
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       /*
        * From the Ivy Bridge PRM, volume 2 part 1, page 219:
        *
@@ -626,7 +626,7 @@ ilo_gpe_init_rasterizer_sf(const struct ilo_dev_info *dev,
          GEN7_SF_DW1_VIEWPORT_ENABLE;
 
    /* XXX GEN6 path seems to work fine for GEN7 */
-   if (false && dev->gen >= ILO_GEN(7)) {
+   if (false && ilo_dev_gen(dev) >= ILO_GEN(7)) {
       /*
        * From the Ivy Bridge PRM, volume 2 part 1, page 258:
        *
@@ -740,7 +740,7 @@ ilo_gpe_init_rasterizer_sf(const struct ilo_dev_info *dev,
 
    dw2 |= line_width << GEN7_SF_DW2_LINE_WIDTH__SHIFT;
 
-   if (dev->gen >= ILO_GEN(7.5) && state->line_stipple_enable)
+   if (ilo_dev_gen(dev) >= ILO_GEN(7.5) && state->line_stipple_enable)
       dw2 |= GEN75_SF_DW2_LINE_STIPPLE_ENABLE;
 
    if (state->scissor)
@@ -1006,7 +1006,7 @@ zs_init_info(const struct ilo_dev_info *dev,
       info->surface_type = GEN6_SURFTYPE_2D;
    }
 
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       separate_stencil = true;
    }
    else {
@@ -1097,7 +1097,7 @@ zs_init_info(const struct ilo_dev_info *dev,
 
       info->stencil.tiling = s8_tex->layout.tiling;
 
-      if (dev->gen == ILO_GEN(6)) {
+      if (ilo_dev_gen(dev) == ILO_GEN(6)) {
          unsigned x, y;
 
          assert(s8_tex->layout.walk == ILO_LAYOUT_WALK_LOD);
@@ -1115,7 +1115,7 @@ zs_init_info(const struct ilo_dev_info *dev,
       info->hiz.tiling = INTEL_TILING_Y;
 
       /* offset to the level */
-      if (dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(dev) == ILO_GEN(6))
          info->hiz.offset = tex->layout.aux_offsets[level];
    }
 
@@ -1136,8 +1136,8 @@ ilo_gpe_init_zs_surface(const struct ilo_dev_info *dev,
                         unsigned first_layer, unsigned num_layers,
                         struct ilo_zs_surface *zs)
 {
-   const int max_2d_size = (dev->gen >= ILO_GEN(7)) ? 16384 : 8192;
-   const int max_array_size = (dev->gen >= ILO_GEN(7)) ? 2048 : 512;
+   const int max_2d_size = (ilo_dev_gen(dev) >= ILO_GEN(7)) ? 16384 : 8192;
+   const int max_array_size = (ilo_dev_gen(dev) >= ILO_GEN(7)) ? 2048 : 512;
    struct ilo_zs_surface_info info;
    uint32_t dw1, dw2, dw3, dw4, dw5, dw6;
 
@@ -1195,7 +1195,7 @@ ilo_gpe_init_zs_surface(const struct ilo_dev_info *dev,
       dw2 = 0;
    }
 
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       if (info.zs.bo)
          dw1 |= 1 << 28;
 
@@ -1260,7 +1260,7 @@ ilo_gpe_init_zs_surface(const struct ilo_dev_info *dev,
       zs->payload[6] = info.stencil.stride - 1;
       zs->payload[7] = info.stencil.offset;
 
-      if (dev->gen >= ILO_GEN(7.5))
+      if (ilo_dev_gen(dev) >= ILO_GEN(7.5))
          zs->payload[6] |= GEN75_STENCIL_DW1_STENCIL_BUFFER_ENABLE;
 
       /* do not increment reference count */
@@ -1326,7 +1326,7 @@ viewport_get_guardband(const struct ilo_dev_info *dev,
     * valid to the renderer, and those failing the XY clipping have a
     * better chance of passing the GB test.
     */
-   const int max_extent = (dev->gen >= ILO_GEN(7)) ? 32768 : 16384;
+   const int max_extent = (ilo_dev_gen(dev) >= ILO_GEN(7)) ? 32768 : 16384;
    const int half_len = 8192 / 2;
 
    /* make sure the guardband is within the valid range */
@@ -1514,7 +1514,7 @@ ilo_gpe_init_blend(const struct ilo_dev_info *dev,
       if (state->alpha_to_coverage) {
          cso->dw_alpha_mod |= 1 << 31;
 
-         if (dev->gen >= ILO_GEN(7))
+         if (ilo_dev_gen(dev) >= ILO_GEN(7))
             cso->dw_alpha_mod |= 1 << 29;
       }
 
@@ -2105,7 +2105,7 @@ ilo_gpe_init_sampler_cso(const struct ilo_dev_info *dev,
     * With Gallium interface, Base is always zero and
     * pipe_sampler_view::u.tex.first_level specifies SurfMinLod.
     */
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       const float scale = 256.0f;
 
       /* [-16.0, 16.0) in S4.8 */
@@ -2229,7 +2229,7 @@ ilo_gpe_init_sampler_cso(const struct ilo_dev_info *dev,
       assert(mip_filter == GEN6_MIPFILTER_NONE);
    }
 
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       dw0 = 1 << 28 |
             mip_filter << 20 |
             lod_bias << 1;
index 737454cd716534319ce86f34a8b77f38e7ad63c7..cff2bc743fdb5ffee9245fe4b84d32aec5c6cbd8 100644 (file)
@@ -38,8 +38,9 @@
 #include "ilo_shader.h"
 #include "ilo_gpe.h"
 
-#define ILO_GPE_VALID_GEN(dev, min_gen, max_gen) \
-   assert((dev)->gen >= ILO_GEN(min_gen) && (dev)->gen <= ILO_GEN(max_gen))
+#define ILO_GPE_VALID_GEN(dev, min_gen, max_gen)  \
+   assert(ilo_dev_gen(dev) >= ILO_GEN(min_gen) && \
+          ilo_dev_gen(dev) <= ILO_GEN(max_gen))
 
 /**
  * Translate winsys tiling to hardware tiling.
@@ -143,7 +144,7 @@ ilo_gpe_gen6_fill_3dstate_sf_raster(const struct ilo_dev_info *dev,
       payload[5] = 0;
    }
 
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       int format;
 
       /* separate stencil */
@@ -254,7 +255,7 @@ gen6_MI_STORE_DATA_IMM(struct ilo_builder *builder,
    assert(bo_offset % ((store_qword) ? 8 : 4) == 0);
 
    /* must use GGTT on GEN6 as in PIPE_CONTROL */
-   if (builder->dev->gen == ILO_GEN(6)) {
+   if (ilo_dev_gen(builder->dev) == ILO_GEN(6)) {
       dw0 |= GEN6_MI_STORE_DATA_IMM_DW0_USE_GGTT;
       reloc_flags |= INTEL_RELOC_GGTT;
    }
@@ -306,7 +307,7 @@ gen6_MI_STORE_REGISTER_MEM(struct ilo_builder *builder,
    assert(reg % 4 == 0 && bo_offset % 4 == 0);
 
    /* must use GGTT on GEN6 as in PIPE_CONTROL */
-   if (builder->dev->gen == ILO_GEN(6)) {
+   if (ilo_dev_gen(builder->dev) == ILO_GEN(6)) {
       dw0 |= GEN6_MI_STORE_REGISTER_MEM_DW0_USE_GGTT;
       reloc_flags |= INTEL_RELOC_GGTT;
    }
@@ -335,7 +336,7 @@ gen6_MI_REPORT_PERF_COUNT(struct ilo_builder *builder,
    assert(bo_offset % 64 == 0);
 
    /* must use GGTT on GEN6 as in PIPE_CONTROL */
-   if (builder->dev->gen == ILO_GEN(6)) {
+   if (ilo_dev_gen(builder->dev) == ILO_GEN(6)) {
       bo_offset |= GEN6_MI_REPORT_PERF_COUNT_DW1_USE_GGTT;
       reloc_flags |= INTEL_RELOC_GGTT;
    }
@@ -719,7 +720,7 @@ gen6_3DSTATE_VERTEX_BUFFERS(struct ilo_builder *builder,
       else
          dw[0] |= GEN6_VB_STATE_DW0_ACCESS_VERTEXDATA;
 
-      if (builder->dev->gen >= ILO_GEN(7))
+      if (ilo_dev_gen(builder->dev) >= ILO_GEN(7))
          dw[0] |= GEN7_VB_STATE_DW0_ADDR_MODIFIED;
 
       /* use null vb if there is no buffer or the stride is out of range */
@@ -909,7 +910,7 @@ gen6_3DSTATE_INDEX_BUFFER(struct ilo_builder *builder,
       return;
 
    /* this is moved to the new 3DSTATE_VF */
-   if (builder->dev->gen >= ILO_GEN(7.5))
+   if (ilo_dev_gen(builder->dev) >= ILO_GEN(7.5))
       assert(!enable_cut_index);
 
    switch (ib->hw_index_size) {
@@ -1426,7 +1427,7 @@ gen6_3DSTATE_DRAWING_RECTANGLE(struct ilo_builder *builder,
 
    ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
-   if (builder->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(builder->dev) >= ILO_GEN(7)) {
       rect_limit = 16383;
    }
    else {
@@ -1470,7 +1471,7 @@ zs_align_surface(const struct ilo_dev_info *dev,
 
    ILO_GPE_VALID_GEN(dev, 6, 7.5);
 
-   if (dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7)) {
       shift_w = 4;
       shift_h = 18;
       mask = 0x3fff;
@@ -1504,7 +1505,7 @@ gen6_3DSTATE_DEPTH_BUFFER(struct ilo_builder *builder,
 
    ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
-   dw0 = (builder->dev->gen >= ILO_GEN(7)) ?
+   dw0 = (ilo_dev_gen(builder->dev) >= ILO_GEN(7)) ?
       GEN7_RENDER_CMD(3D, 3DSTATE_DEPTH_BUFFER) :
       GEN6_RENDER_CMD(3D, 3DSTATE_DEPTH_BUFFER);
    dw0 |= (cmd_len - 2);
@@ -1583,7 +1584,7 @@ gen6_3DSTATE_LINE_STIPPLE(struct ilo_builder *builder,
    dw[0] = dw0;
    dw[1] = pattern;
 
-   if (builder->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(builder->dev) >= ILO_GEN(7)) {
       /* in U1.16 */
       inverse = (unsigned) (65536.0f / factor);
       dw[2] = inverse << 15 | factor;
@@ -1642,7 +1643,7 @@ gen6_3DSTATE_MULTISAMPLE(struct ilo_builder *builder,
                          const uint32_t *packed_sample_pos,
                          bool pixel_location_center)
 {
-   const uint8_t cmd_len = (builder->dev->gen >= ILO_GEN(7)) ? 4 : 3;
+   const uint8_t cmd_len = (ilo_dev_gen(builder->dev) >= ILO_GEN(7)) ? 4 : 3;
    const uint32_t dw0 = GEN6_RENDER_CMD(3D, 3DSTATE_MULTISAMPLE) |
                         (cmd_len - 2);
    uint32_t dw1, dw2, dw3, *dw;
@@ -1665,7 +1666,7 @@ gen6_3DSTATE_MULTISAMPLE(struct ilo_builder *builder,
       dw3 = 0;
       break;
    case 8:
-      assert(builder->dev->gen >= ILO_GEN(7));
+      assert(ilo_dev_gen(builder->dev) >= ILO_GEN(7));
       dw1 |= GEN7_MULTISAMPLE_DW1_NUMSAMPLES_8;
       dw2 = packed_sample_pos[0];
       dw3 = packed_sample_pos[1];
@@ -1682,7 +1683,7 @@ gen6_3DSTATE_MULTISAMPLE(struct ilo_builder *builder,
    dw[0] = dw0;
    dw[1] = dw1;
    dw[2] = dw2;
-   if (builder->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(builder->dev) >= ILO_GEN(7))
       dw[2] = dw3;
 }
 
@@ -1696,7 +1697,7 @@ gen6_3DSTATE_STENCIL_BUFFER(struct ilo_builder *builder,
 
    ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
-   dw0 = (builder->dev->gen >= ILO_GEN(7)) ?
+   dw0 = (ilo_dev_gen(builder->dev) >= ILO_GEN(7)) ?
       GEN7_RENDER_CMD(3D, 3DSTATE_STENCIL_BUFFER) :
       GEN6_RENDER_CMD(3D, 3DSTATE_STENCIL_BUFFER);
    dw0 |= (cmd_len - 2);
@@ -1724,7 +1725,7 @@ gen6_3DSTATE_HIER_DEPTH_BUFFER(struct ilo_builder *builder,
 
    ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
-   dw0 = (builder->dev->gen >= ILO_GEN(7)) ?
+   dw0 = (ilo_dev_gen(builder->dev) >= ILO_GEN(7)) ?
       GEN7_RENDER_CMD(3D, 3DSTATE_HIER_DEPTH_BUFFER) :
       GEN6_RENDER_CMD(3D, 3DSTATE_HIER_DEPTH_BUFFER);
    dw0 |= (cmd_len - 2);
@@ -1808,7 +1809,7 @@ gen6_PIPE_CONTROL(struct ilo_builder *builder,
                   GEN6_PIPE_CONTROL_WRITE_PS_DEPTH_COUNT |
                   GEN6_PIPE_CONTROL_WRITE_TIMESTAMP;
 
-      if (builder->dev->gen == ILO_GEN(6))
+      if (ilo_dev_gen(builder->dev) == ILO_GEN(6))
          bit_test |= GEN6_PIPE_CONTROL_NOTIFY_ENABLE;
 
       assert(dw1 & bit_test);
@@ -1836,7 +1837,7 @@ gen6_PIPE_CONTROL(struct ilo_builder *builder,
     * The kernel will add the mapping automatically (when write domain is
     * INTEL_DOMAIN_INSTRUCTION).
     */
-   if (builder->dev->gen == ILO_GEN(6) && bo) {
+   if (ilo_dev_gen(builder->dev) == ILO_GEN(6) && bo) {
       bo_offset |= GEN6_PIPE_CONTROL_DW2_USE_GGTT;
       reloc_flags |= INTEL_RELOC_GGTT;
    }
@@ -2270,7 +2271,7 @@ gen6_SURFACE_STATE(struct ilo_builder *builder,
                    bool for_render)
 {
    const int state_align = 32;
-   const int state_len = (builder->dev->gen >= ILO_GEN(7)) ? 8 : 6;
+   const int state_len = (ilo_dev_gen(builder->dev) >= ILO_GEN(7)) ? 8 : 6;
    uint32_t state_offset;
 
    ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
@@ -2409,7 +2410,7 @@ gen6_SAMPLER_STATE(struct ilo_builder *builder,
 
       dw[0] |= dw_filter;
 
-      if (builder->dev->gen >= ILO_GEN(7)) {
+      if (ilo_dev_gen(builder->dev) >= ILO_GEN(7)) {
          dw[3] |= dw_wrap;
       }
       else {
@@ -2441,7 +2442,7 @@ gen6_SAMPLER_BORDER_COLOR_STATE(struct ilo_builder *builder,
                                 const struct ilo_sampler_cso *sampler)
 {
    const int state_align = 32;
-   const int state_len = (builder->dev->gen >= ILO_GEN(7)) ? 4 : 12;
+   const int state_len = (ilo_dev_gen(builder->dev) >= ILO_GEN(7)) ? 4 : 12;
 
    ILO_GPE_VALID_GEN(builder->dev, 6, 7.5);
 
index f472df292c8a7bc3ec688371bcdb51e579c1a120..009a386132a665aa7b238d3d19213ea918d88807 100644 (file)
@@ -49,7 +49,7 @@ ilo_gpe_init_gs_cso_gen7(const struct ilo_dev_info *dev,
    /* in pairs */
    vue_read_len = (vue_read_len + 1) / 2;
 
-   switch (dev->gen) {
+   switch (ilo_dev_gen(dev)) {
    case ILO_GEN(7.5):
       max_threads = (dev->gt >= 2) ? 256 : 70;
       break;
@@ -143,7 +143,7 @@ ilo_gpe_init_fs_cso_gen7(const struct ilo_dev_info *dev,
    dw4 = GEN7_PS_DW4_POSOFFSET_NONE;
 
    /* see brwCreateContext() */
-   switch (dev->gen) {
+   switch (ilo_dev_gen(dev)) {
    case ILO_GEN(7.5):
       max_threads = (dev->gt == 3) ? 408 : (dev->gt == 2) ? 204 : 102;
       dw4 |= (max_threads - 1) << GEN75_PS_DW4_MAX_THREADS__SHIFT;
@@ -411,7 +411,7 @@ ilo_gpe_init_view_surface_for_buffer_gen7(const struct ilo_dev_info *dev,
    dw[6] = 0;
    dw[7] = 0;
 
-   if (dev->gen >= ILO_GEN(7.5)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7.5)) {
       dw[7] |= GEN_SHIFT32(GEN75_SCS_RED,   GEN75_SURFACE_DW7_SCS_R) |
                GEN_SHIFT32(GEN75_SCS_GREEN, GEN75_SURFACE_DW7_SCS_G) |
                GEN_SHIFT32(GEN75_SCS_BLUE,  GEN75_SURFACE_DW7_SCS_B) |
@@ -624,7 +624,7 @@ ilo_gpe_init_view_surface_for_texture_gen7(const struct ilo_dev_info *dev,
    dw[6] = 0;
    dw[7] = 0;
 
-   if (dev->gen >= ILO_GEN(7.5)) {
+   if (ilo_dev_gen(dev) >= ILO_GEN(7.5)) {
       dw[7] |= GEN_SHIFT32(GEN75_SCS_RED,   GEN75_SURFACE_DW7_SCS_R) |
                GEN_SHIFT32(GEN75_SCS_GREEN, GEN75_SURFACE_DW7_SCS_G) |
                GEN_SHIFT32(GEN75_SCS_BLUE,  GEN75_SURFACE_DW7_SCS_B) |
index 0970f6d4ba04492e0240ffe4b7d1acd7af8ad368..52f2fded4abcfa5b9400f68b6d4e7550aac797f5 100644 (file)
@@ -514,7 +514,7 @@ gen7_3DSTATE_PS(struct ilo_builder *builder,
       dw4 = GEN7_PS_DW4_8_PIXEL_DISPATCH;
 
       /* see brwCreateContext() */
-      switch (builder->dev->gen) {
+      switch (ilo_dev_gen(builder->dev)) {
       case ILO_GEN(7.5):
          max_threads = (builder->dev->gt == 3) ? 408 :
                        (builder->dev->gt == 2) ? 204 : 102;
@@ -730,7 +730,7 @@ gen7_3dstate_urb(struct ilo_builder *builder,
 
    switch (subop) {
    case GEN7_RENDER_OPCODE_3DSTATE_URB_VS:
-      switch (builder->dev->gen) {
+      switch (ilo_dev_gen(builder->dev)) {
       case ILO_GEN(7.5):
          max_entries = (builder->dev->gt >= 2) ? 1664 : 640;
          min_entries = (builder->dev->gt >= 2) ? 64 : 32;
@@ -756,7 +756,7 @@ gen7_3dstate_urb(struct ilo_builder *builder,
          assert(num_entries >= 138);
       break;
    case GEN7_RENDER_OPCODE_3DSTATE_URB_GS:
-      switch (builder->dev->gen) {
+      switch (ilo_dev_gen(builder->dev)) {
       case ILO_GEN(7.5):
          max_entries = (builder->dev->gt >= 2) ? 640 : 256;
          break;
index 070ee21510730bc19021b4a4bffc76813e259918..1643e7acf0e515ac0b9903db51c4e432f43e38cd 100644 (file)
@@ -214,9 +214,9 @@ layout_init_layer_height(struct ilo_layout *layout,
     * QPitch by 4.
     */
    layout->layer_height = params->h0 + params->h1 +
-      ((params->dev->gen >= ILO_GEN(7)) ? 12 : 11) * layout->align_j;
+      ((ilo_dev_gen(params->dev) >= ILO_GEN(7)) ? 12 : 11) * layout->align_j;
 
-   if (params->dev->gen == ILO_GEN(6) && templ->nr_samples > 1 &&
+   if (ilo_dev_gen(params->dev) == ILO_GEN(6) && templ->nr_samples > 1 &&
        layout->height0 % 4 == 1)
       layout->layer_height += 4;
 
@@ -395,7 +395,7 @@ layout_init_alignments(struct ilo_layout *layout,
       layout->align_i = layout->block_width;
       layout->align_j = layout->block_height;
    } else if (templ->bind & PIPE_BIND_DEPTH_STENCIL) {
-      if (params->dev->gen >= ILO_GEN(7)) {
+      if (ilo_dev_gen(params->dev) >= ILO_GEN(7)) {
          switch (layout->format) {
          case PIPE_FORMAT_Z16_UNORM:
             layout->align_i = 8;
@@ -424,7 +424,7 @@ layout_init_alignments(struct ilo_layout *layout,
       }
    } else {
       const bool valign_4 = (templ->nr_samples > 1) ||
-         (params->dev->gen >= ILO_GEN(7) &&
+         (ilo_dev_gen(params->dev) >= ILO_GEN(7) &&
           layout->tiling == INTEL_TILING_Y &&
           (templ->bind & PIPE_BIND_RENDER_TARGET));
 
@@ -518,7 +518,7 @@ layout_get_valid_tilings(const struct ilo_layout *layout,
        *
        *     "VALIGN_4 is not supported for surface format R32G32B32_FLOAT."
        */
-      if (params->dev->gen >= ILO_GEN(7) && layout->block_size == 12)
+      if (ilo_dev_gen(params->dev) >= ILO_GEN(7) && layout->block_size == 12)
          valid_tilings &= ~LAYOUT_TILING_Y;
    }
 
@@ -642,7 +642,7 @@ static void
 layout_init_walk(struct ilo_layout *layout,
                  struct ilo_layout_params *params)
 {
-   if (params->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(params->dev) >= ILO_GEN(7))
       layout_init_walk_gen7(layout, params);
    else
       layout_init_walk_gen6(layout, params);
@@ -668,7 +668,7 @@ layout_init_size_and_format(struct ilo_layout *layout,
     * GEN7+ requires separate stencil buffers.
     */
    if (templ->bind & PIPE_BIND_DEPTH_STENCIL) {
-      if (params->dev->gen >= ILO_GEN(7))
+      if (ilo_dev_gen(params->dev) >= ILO_GEN(7))
          require_separate_stencil = true;
       else
          require_separate_stencil = (layout->aux == ILO_LAYOUT_AUX_HIZ);
@@ -710,7 +710,7 @@ layout_want_mcs(struct ilo_layout *layout,
    bool want_mcs = false;
 
    /* MCS is for RT on GEN7+ */
-   if (params->dev->gen < ILO_GEN(7))
+   if (ilo_dev_gen(params->dev) < ILO_GEN(7))
       return false;
 
    if (templ->target != PIPE_TEXTURE_2D ||
@@ -790,7 +790,7 @@ layout_want_hiz(const struct ilo_layout *layout,
     * format is PIPE_FORMAT_Z32_FLOAT_S8X24_UINT, enabling and disabling HiZ
     * can result in incompatible formats.
     */
-   if (params->dev->gen == ILO_GEN(6) &&
+   if (ilo_dev_gen(params->dev) == ILO_GEN(6) &&
        templ->format == PIPE_FORMAT_Z32_FLOAT_S8X24_UINT &&
        templ->last_level)
       return false;
@@ -897,7 +897,7 @@ layout_calculate_bo_size(struct ilo_layout *layout,
        *      at the bottom of the surface. This is in addition to the padding
        *      required above."
        */
-      if (params->dev->gen >= ILO_GEN(7.5) &&
+      if (ilo_dev_gen(params->dev) >= ILO_GEN(7.5) &&
           (params->templ->bind & PIPE_BIND_SAMPLER_VIEW) &&
           layout->tiling == INTEL_TILING_NONE) {
          layout->bo_height +=
@@ -1014,7 +1014,7 @@ layout_calculate_hiz_size(struct ilo_layout *layout,
     *
     * We will put all LODs in a single bo with ILO_LAYOUT_WALK_LOD.
     */
-   if (params->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(params->dev) >= ILO_GEN(7))
       hz_walk = layout->walk;
    else
       hz_walk = ILO_LAYOUT_WALK_LOD;
@@ -1076,13 +1076,13 @@ layout_calculate_hiz_size(struct ilo_layout *layout,
          const unsigned h0 = align(params->h0, hz_align_j);
          const unsigned h1 = align(params->h1, hz_align_j);
          const unsigned htail =
-            ((params->dev->gen >= ILO_GEN(7)) ? 12 : 11) * hz_align_j;
+            ((ilo_dev_gen(params->dev) >= ILO_GEN(7)) ? 12 : 11) * hz_align_j;
          const unsigned hz_qpitch = h0 + h1 + htail;
 
          hz_width = align(layout->lods[0].slice_width, 16);
 
          hz_height = hz_qpitch * templ->array_size / 2;
-         if (params->dev->gen >= ILO_GEN(7))
+         if (ilo_dev_gen(params->dev) >= ILO_GEN(7))
             hz_height = align(hz_height, 8);
       }
       break;
index d312a4dffddfb59fa56d65dc8359b88acb7b2b9a..c6eadc3e381c77ece4425c86ada22dce8a91eccb 100644 (file)
@@ -267,7 +267,8 @@ tex_alloc_bos(struct ilo_texture *tex,
    case ILO_LAYOUT_AUX_HIZ:
       if (!tex_create_hiz(tex)) {
          /* Separate Stencil Buffer requires HiZ to be enabled */
-         if (is->dev.gen == ILO_GEN(6) && tex->layout.separate_stencil)
+         if (ilo_dev_gen(&is->dev) == ILO_GEN(6) &&
+             tex->layout.separate_stencil)
             return false;
       }
       break;
@@ -398,7 +399,7 @@ buf_create(struct pipe_screen *screen, const struct pipe_resource *templ)
       buf->bo_size = align(buf->bo_size, 256) + 16;
 
    if ((templ->bind & PIPE_BIND_VERTEX_BUFFER) &&
-        is->dev.gen < ILO_GEN(7.5)) {
+        ilo_dev_gen(&is->dev) < ILO_GEN(7.5)) {
       /*
        * As noted in ilo_translate_format(), we treat some 3-component formats
        * as 4-component formats to work around hardware limitations.  Imagine
index c56e0e5445602e9ce210f180dea84a601804823b..82fda2c0aebf95f20a6bff8d704e20540c2d3559 100644 (file)
@@ -310,18 +310,18 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap param)
        *  GEN6           8192x8192x512            2048x2048x2048
        *  GEN7         16384x16384x2048           2048x2048x2048
        */
-      return (is->dev.gen >= ILO_GEN(7)) ? 15 : 14;
+      return (ilo_dev_gen(&is->dev) >= ILO_GEN(7)) ? 15 : 14;
    case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
       return 12;
    case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
-      return (is->dev.gen >= ILO_GEN(7)) ? 15 : 14;
+      return (ilo_dev_gen(&is->dev) >= ILO_GEN(7)) ? 15 : 14;
    case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
       return false;
    case PIPE_CAP_BLEND_EQUATION_SEPARATE:
    case PIPE_CAP_SM3:
       return true;
    case PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS:
-      if (is->dev.gen >= ILO_GEN(7) && !is->dev.has_gen7_sol_reset)
+      if (ilo_dev_gen(&is->dev) >= ILO_GEN(7) && !is->dev.has_gen7_sol_reset)
          return 0;
       return ILO_MAX_SO_BUFFERS;
    case PIPE_CAP_PRIMITIVE_RESTART:
@@ -330,7 +330,7 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap param)
    case PIPE_CAP_INDEP_BLEND_FUNC:
       return true;
    case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS:
-      return (is->dev.gen >= ILO_GEN(7)) ? 2048 : 512;
+      return (ilo_dev_gen(&is->dev) >= ILO_GEN(7)) ? 2048 : 512;
    case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
    case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
    case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
@@ -363,7 +363,7 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap param)
    case PIPE_CAP_MAX_STREAM_OUTPUT_INTERLEAVED_COMPONENTS:
       return ILO_MAX_SO_BINDINGS;
    case PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME:
-      if (is->dev.gen >= ILO_GEN(7))
+      if (ilo_dev_gen(&is->dev) >= ILO_GEN(7))
          return is->dev.has_gen7_sol_reset;
       else
          return false; /* TODO */
@@ -690,18 +690,18 @@ init_dev(struct ilo_dev_info *dev, const struct intel_winsys_info *info)
     */
 
    if (gen_is_hsw(info->devid)) {
-      dev->gen = ILO_GEN(7.5);
+      dev->gen_opaque = ILO_GEN(7.5);
       dev->gt = gen_get_hsw_gt(info->devid);
       dev->urb_size = ((dev->gt == 3) ? 512 :
                        (dev->gt == 2) ? 256 : 128) * 1024;
    }
    else if (gen_is_ivb(info->devid) || gen_is_vlv(info->devid)) {
-      dev->gen = ILO_GEN(7);
+      dev->gen_opaque = ILO_GEN(7);
       dev->gt = (gen_is_ivb(info->devid)) ? gen_get_ivb_gt(info->devid) : 1;
       dev->urb_size = ((dev->gt == 2) ? 256 : 128) * 1024;
    }
    else if (gen_is_snb(info->devid)) {
-      dev->gen = ILO_GEN(6);
+      dev->gen_opaque = ILO_GEN(6);
       dev->gt = gen_get_snb_gt(info->devid);
       dev->urb_size = ((dev->gt == 2) ? 64 : 32) * 1024;
    }
index ee796da778827007c5674ea50380f662ecf43b5e..cbc0fa39aeb6f64bd6bd4a5ddd458e1c60571ebb 100644 (file)
@@ -828,8 +828,8 @@ ilo_shader_select_kernel_routing(struct ilo_shader_state *shader,
    int dst_len, dst_slot;
 
    /* we are constructing 3DSTATE_SBE here */
-   assert(shader->info.dev->gen >= ILO_GEN(6) &&
-          shader->info.dev->gen <= ILO_GEN(7.5));
+   assert(ilo_dev_gen(shader->info.dev) >= ILO_GEN(6) &&
+          ilo_dev_gen(shader->info.dev) <= ILO_GEN(7.5));
 
    assert(kernel);
 
index 50eda3da56a96a6ff9870e815943291a08ccda1e..f1186ff1c65ee7083d1056430a68d4cc400083da 100644 (file)
@@ -96,7 +96,7 @@ resource_get_transfer_method(struct pipe_resource *res,
       /* we may need to convert on the fly */
       if (tex->separate_s8 || tex->layout.format == PIPE_FORMAT_S8_UINT) {
          /* on GEN6, separate stencil is enabled only when HiZ is */
-         if (is->dev.gen >= ILO_GEN(7) ||
+         if (ilo_dev_gen(&is->dev) >= ILO_GEN(7) ||
              ilo_texture_can_enable_hiz(tex, transfer->level,
                 transfer->box.z, transfer->box.depth)) {
             m = ILO_TRANSFER_MAP_SW_ZS;
index c5bdf753b0b02ca06a932932f45f338c64108320..5d27dded8bf53b391f471b0cf4edaca5848081f0 100644 (file)
@@ -494,7 +494,7 @@ fs_lower_opcode_tgsi_direct(struct fs_compile_context *fcc,
       fs_lower_opcode_tgsi_in(fcc, inst->dst, dim, idx);
       break;
    case TOY_OPCODE_TGSI_CONST:
-      if (tc->dev->gen >= ILO_GEN(7))
+      if (ilo_dev_gen(tc->dev) >= ILO_GEN(7))
          fs_lower_opcode_tgsi_const_gen7(fcc, inst->dst, dim, inst->src[1]);
       else
          fs_lower_opcode_tgsi_const_gen6(fcc, inst->dst, dim, inst->src[1]);
@@ -801,7 +801,7 @@ fs_prepare_tgsi_sampling(struct toy_compiler *tc, const struct toy_inst *inst,
          msg_type = GEN7_MSG_SAMPLER_SAMPLE_D_C;
          ref_or_si = coords[ref_pos];
 
-         if (tc->dev->gen < ILO_GEN(7.5))
+         if (ilo_dev_gen(tc->dev) < ILO_GEN(7.5))
             tc_fail(tc, "TXD with shadow sampler not supported");
       }
       else {
@@ -1064,7 +1064,7 @@ fs_prepare_tgsi_sampling(struct toy_compiler *tc, const struct toy_inst *inst,
    }
 
    /* set up sampler parameters */
-   if (tc->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(tc->dev) >= ILO_GEN(7)) {
       msg_len = fs_add_sampler_params_gen7(tc, msg_type, base_mrf, param_size,
             coords, num_coords, bias_or_lod, ref_or_si, ddx, ddy, num_derivs);
    }
@@ -1849,7 +1849,7 @@ fs_setup(struct fs_compile_context *fcc,
    fcc->num_grf_per_vrf =
       (fcc->dispatch_mode == GEN6_WM_DW5_16_PIXEL_DISPATCH) ? 2 : 1;
 
-   if (fcc->tc.dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(fcc->tc.dev) >= ILO_GEN(7)) {
       fcc->last_free_grf -= 15;
       fcc->first_free_mrf = fcc->last_free_grf + 1;
       fcc->last_free_mrf = fcc->first_free_mrf + 14;
index 838a29e8d4b62541cd7f5885d16ce165e2cd53a9..7abdf70a453376bb8a365f20ddc7cd1d3b033aff 100644 (file)
@@ -244,7 +244,7 @@ vs_lower_opcode_tgsi_direct(struct vs_compile_context *vcc,
       vs_lower_opcode_tgsi_in(vcc, inst->dst, dim, idx);
       break;
    case TOY_OPCODE_TGSI_CONST:
-      if (tc->dev->gen >= ILO_GEN(7))
+      if (ilo_dev_gen(tc->dev) >= ILO_GEN(7))
          vs_lower_opcode_tgsi_const_gen7(vcc, inst->dst, dim, inst->src[1]);
       else
          vs_lower_opcode_tgsi_const_gen6(vcc, inst->dst, dim, inst->src[1]);
@@ -298,7 +298,7 @@ vs_lower_opcode_tgsi_indirect(struct vs_compile_context *vcc,
             indirect_idx = tsrc_from(tmp);
          }
 
-         if (tc->dev->gen >= ILO_GEN(7))
+         if (ilo_dev_gen(tc->dev) >= ILO_GEN(7))
             vs_lower_opcode_tgsi_const_gen7(vcc, inst->dst, dim, indirect_idx);
          else
             vs_lower_opcode_tgsi_const_gen6(vcc, inst->dst, dim, indirect_idx);
@@ -363,7 +363,7 @@ vs_add_sampler_params(struct toy_compiler *tc, int msg_type, int base_mrf,
       assert(num_coords <= 3);
       tc_MOV(tc, tdst_writemask(tdst_d(m[0]), coords_writemask), coords);
       tc_MOV(tc, tdst_writemask(tdst_d(m[0]), TOY_WRITEMASK_W), bias_or_lod);
-      if (tc->dev->gen >= ILO_GEN(7)) {
+      if (ilo_dev_gen(tc->dev) >= ILO_GEN(7)) {
          num_params = 4;
       }
       else {
@@ -417,7 +417,7 @@ vs_prepare_tgsi_sampling(struct toy_compiler *tc, const struct toy_inst *inst,
          msg_type = GEN7_MSG_SAMPLER_SAMPLE_D_C;
          ref_or_si = tsrc_swizzle1(coords, ref_pos);
 
-         if (tc->dev->gen < ILO_GEN(7.5))
+         if (ilo_dev_gen(tc->dev) < ILO_GEN(7.5))
             tc_fail(tc, "TXD with shadow sampler not supported");
       }
       else {
@@ -917,7 +917,7 @@ vs_write_vue(struct vs_compile_context *vcc)
    inst = tc_MOV(tc, header, r0);
    inst->mask_ctrl = GEN6_MASKCTRL_NOMASK;
 
-   if (tc->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(tc->dev) >= ILO_GEN(7)) {
       inst = tc_OR(tc, tdst_offset(header, 0, 5),
             tsrc_rect(tsrc_offset(r0, 0, 5), TOY_RECT_010),
             tsrc_rect(tsrc_imm_ud(0xff00), TOY_RECT_010));
@@ -955,7 +955,7 @@ vs_write_vue(struct vs_compile_context *vcc)
          eot = false;
       }
 
-      if (tc->dev->gen >= ILO_GEN(7)) {
+      if (ilo_dev_gen(tc->dev) >= ILO_GEN(7)) {
          /* do not forget about the header */
          msg_len = 1 + num_attrs;
       }
@@ -1273,7 +1273,7 @@ vs_setup(struct vs_compile_context *vcc,
 
    vcc->num_grf_per_vrf = 1;
 
-   if (vcc->tc.dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(vcc->tc.dev) >= ILO_GEN(7)) {
       vcc->last_free_grf -= 15;
       vcc->first_free_mrf = vcc->last_free_grf + 1;
       vcc->last_free_mrf = vcc->first_free_mrf + 14;
@@ -1299,7 +1299,7 @@ ilo_shader_compile_vs(const struct ilo_shader_state *state,
    if (!vs_setup(&vcc, state, variant))
       return NULL;
 
-   if (vcc.tc.dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(vcc.tc.dev) >= ILO_GEN(7)) {
       need_gs = false;
    }
    else {
index 751fccbf11beaf15161d161fb5527a628626f34b..fffa8bfdc03d7e22e03de76e12375ada43fc46cd 100644 (file)
@@ -188,7 +188,7 @@ disasm_inst_decode_dw0_gen6(struct disasm_inst *inst, uint32_t dw0)
    switch (inst->opcode) {
    case GEN6_OPCODE_IF:
       inst->has_jip = true;
-      inst->has_uip = (inst->dev->gen >= ILO_GEN(7));
+      inst->has_uip = (ilo_dev_gen(inst->dev) >= ILO_GEN(7));
       break;
    case GEN6_OPCODE_BREAK:
    case GEN6_OPCODE_CONT:
@@ -244,7 +244,8 @@ disasm_inst_decode_dw0_gen6(struct disasm_inst *inst, uint32_t dw0)
 static bool
 disasm_inst_jip_in_dw1_high_gen6(const struct disasm_inst *inst)
 {
-   return (inst->dev->gen == ILO_GEN(6) && inst->has_jip && !inst->has_uip);
+   return (ilo_dev_gen(inst->dev) == ILO_GEN(6) &&
+           inst->has_jip && !inst->has_uip);
 }
 
 static void
@@ -257,7 +258,7 @@ disasm_inst_decode_dw1_gen6(struct disasm_inst *inst, uint32_t dw1)
    inst->src1.base.file = GEN_EXTRACT(dw1, GEN6_INST_SRC1_FILE);
    inst->src1.base.type = GEN_EXTRACT(dw1, GEN6_INST_SRC1_TYPE);
 
-   if (inst->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(inst->dev) >= ILO_GEN(7))
       inst->nib_ctrl = (bool) (dw1 & GEN7_INST_NIBCTRL);
 
    if (disasm_inst_jip_in_dw1_high_gen6(inst)) {
@@ -303,7 +304,7 @@ disasm_inst_decode_dw2_dw3_gen6(struct disasm_inst *inst,
 {
    int count, i;
 
-   if (inst->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(inst->dev) >= ILO_GEN(7))
       inst->flag_reg = GEN_EXTRACT(dw2, GEN7_INST_FLAG_REG);
 
    inst->flag_subreg = GEN_EXTRACT(dw2, GEN6_INST_FLAG_SUBREG);
@@ -381,7 +382,7 @@ disasm_inst_decode_3src_dw1_gen6(struct disasm_inst *inst, uint32_t dw1)
 
    inst->flag_subreg = GEN_EXTRACT(dw1, GEN6_3SRC_FLAG_SUBREG);
 
-   if (inst->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(inst->dev) >= ILO_GEN(7)) {
       inst->nib_ctrl = (bool) (dw1 & GEN7_3SRC_NIBCTRL);
       inst->flag_reg = GEN_EXTRACT(dw1, GEN7_3SRC_FLAG_REG);
 
@@ -1162,7 +1163,7 @@ disasm_printer_add_mdesc_sampler(struct disasm_printer *printer,
 {
    int op, simd;
 
-   if (inst->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(inst->dev) >= ILO_GEN(7)) {
       op = GEN_EXTRACT(mdesc, GEN7_MSG_SAMPLER_OP);
       simd = GEN_EXTRACT(mdesc, GEN7_MSG_SAMPLER_SIMD);
    } {
@@ -1185,7 +1186,7 @@ disasm_printer_add_mdesc_urb(struct disasm_printer *printer,
    int offset;
    bool interleaved, complete, allocate, used;
 
-   if (inst->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(inst->dev) >= ILO_GEN(7)) {
       switch (GEN_EXTRACT(mdesc, GEN7_MSG_URB_OP)) {
       case GEN7_MSG_URB_WRITE_HWORD:   op = "write HWord";  break;
       case GEN7_MSG_URB_WRITE_OWORD:   op = "write OWord";  break;
@@ -1229,9 +1230,9 @@ disasm_printer_add_mdesc_dp_sampler(struct disasm_printer *printer,
                                     const struct disasm_inst *inst,
                                     uint32_t mdesc)
 {
-   const int op = (inst->dev->gen >= ILO_GEN(7)) ?
+   const int op = (ilo_dev_gen(inst->dev) >= ILO_GEN(7)) ?
       GEN_EXTRACT(mdesc, GEN7_MSG_DP_OP) : GEN_EXTRACT(mdesc, GEN6_MSG_DP_OP);
-   const bool write_commit = (inst->dev->gen == ILO_GEN(6)) ?
+   const bool write_commit = (ilo_dev_gen(inst->dev) == ILO_GEN(6)) ?
          (mdesc & GEN6_MSG_DP_SEND_WRITE_COMMIT) : 0;
 
    disasm_printer_add(printer, " (%d, %d, %d, %d)",
@@ -1245,12 +1246,12 @@ disasm_printer_add_mdesc_dp_rc(struct disasm_printer *printer,
                                const struct disasm_inst *inst,
                                uint32_t mdesc)
 {
-   const int op = (inst->dev->gen >= ILO_GEN(7)) ?
+   const int op = (ilo_dev_gen(inst->dev) >= ILO_GEN(7)) ?
       GEN_EXTRACT(mdesc, GEN7_MSG_DP_OP) : GEN_EXTRACT(mdesc, GEN6_MSG_DP_OP);
    const char *str;
    bool is_rt_write;
 
-   if (inst->dev->gen >= ILO_GEN(7.5)) {
+   if (ilo_dev_gen(inst->dev) >= ILO_GEN(7.5)) {
       switch (op) {
       case GEN75_MSG_DP_RC_MEDIA_BLOCK_READ:       str = "media block read";           break;
       case GEN75_MSG_DP_RC_MEMORY_FENCE:           str = "memory fence";               break;
@@ -1260,7 +1261,7 @@ disasm_printer_add_mdesc_dp_rc(struct disasm_printer *printer,
       }
 
       is_rt_write = (op == GEN75_MSG_DP_RC_RT_WRITE);
-   } else if (inst->dev->gen >= ILO_GEN(7)) {
+   } else if (ilo_dev_gen(inst->dev) >= ILO_GEN(7)) {
       switch (op) {
       case GEN7_MSG_DP_RC_MEDIA_BLOCK_READ:        str = "media block read";           break;
       case GEN7_MSG_DP_RC_TYPED_SURFACE_READ:      str = "typed surface read";         break;
@@ -1311,7 +1312,7 @@ disasm_printer_add_mdesc_dp_rc(struct disasm_printer *printer,
       disasm_printer_add(printer, " %s%s%s%s", str,
             (mdesc & GEN6_MSG_DP_SLOTGRP_HI) ? " Hi" : "",
             (mdesc & GEN6_MSG_DP_RT_LAST) ? " LastRT" : "",
-            (inst->dev->gen == ILO_GEN(6) &&
+            (ilo_dev_gen(inst->dev) == ILO_GEN(6) &&
              (mdesc & GEN6_MSG_DP_SEND_WRITE_COMMIT)) ? " WriteCommit" : "");
    }
 
index 2e96ef8ef381b2e6bc7a5fff01a3eef104cd69ae..ec6acadf579077c3be4b12953608f78e9d795f58 100644 (file)
@@ -168,7 +168,7 @@ tsrc_imm_mdesc_sampler(const struct toy_compiler *tc,
    assert(sampler_index < 16);
    assert(binding_table_index < 256);
 
-   if (tc->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(tc->dev) >= ILO_GEN(7)) {
       ctrl = simd_mode << 17 |
              message_type << 12 |
              sampler_index << 8 |
@@ -198,7 +198,7 @@ tsrc_imm_mdesc_data_port(const struct toy_compiler *tc,
 {
    uint32_t ctrl;
 
-   if (tc->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(tc->dev) >= ILO_GEN(7)) {
       assert(!send_write_commit_message);
       assert((message_specific_control & 0x3f00) == message_specific_control);
 
@@ -235,7 +235,7 @@ tsrc_imm_mdesc_data_port_scratch(const struct toy_compiler *tc,
    const bool header_present = true;
    uint32_t ctrl;
 
-   assert(tc->dev->gen >= ILO_GEN(7));
+   assert(ilo_dev_gen(tc->dev) >= ILO_GEN(7));
    assert(num_registers == 1 || num_registers == 2 || num_registers == 4);
 
    ctrl = 1 << 18 |
@@ -264,7 +264,7 @@ tsrc_imm_mdesc_urb(const struct toy_compiler *tc,
    const bool header_present = true;
    uint32_t ctrl;
 
-   if (tc->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(tc->dev) >= ILO_GEN(7)) {
       const bool per_slot_offset = false;
 
       ctrl = per_slot_offset << 16 |
index 6530c4b6947b6fa9402ac46a6b5023672b84eb59..b949d355a03a9c8e304e34f93a10d83f33542a5a 100644 (file)
@@ -335,7 +335,7 @@ patch_while_jip(struct toy_compiler *tc, struct toy_inst *inst)
       dist--;
    }
 
-   if (tc->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(tc->dev) >= ILO_GEN(7))
       inst->src[1] = tsrc_imm_w(dist * 2);
    else
       inst->dst = tdst_imm_w(dist * 2);
@@ -375,7 +375,7 @@ patch_if_else_jip(struct toy_compiler *tc, struct toy_inst *inst)
             /* the following instruction */
             jip = (dist + 1) * 2;
 
-            if (tc->dev->gen == ILO_GEN(6)) {
+            if (ilo_dev_gen(tc->dev) == ILO_GEN(6)) {
                uip = jip;
                break;
             }
@@ -388,7 +388,7 @@ patch_if_else_jip(struct toy_compiler *tc, struct toy_inst *inst)
       dist++;
    }
 
-   if (tc->dev->gen >= ILO_GEN(7)) {
+   if (ilo_dev_gen(tc->dev) >= ILO_GEN(7)) {
       /* what should the type be? */
       inst->dst.type = TOY_TYPE_D;
       inst->src[0].type = TOY_TYPE_D;
@@ -433,7 +433,7 @@ patch_endif_jip(struct toy_compiler *tc, struct toy_inst *inst)
    if (!found)
       dist = 1;
 
-   if (tc->dev->gen >= ILO_GEN(7))
+   if (ilo_dev_gen(tc->dev) >= ILO_GEN(7))
       inst->src[1] = tsrc_imm_w(dist * 2);
    else
       inst->dst = tdst_imm_w(dist * 2);
@@ -485,7 +485,8 @@ patch_break_continue_jip(struct toy_compiler *tc, struct toy_inst *inst)
          }
          else {
             /* the following instruction */
-            if (tc->dev->gen == ILO_GEN(6) && inst->opcode == GEN6_OPCODE_BREAK)
+            if (ilo_dev_gen(tc->dev) == ILO_GEN(6) &&
+                inst->opcode == GEN6_OPCODE_BREAK)
                dist++;
 
             uip = dist * 2;
@@ -546,7 +547,7 @@ toy_compiler_legalize_for_asm(struct toy_compiler *tc)
              *
              *     "INT DIV function does not support SIMD16."
              */
-            if (tc->dev->gen < ILO_GEN(7) ||
+            if (ilo_dev_gen(tc->dev) < ILO_GEN(7) ||
                 inst->cond_modifier == GEN6_MATH_INT_DIV_QUOTIENT ||
                 inst->cond_modifier == GEN6_MATH_INT_DIV_REMAINDER) {
                struct toy_inst *inst2;
@@ -566,7 +567,7 @@ toy_compiler_legalize_for_asm(struct toy_compiler *tc)
          }
          break;
       case GEN6_OPCODE_IF:
-         if (tc->dev->gen >= ILO_GEN(7) &&
+         if (ilo_dev_gen(tc->dev) >= ILO_GEN(7) &&
              inst->cond_modifier != GEN6_COND_NONE) {
             struct toy_inst *inst2;
 
@@ -590,7 +591,7 @@ toy_compiler_legalize_for_asm(struct toy_compiler *tc)
       }
 
       /* MRF to GRF */
-      if (tc->dev->gen >= ILO_GEN(7)) {
+      if (ilo_dev_gen(tc->dev) >= ILO_GEN(7)) {
          for (i = 0; i < Elements(inst->src); i++) {
             if (inst->src[i].file != TOY_FILE_MRF)
                continue;