Lines Matching defs:shader
55 * \brief Converts a SPIR-V shader to NIR.
104 * \brief Converts a Rogue shader to binary.
107 * \param[in] shader Rogue shader.
111 const struct rogue_shader *shader)
118 if (!rogue_validate_shader(shader))
124 if (!rogue_encode_shader(shader, u_memstream_get(&mem))) {
190 static bool trans_nir_alu_fmax(struct rogue_shader *shader, nir_alu_instr *alu)
199 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_MAX);
218 static bool trans_nir_alu_fmin(struct rogue_shader *shader, nir_alu_instr *alu)
227 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_MIN);
246 static bool trans_nir_alu_mov_imm(struct rogue_shader *shader,
255 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_MOV_IMM);
263 static bool trans_nir_alu_mov(struct rogue_shader *shader, nir_alu_instr *alu)
268 return trans_nir_alu_mov_imm(shader, alu);
274 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_MOV);
289 static bool trans_nir_alu_pack_unorm_4x8(struct rogue_shader *shader,
302 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_PACK_U8888);
318 static bool trans_nir_alu_fmul(struct rogue_shader *shader, nir_alu_instr *alu)
330 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_MUL);
339 static bool trans_nir_alu_ffma(struct rogue_shader *shader, nir_alu_instr *alu)
355 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_FMA);
365 static bool trans_nir_alu(struct rogue_shader *shader, nir_alu_instr *alu)
369 return trans_nir_alu_fmax(shader, alu);
372 return trans_nir_alu_fmin(shader, alu);
375 return trans_nir_alu_pack_unorm_4x8(shader, alu);
378 return trans_nir_alu_mov(shader, alu);
381 return trans_nir_alu_fmul(shader, alu);
384 return trans_nir_alu_ffma(shader, alu);
393 static bool trans_nir_intrinsic_load_input_fs(struct rogue_shader *shader,
396 struct rogue_fs_build_data *fs_data = &shader->ctx->stage_data.fs;
415 size_t drc_num = rogue_acquire_drc(shader);
421 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_PIX_ITER_W);
436 instr = rogue_shader_insert(shader, ROGUE_OP_WDF);
439 rogue_release_drc(shader, drc_num);
444 static bool trans_nir_intrinsic_load_input_vs(struct rogue_shader *shader,
467 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_MOV);
478 static bool trans_nir_intrinsic_load_input(struct rogue_shader *shader,
481 switch (shader->stage) {
483 return trans_nir_intrinsic_load_input_fs(shader, intr);
486 return trans_nir_intrinsic_load_input_vs(shader, intr);
495 static bool trans_nir_intrinsic_store_output_fs(struct rogue_shader *shader,
518 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_MOV);
530 static bool trans_nir_intrinsic_store_output_vs(struct rogue_shader *shader,
533 struct rogue_vs_build_data *vs_data = &shader->ctx->stage_data.vs;
556 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_VTXOUT);
564 static bool trans_nir_intrinsic_store_output(struct rogue_shader *shader,
567 switch (shader->stage) {
569 return trans_nir_intrinsic_store_output_fs(shader, intr);
572 return trans_nir_intrinsic_store_output_vs(shader, intr);
581 static bool trans_nir_intrinsic_load_ubo(struct rogue_shader *shader,
585 &shader->ctx->common_data[shader->stage].ubo_data;
611 struct rogue_instr *instr = rogue_shader_insert(shader, ROGUE_OP_MOV);
621 static bool trans_nir_intrinsic(struct rogue_shader *shader,
626 return trans_nir_intrinsic_load_input(shader, intr);
629 return trans_nir_intrinsic_store_output(shader, intr);
632 return trans_nir_intrinsic_load_ubo(shader, intr);
641 static bool trans_nir_load_const(struct rogue_shader *shader,
667 static bool trans_nir_jump_return(struct rogue_shader *shader,
672 switch (shader->stage) {
685 rogue_shader_insert(shader, return_op);
690 static bool trans_nir_jump(struct rogue_shader *shader, nir_jump_instr *jump)
694 return trans_nir_jump_return(shader, jump);
704 * \brief Converts a NIR shader to Rogue.
707 * \param[in] nir NIR shader.
714 struct rogue_shader *shader = rogue_shader_create(ctx, stage);
715 if (!shader)
721 /* Translate shader entrypoint. */
728 CHECKF(trans_nir_alu(shader, nir_instr_as_alu(instr)),
733 CHECKF(trans_nir_intrinsic(shader, nir_instr_as_intrinsic(instr)),
738 CHECKF(trans_nir_load_const(shader, nir_instr_as_load_const(instr)),
743 CHECKF(trans_nir_jump(shader, nir_instr_as_jump(instr)),
755 if (!rogue_ra_alloc(&shader->instr_list,
756 shader->ra,
761 return shader;