Lines Matching refs:engine
803 static bool validate_cmds_sorted(const struct intel_engine_cs *engine, in validate_cmds_sorted() argument
824 drm_err(&engine->i915->drm, in validate_cmds_sorted()
827 engine->name, engine->id, in validate_cmds_sorted()
839 static bool check_sorted(const struct intel_engine_cs *engine, in check_sorted() argument
851 drm_err(&engine->i915->drm, in check_sorted()
854 engine->name, engine->id, in check_sorted()
865 static bool validate_regs_sorted(struct intel_engine_cs *engine) in validate_regs_sorted() argument
870 for (i = 0; i < engine->reg_table_count; i++) { in validate_regs_sorted()
871 table = &engine->reg_tables[i]; in validate_regs_sorted()
872 if (!check_sorted(engine, table->regs, table->num_regs)) in validate_regs_sorted()
907 static int init_hash_table(struct intel_engine_cs *engine, in init_hash_table() argument
913 hash_init(engine->cmd_hash); in init_hash_table()
927 hash_add(engine->cmd_hash, &desc_node->node, in init_hash_table()
935 static void fini_hash_table(struct intel_engine_cs *engine) in fini_hash_table() argument
941 hash_for_each_safe(engine->cmd_hash, i, tmp, desc_node, node) { in fini_hash_table()
955 int intel_engine_init_cmd_parser(struct intel_engine_cs *engine) in intel_engine_init_cmd_parser() argument
961 if (GRAPHICS_VER(engine->i915) != 7 && !(GRAPHICS_VER(engine->i915) == 9 && in intel_engine_init_cmd_parser()
962 engine->class == COPY_ENGINE_CLASS)) in intel_engine_init_cmd_parser()
965 switch (engine->class) { in intel_engine_init_cmd_parser()
967 if (IS_HASWELL(engine->i915)) { in intel_engine_init_cmd_parser()
976 if (IS_HASWELL(engine->i915)) { in intel_engine_init_cmd_parser()
977 engine->reg_tables = hsw_render_reg_tables; in intel_engine_init_cmd_parser()
978 engine->reg_table_count = ARRAY_SIZE(hsw_render_reg_tables); in intel_engine_init_cmd_parser()
980 engine->reg_tables = ivb_render_reg_tables; in intel_engine_init_cmd_parser()
981 engine->reg_table_count = ARRAY_SIZE(ivb_render_reg_tables); in intel_engine_init_cmd_parser()
983 engine->get_cmd_length_mask = gen7_render_get_cmd_length_mask; in intel_engine_init_cmd_parser()
988 engine->get_cmd_length_mask = gen7_bsd_get_cmd_length_mask; in intel_engine_init_cmd_parser()
991 engine->get_cmd_length_mask = gen7_blt_get_cmd_length_mask; in intel_engine_init_cmd_parser()
992 if (GRAPHICS_VER(engine->i915) == 9) { in intel_engine_init_cmd_parser()
995 engine->get_cmd_length_mask = in intel_engine_init_cmd_parser()
999 engine->flags |= I915_ENGINE_REQUIRES_CMD_PARSER; in intel_engine_init_cmd_parser()
1000 } else if (IS_HASWELL(engine->i915)) { in intel_engine_init_cmd_parser()
1008 if (GRAPHICS_VER(engine->i915) == 9) { in intel_engine_init_cmd_parser()
1009 engine->reg_tables = gen9_blt_reg_tables; in intel_engine_init_cmd_parser()
1010 engine->reg_table_count = in intel_engine_init_cmd_parser()
1012 } else if (IS_HASWELL(engine->i915)) { in intel_engine_init_cmd_parser()
1013 engine->reg_tables = hsw_blt_reg_tables; in intel_engine_init_cmd_parser()
1014 engine->reg_table_count = ARRAY_SIZE(hsw_blt_reg_tables); in intel_engine_init_cmd_parser()
1016 engine->reg_tables = ivb_blt_reg_tables; in intel_engine_init_cmd_parser()
1017 engine->reg_table_count = ARRAY_SIZE(ivb_blt_reg_tables); in intel_engine_init_cmd_parser()
1024 engine->get_cmd_length_mask = gen7_bsd_get_cmd_length_mask; in intel_engine_init_cmd_parser()
1027 MISSING_CASE(engine->class); in intel_engine_init_cmd_parser()
1031 if (!validate_cmds_sorted(engine, cmd_tables, cmd_table_count)) { in intel_engine_init_cmd_parser()
1032 drm_err(&engine->i915->drm, in intel_engine_init_cmd_parser()
1034 engine->name); in intel_engine_init_cmd_parser()
1037 if (!validate_regs_sorted(engine)) { in intel_engine_init_cmd_parser()
1038 drm_err(&engine->i915->drm, in intel_engine_init_cmd_parser()
1039 "%s: registers are not sorted\n", engine->name); in intel_engine_init_cmd_parser()
1043 ret = init_hash_table(engine, cmd_tables, cmd_table_count); in intel_engine_init_cmd_parser()
1045 drm_err(&engine->i915->drm, in intel_engine_init_cmd_parser()
1046 "%s: initialised failed!\n", engine->name); in intel_engine_init_cmd_parser()
1047 fini_hash_table(engine); in intel_engine_init_cmd_parser()
1051 engine->flags |= I915_ENGINE_USING_CMD_PARSER; in intel_engine_init_cmd_parser()
1054 if (intel_engine_requires_cmd_parser(engine) && in intel_engine_init_cmd_parser()
1055 !intel_engine_using_cmd_parser(engine)) in intel_engine_init_cmd_parser()
1068 void intel_engine_cleanup_cmd_parser(struct intel_engine_cs *engine) in intel_engine_cleanup_cmd_parser() argument
1070 if (!intel_engine_using_cmd_parser(engine)) in intel_engine_cleanup_cmd_parser()
1073 fini_hash_table(engine); in intel_engine_cleanup_cmd_parser()
1077 find_cmd_in_table(struct intel_engine_cs *engine, in find_cmd_in_table() argument
1082 hash_for_each_possible(engine->cmd_hash, desc_node, node, in find_cmd_in_table()
1101 find_cmd(struct intel_engine_cs *engine, in find_cmd() argument
1111 desc = find_cmd_in_table(engine, cmd_header); in find_cmd()
1115 mask = engine->get_cmd_length_mask(cmd_header); in find_cmd()
1144 find_reg(const struct intel_engine_cs *engine, u32 addr) in find_reg() argument
1146 const struct drm_i915_reg_table *table = engine->reg_tables; in find_reg()
1148 int count = engine->reg_table_count; in find_reg()
1242 static bool check_cmd(const struct intel_engine_cs *engine, in check_cmd() argument
1267 find_reg(engine, reg_addr); in check_cmd()
1271 reg_addr, *cmd, engine->name); in check_cmd()
1324 *cmd, engine->name); in check_cmd()
1336 dword, engine->name); in check_cmd()
1440 int intel_engine_cmd_parser(struct intel_engine_cs *engine, in intel_engine_cmd_parser() argument
1489 desc = find_cmd(engine, *cmd, desc, &default_desc); in intel_engine_cmd_parser()
1510 if (!check_cmd(engine, desc, cmd, length)) { in intel_engine_cmd_parser()
1559 if (IS_HASWELL(engine->i915)) in intel_engine_cmd_parser()
1562 GEM_BUG_ON(!IS_GRAPHICS_VER(engine->i915, 6, 7)); in intel_engine_cmd_parser()
1591 struct intel_engine_cs *engine; in i915_cmd_parser_get_version() local
1595 for_each_uabi_engine(engine, dev_priv) { in i915_cmd_parser_get_version()
1596 if (intel_engine_using_cmd_parser(engine)) { in i915_cmd_parser_get_version()