From: Chia-I Wu Date: Fri, 12 Sep 2014 02:55:58 +0000 (+0800) Subject: ilo: use an accessor for dev->gen X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=56d2ebb019f38d727a41f8f4a8ebd4f1aeee19e0;p=mesa.git ilo: use an accessor for dev->gen It should enable us to do specialized builds by making the accessor return a constant. --- diff --git a/src/gallium/drivers/ilo/ilo_3d.c b/src/gallium/drivers/ilo/ilo_3d.c index 484823ee820..413d15a9cbe 100644 --- a/src/gallium/drivers/ilo/ilo_3d.c +++ b/src/gallium/drivers/ilo/ilo_3d.c @@ -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"); } diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline.c b/src/gallium/drivers/ilo/ilo_3d_pipeline.c index 26d3ec3e327..bbac8ce4278 100644 --- a/src/gallium/drivers/ilo/ilo_3d_pipeline.c +++ b/src/gallium/drivers/ilo/ilo_3d_pipeline.c @@ -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); } diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c index 4046e63655b..bf07ce7468e 100644 --- a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c +++ b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c @@ -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); diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c index e9f98fdeea1..c657ebbdf9f 100644 --- a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c +++ b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c @@ -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)); diff --git a/src/gallium/drivers/ilo/ilo_blitter_rectlist.c b/src/gallium/drivers/ilo/ilo_blitter_rectlist.c index a2c3695cc4f..009780a1cd9 100644 --- a/src/gallium/drivers/ilo/ilo_blitter_rectlist.c +++ b/src/gallium/drivers/ilo/ilo_blitter_rectlist.c @@ -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: diff --git a/src/gallium/drivers/ilo/ilo_builder_decode.c b/src/gallium/drivers/ilo/ilo_builder_decode.c index 404182ef5e1..d4370bf4200 100644 --- a/src/gallium/drivers/ilo/ilo_builder_decode.c +++ b/src/gallium/drivers/ilo/ilo_builder_decode.c @@ -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); diff --git a/src/gallium/drivers/ilo/ilo_common.h b/src/gallium/drivers/ilo/ilo_common.h index 41d9ea69956..591730d8754 100644 --- a/src/gallium/drivers/ilo/ilo_common.h +++ b/src/gallium/drivers/ilo/ilo_common.h @@ -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. */ diff --git a/src/gallium/drivers/ilo/ilo_format.c b/src/gallium/drivers/ilo/ilo_format.c index ab23f6b005b..d0d3be02213 100644 --- a/src/gallium/drivers/ilo/ilo_format.c +++ b/src/gallium/drivers/ilo/ilo_format.c @@ -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 diff --git a/src/gallium/drivers/ilo/ilo_format.h b/src/gallium/drivers/ilo/ilo_format.h index dfa682d8efa..ebbec60838f 100644 --- a/src/gallium/drivers/ilo/ilo_format.h +++ b/src/gallium/drivers/ilo/ilo_format.h @@ -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); /* diff --git a/src/gallium/drivers/ilo/ilo_gpe.h b/src/gallium/drivers/ilo/ilo_gpe.h index 4c226fd8ab1..f3d1bb53d3e 100644 --- a/src/gallium/drivers/ilo/ilo_gpe.h +++ b/src/gallium/drivers/ilo/ilo_gpe.h @@ -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 { diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen6.c b/src/gallium/drivers/ilo/ilo_gpe_gen6.c index 4dd5f13982a..c9980266670 100644 --- a/src/gallium/drivers/ilo/ilo_gpe_gen6.c +++ b/src/gallium/drivers/ilo/ilo_gpe_gen6.c @@ -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; diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen6.h b/src/gallium/drivers/ilo/ilo_gpe_gen6.h index 737454cd716..cff2bc743fd 100644 --- a/src/gallium/drivers/ilo/ilo_gpe_gen6.h +++ b/src/gallium/drivers/ilo/ilo_gpe_gen6.h @@ -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); diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen7.c b/src/gallium/drivers/ilo/ilo_gpe_gen7.c index f472df292c8..009a386132a 100644 --- a/src/gallium/drivers/ilo/ilo_gpe_gen7.c +++ b/src/gallium/drivers/ilo/ilo_gpe_gen7.c @@ -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) | diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen7.h b/src/gallium/drivers/ilo/ilo_gpe_gen7.h index 0970f6d4ba0..52f2fded4ab 100644 --- a/src/gallium/drivers/ilo/ilo_gpe_gen7.h +++ b/src/gallium/drivers/ilo/ilo_gpe_gen7.h @@ -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; diff --git a/src/gallium/drivers/ilo/ilo_layout.c b/src/gallium/drivers/ilo/ilo_layout.c index 070ee215107..1643e7acf0e 100644 --- a/src/gallium/drivers/ilo/ilo_layout.c +++ b/src/gallium/drivers/ilo/ilo_layout.c @@ -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; diff --git a/src/gallium/drivers/ilo/ilo_resource.c b/src/gallium/drivers/ilo/ilo_resource.c index d312a4dffdd..c6eadc3e381 100644 --- a/src/gallium/drivers/ilo/ilo_resource.c +++ b/src/gallium/drivers/ilo/ilo_resource.c @@ -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 diff --git a/src/gallium/drivers/ilo/ilo_screen.c b/src/gallium/drivers/ilo/ilo_screen.c index c56e0e54456..82fda2c0aeb 100644 --- a/src/gallium/drivers/ilo/ilo_screen.c +++ b/src/gallium/drivers/ilo/ilo_screen.c @@ -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; } diff --git a/src/gallium/drivers/ilo/ilo_shader.c b/src/gallium/drivers/ilo/ilo_shader.c index ee796da7788..cbc0fa39aeb 100644 --- a/src/gallium/drivers/ilo/ilo_shader.c +++ b/src/gallium/drivers/ilo/ilo_shader.c @@ -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); diff --git a/src/gallium/drivers/ilo/ilo_transfer.c b/src/gallium/drivers/ilo/ilo_transfer.c index 50eda3da56a..f1186ff1c65 100644 --- a/src/gallium/drivers/ilo/ilo_transfer.c +++ b/src/gallium/drivers/ilo/ilo_transfer.c @@ -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; diff --git a/src/gallium/drivers/ilo/shader/ilo_shader_fs.c b/src/gallium/drivers/ilo/shader/ilo_shader_fs.c index c5bdf753b0b..5d27dded8bf 100644 --- a/src/gallium/drivers/ilo/shader/ilo_shader_fs.c +++ b/src/gallium/drivers/ilo/shader/ilo_shader_fs.c @@ -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; diff --git a/src/gallium/drivers/ilo/shader/ilo_shader_vs.c b/src/gallium/drivers/ilo/shader/ilo_shader_vs.c index 838a29e8d4b..7abdf70a453 100644 --- a/src/gallium/drivers/ilo/shader/ilo_shader_vs.c +++ b/src/gallium/drivers/ilo/shader/ilo_shader_vs.c @@ -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 { diff --git a/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c b/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c index 751fccbf11b..fffa8bfdc03 100644 --- a/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c +++ b/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c @@ -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" : ""); } diff --git a/src/gallium/drivers/ilo/shader/toy_helpers.h b/src/gallium/drivers/ilo/shader/toy_helpers.h index 2e96ef8ef38..ec6acadf579 100644 --- a/src/gallium/drivers/ilo/shader/toy_helpers.h +++ b/src/gallium/drivers/ilo/shader/toy_helpers.h @@ -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 | diff --git a/src/gallium/drivers/ilo/shader/toy_legalize.c b/src/gallium/drivers/ilo/shader/toy_legalize.c index 6530c4b6947..b949d355a03 100644 --- a/src/gallium/drivers/ilo/shader/toy_legalize.c +++ b/src/gallium/drivers/ilo/shader/toy_legalize.c @@ -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;