mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 18:28:12 +02:00
ilo: use ilo_dev_info in toy compiler
We need only dev->gen, but it makes sense to expose other information to the compiler.
This commit is contained in:
parent
51d749e7e2
commit
bef98f9c3a
10 changed files with 33 additions and 33 deletions
|
|
@ -327,8 +327,8 @@ ilo_shader_state_create(const struct ilo_context *ilo,
|
|||
if (!state)
|
||||
return NULL;
|
||||
|
||||
state->info.dev = ilo->dev;
|
||||
state->info.type = type;
|
||||
state->info.gen = ilo->dev->gen;
|
||||
|
||||
if (type == PIPE_SHADER_COMPUTE) {
|
||||
const struct pipe_compute_state *c =
|
||||
|
|
|
|||
|
|
@ -126,8 +126,8 @@ struct ilo_shader {
|
|||
* Information about a shader state.
|
||||
*/
|
||||
struct ilo_shader_info {
|
||||
const struct ilo_dev_info *dev;
|
||||
int type;
|
||||
int gen;
|
||||
|
||||
const struct tgsi_token *tokens;
|
||||
|
||||
|
|
|
|||
|
|
@ -400,7 +400,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->gen >= ILO_GEN(7))
|
||||
if (tc->dev->gen >= 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]);
|
||||
|
|
@ -921,7 +921,7 @@ fs_prepare_tgsi_sampling(struct toy_compiler *tc, const struct toy_inst *inst,
|
|||
}
|
||||
|
||||
/* set up sampler parameters */
|
||||
if (tc->gen >= ILO_GEN(7)) {
|
||||
if (tc->dev->gen >= 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);
|
||||
}
|
||||
|
|
@ -1607,7 +1607,7 @@ fs_setup(struct fs_compile_context *fcc,
|
|||
|
||||
fcc->variant = variant;
|
||||
|
||||
toy_compiler_init(&fcc->tc, state->info.gen);
|
||||
toy_compiler_init(&fcc->tc, state->info.dev);
|
||||
|
||||
fcc->dispatch_mode = GEN6_WM_8_DISPATCH_ENABLE;
|
||||
|
||||
|
|
@ -1654,7 +1654,7 @@ fs_setup(struct fs_compile_context *fcc,
|
|||
fcc->num_grf_per_vrf =
|
||||
(fcc->dispatch_mode == GEN6_WM_16_DISPATCH_ENABLE) ? 2 : 1;
|
||||
|
||||
if (fcc->tc.gen >= ILO_GEN(7)) {
|
||||
if (fcc->tc.dev->gen >= 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;
|
||||
|
|
|
|||
|
|
@ -1248,7 +1248,7 @@ gs_setup(struct gs_compile_context *gcc,
|
|||
gcc->variant = variant;
|
||||
gcc->so_info = &state->info.stream_output;
|
||||
|
||||
toy_compiler_init(&gcc->tc, state->info.gen);
|
||||
toy_compiler_init(&gcc->tc, state->info.dev);
|
||||
|
||||
gcc->write_so = (state->info.stream_output.num_outputs > 0);
|
||||
gcc->write_vue = !gcc->variant->u.gs.rasterizer_discard;
|
||||
|
|
|
|||
|
|
@ -215,7 +215,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->gen >= ILO_GEN(7))
|
||||
if (tc->dev->gen >= 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]);
|
||||
|
|
@ -269,7 +269,7 @@ vs_lower_opcode_tgsi_indirect(struct vs_compile_context *vcc,
|
|||
indirect_idx = tsrc_from(tmp);
|
||||
}
|
||||
|
||||
if (tc->gen >= ILO_GEN(7))
|
||||
if (tc->dev->gen >= 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);
|
||||
|
|
@ -334,7 +334,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->gen >= ILO_GEN(7)) {
|
||||
if (tc->dev->gen >= ILO_GEN(7)) {
|
||||
num_params = 4;
|
||||
}
|
||||
else {
|
||||
|
|
@ -876,7 +876,7 @@ vs_write_vue(struct vs_compile_context *vcc)
|
|||
inst = tc_MOV(tc, header, r0);
|
||||
inst->mask_ctrl = BRW_MASK_DISABLE;
|
||||
|
||||
if (tc->gen >= ILO_GEN(7)) {
|
||||
if (tc->dev->gen >= 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));
|
||||
|
|
@ -914,7 +914,7 @@ vs_write_vue(struct vs_compile_context *vcc)
|
|||
eot = false;
|
||||
}
|
||||
|
||||
if (tc->gen >= ILO_GEN(7)) {
|
||||
if (tc->dev->gen >= ILO_GEN(7)) {
|
||||
/* do not forget about the header */
|
||||
msg_len = 1 + num_attrs;
|
||||
}
|
||||
|
|
@ -1162,7 +1162,7 @@ vs_setup(struct vs_compile_context *vcc,
|
|||
|
||||
vcc->variant = variant;
|
||||
|
||||
toy_compiler_init(&vcc->tc, state->info.gen);
|
||||
toy_compiler_init(&vcc->tc, state->info.dev);
|
||||
vcc->tc.templ.access_mode = BRW_ALIGN_16;
|
||||
vcc->tc.templ.exec_size = BRW_EXECUTE_8;
|
||||
vcc->tc.rect_linear_width = 4;
|
||||
|
|
@ -1198,7 +1198,7 @@ vs_setup(struct vs_compile_context *vcc,
|
|||
|
||||
vcc->num_grf_per_vrf = 1;
|
||||
|
||||
if (vcc->tc.gen >= ILO_GEN(7)) {
|
||||
if (vcc->tc.dev->gen >= 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;
|
||||
|
|
@ -1224,7 +1224,7 @@ ilo_shader_compile_vs(const struct ilo_shader_state *state,
|
|||
if (!vs_setup(&vcc, state, variant))
|
||||
return NULL;
|
||||
|
||||
if (vcc.tc.gen >= ILO_GEN(7)) {
|
||||
if (vcc.tc.dev->gen >= ILO_GEN(7)) {
|
||||
need_gs = false;
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -534,11 +534,11 @@ tc_init_inst_templ(struct toy_compiler *tc)
|
|||
* Initialize the toy compiler.
|
||||
*/
|
||||
void
|
||||
toy_compiler_init(struct toy_compiler *tc, int gen)
|
||||
toy_compiler_init(struct toy_compiler *tc, const struct ilo_dev_info *dev)
|
||||
{
|
||||
memset(tc, 0, sizeof(*tc));
|
||||
|
||||
tc->gen = gen;
|
||||
tc->dev = dev;
|
||||
|
||||
tc_init_inst_templ(tc);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@
|
|||
#ifndef TOY_COMPILER_H
|
||||
#define TOY_COMPILER_H
|
||||
|
||||
#include "util/u_slab.h"
|
||||
#include "brw_defines.h"
|
||||
|
||||
#include "util/u_slab.h"
|
||||
#include "ilo_common.h"
|
||||
#include "toy_compiler_reg.h"
|
||||
|
||||
|
|
@ -138,7 +138,7 @@ struct toy_inst {
|
|||
* Toy compiler.
|
||||
*/
|
||||
struct toy_compiler {
|
||||
int gen;
|
||||
const struct ilo_dev_info *dev;
|
||||
|
||||
struct toy_inst templ;
|
||||
struct util_slab_mempool mempool;
|
||||
|
|
@ -456,7 +456,7 @@ tc_fail(struct toy_compiler *tc, const char *reason)
|
|||
}
|
||||
|
||||
void
|
||||
toy_compiler_init(struct toy_compiler *tc, int gen);
|
||||
toy_compiler_init(struct toy_compiler *tc, const struct ilo_dev_info *dev);
|
||||
|
||||
void
|
||||
toy_compiler_cleanup(struct toy_compiler *tc);
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ toy_compiler_disassemble(struct toy_compiler *tc, const void *kernel, int size)
|
|||
}
|
||||
|
||||
brw_disasm(stderr, (struct brw_instruction *) &instructions[i],
|
||||
ILO_GEN_GET_MAJOR(tc->gen));
|
||||
ILO_GEN_GET_MAJOR(tc->dev->gen));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ tsrc_imm_mdesc_sampler(const struct toy_compiler *tc,
|
|||
assert(sampler_index < 16);
|
||||
assert(binding_table_index < 256);
|
||||
|
||||
if (tc->gen >= ILO_GEN(7)) {
|
||||
if (tc->dev->gen >= 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->gen >= ILO_GEN(7)) {
|
||||
if (tc->dev->gen >= 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->gen >= ILO_GEN(7));
|
||||
assert(tc->dev->gen >= 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->gen >= ILO_GEN(7)) {
|
||||
if (tc->dev->gen >= ILO_GEN(7)) {
|
||||
const bool per_slot_offset = false;
|
||||
|
||||
ctrl = per_slot_offset << 16 |
|
||||
|
|
|
|||
|
|
@ -335,7 +335,7 @@ patch_while_jip(struct toy_compiler *tc, struct toy_inst *inst)
|
|||
dist--;
|
||||
}
|
||||
|
||||
if (tc->gen >= ILO_GEN(7))
|
||||
if (tc->dev->gen >= 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->gen == ILO_GEN(6)) {
|
||||
if (tc->dev->gen == 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->gen >= ILO_GEN(7)) {
|
||||
if (tc->dev->gen >= 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->gen >= ILO_GEN(7))
|
||||
if (tc->dev->gen >= ILO_GEN(7))
|
||||
inst->src[1] = tsrc_imm_w(dist * 2);
|
||||
else
|
||||
inst->dst = tdst_imm_w(dist * 2);
|
||||
|
|
@ -485,7 +485,7 @@ patch_break_continue_jip(struct toy_compiler *tc, struct toy_inst *inst)
|
|||
}
|
||||
else {
|
||||
/* the following instruction */
|
||||
if (tc->gen == ILO_GEN(6) && inst->opcode == BRW_OPCODE_BREAK)
|
||||
if (tc->dev->gen == ILO_GEN(6) && inst->opcode == BRW_OPCODE_BREAK)
|
||||
dist++;
|
||||
|
||||
uip = dist * 2;
|
||||
|
|
@ -546,7 +546,7 @@ toy_compiler_legalize_for_asm(struct toy_compiler *tc)
|
|||
*
|
||||
* "INT DIV function does not support SIMD16."
|
||||
*/
|
||||
if (tc->gen < ILO_GEN(7) ||
|
||||
if (tc->dev->gen < ILO_GEN(7) ||
|
||||
inst->cond_modifier == BRW_MATH_FUNCTION_INT_DIV_QUOTIENT ||
|
||||
inst->cond_modifier == BRW_MATH_FUNCTION_INT_DIV_REMAINDER) {
|
||||
struct toy_inst *inst2;
|
||||
|
|
@ -566,7 +566,7 @@ toy_compiler_legalize_for_asm(struct toy_compiler *tc)
|
|||
}
|
||||
break;
|
||||
case BRW_OPCODE_IF:
|
||||
if (tc->gen >= ILO_GEN(7) &&
|
||||
if (tc->dev->gen >= ILO_GEN(7) &&
|
||||
inst->cond_modifier != BRW_CONDITIONAL_NONE) {
|
||||
struct toy_inst *inst2;
|
||||
|
||||
|
|
@ -590,7 +590,7 @@ toy_compiler_legalize_for_asm(struct toy_compiler *tc)
|
|||
}
|
||||
|
||||
/* MRF to GRF */
|
||||
if (tc->gen >= ILO_GEN(7)) {
|
||||
if (tc->dev->gen >= ILO_GEN(7)) {
|
||||
for (i = 0; i < Elements(inst->src); i++) {
|
||||
if (inst->src[i].file != TOY_FILE_MRF)
|
||||
continue;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue