Lines Matching refs:vtx
59 list_inithead(&cf->vtx);
77 struct r600_bytecode_vtx *vtx = CALLOC_STRUCT(r600_bytecode_vtx);
79 if (!vtx)
81 list_inithead(&vtx->list);
82 return vtx;
1291 /* cf can contains only alu or only vtx or only tex */
1448 static int r600_bytecode_add_vtx_internal(struct r600_bytecode *bc, const struct r600_bytecode_vtx *vtx,
1456 memcpy(nvtx, vtx, sizeof(struct r600_bytecode_vtx));
1460 if (vtx->buffer_index_mode)
1461 egcm_load_index_reg(bc, vtx->buffer_index_mode - 1, false);
1464 /* cf can contains only alu or only vtx or only tex */
1493 list_addtail(&nvtx->list, &bc->cf_last->vtx);
1500 bc->ngpr = MAX2(bc->ngpr, vtx->src_gpr + 1);
1501 bc->ngpr = MAX2(bc->ngpr, vtx->dst_gpr + 1);
1506 int r600_bytecode_add_vtx(struct r600_bytecode *bc, const struct r600_bytecode_vtx *vtx)
1508 return r600_bytecode_add_vtx_internal(bc, vtx, false);
1511 int r600_bytecode_add_vtx_tc(struct r600_bytecode *bc, const struct r600_bytecode_vtx *vtx)
1513 return r600_bytecode_add_vtx_internal(bc, vtx, true);
1543 /* vtx instrs get inserted after tex, so make sure we aren't moving the tex
1546 if (!list_is_empty(&bc->cf_last->vtx))
1554 /* cf can contains only alu or only vtx or only tex */
1635 static int r600_bytecode_vtx_build(struct r600_bytecode *bc, struct r600_bytecode_vtx *vtx, unsigned id)
1637 if (r600_isa_fetch(vtx->op)->flags & FF_MEM)
1638 return r700_bytecode_fetch_mem_build(bc, vtx, id);
1639 bc->bytecode[id] = S_SQ_VTX_WORD0_VTX_INST(r600_isa_fetch_opcode(bc->isa->hw_class, vtx->op)) |
1640 S_SQ_VTX_WORD0_BUFFER_ID(vtx->buffer_id) |
1641 S_SQ_VTX_WORD0_FETCH_TYPE(vtx->fetch_type) |
1642 S_SQ_VTX_WORD0_SRC_GPR(vtx->src_gpr) |
1643 S_SQ_VTX_WORD0_SRC_SEL_X(vtx->src_sel_x);
1645 bc->bytecode[id] |= S_SQ_VTX_WORD0_MEGA_FETCH_COUNT(vtx->mega_fetch_count);
1647 bc->bytecode[id++] = S_SQ_VTX_WORD1_DST_SEL_X(vtx->dst_sel_x) |
1648 S_SQ_VTX_WORD1_DST_SEL_Y(vtx->dst_sel_y) |
1649 S_SQ_VTX_WORD1_DST_SEL_Z(vtx->dst_sel_z) |
1650 S_SQ_VTX_WORD1_DST_SEL_W(vtx->dst_sel_w) |
1651 S_SQ_VTX_WORD1_USE_CONST_FIELDS(vtx->use_const_fields) |
1652 S_SQ_VTX_WORD1_DATA_FORMAT(vtx->data_format) |
1653 S_SQ_VTX_WORD1_NUM_FORMAT_ALL(vtx->num_format_all) |
1654 S_SQ_VTX_WORD1_FORMAT_COMP_ALL(vtx->format_comp_all) |
1655 S_SQ_VTX_WORD1_SRF_MODE_ALL(vtx->srf_mode_all) |
1656 S_SQ_VTX_WORD1_GPR_DST_GPR(vtx->dst_gpr);
1657 bc->bytecode[id] = S_SQ_VTX_WORD2_OFFSET(vtx->offset)|
1658 S_SQ_VTX_WORD2_ENDIAN_SWAP(vtx->endian);
1660 bc->bytecode[id] |= ((vtx->buffer_index_mode & 0x3) << 21); // S_SQ_VTX_WORD2_BIM(vtx->buffer_index_mode);
1830 struct r600_bytecode_vtx *vtx;
1909 LIST_FOR_EACH_ENTRY(vtx, &cf->vtx, list) {
1910 r = r600_bytecode_vtx_build(bc, vtx, addr);
1924 LIST_FOR_EACH_ENTRY(vtx, &cf->vtx, list) {
1926 r = r600_bytecode_vtx_build(bc, vtx, addr);
1952 struct r600_bytecode_tex *vtx = NULL, *next_vtx;
1967 LIST_FOR_EACH_ENTRY_SAFE(vtx, next_vtx, &cf->vtx, list) {
1968 free(vtx);
1971 list_inithead(&cf->vtx);
2175 struct r600_bytecode_vtx *vtx = NULL;
2444 LIST_FOR_EACH_ENTRY(vtx, &cf->vtx, list) {
2450 o += fprintf(stderr, "%s ", r600_isa_fetch(vtx->op)->name);
2454 o += fprintf(stderr, "R%d.", vtx->dst_gpr);
2455 o += print_swizzle(vtx->dst_sel_x);
2456 o += print_swizzle(vtx->dst_sel_y);
2457 o += print_swizzle(vtx->dst_sel_z);
2458 o += print_swizzle(vtx->dst_sel_w);
2460 o += fprintf(stderr, ", R%d.", vtx->src_gpr);
2461 o += print_swizzle(vtx->src_sel_x);
2462 if (r600_isa_fetch(vtx->op)->flags & FF_MEM)
2463 o += print_swizzle(vtx->src_sel_y);
2465 if (vtx->offset)
2466 fprintf(stderr, " +%db", vtx->offset);
2470 fprintf(stderr, ", RID:%d ", vtx->buffer_id);
2472 fprintf(stderr, "%s ", fetch_type[vtx->fetch_type]);
2474 if (bc->gfx_level < CAYMAN && vtx->mega_fetch_count)
2475 fprintf(stderr, "MFC:%d ", vtx->mega_fetch_count);
2477 if (bc->gfx_level >= EVERGREEN && vtx->buffer_index_mode)
2478 fprintf(stderr, "SQ_%s ", index_mode[vtx->buffer_index_mode]);
2480 if (r600_isa_fetch(vtx->op)->flags & FF_MEM) {
2481 if (vtx->uncached)
2483 if (vtx->indexed)
2484 fprintf(stderr, "INDEXED:%d ", vtx->indexed);
2486 fprintf(stderr, "ELEM_SIZE:%d ", vtx->elem_size);
2487 if (vtx->burst_count)
2488 fprintf(stderr, "BURST_COUNT:%d ", vtx->burst_count);
2489 fprintf(stderr, "ARRAY_BASE:%d ", vtx->array_base);
2490 fprintf(stderr, "ARRAY_SIZE:%d ", vtx->array_size);
2493 fprintf(stderr, "UCF:%d ", vtx->use_const_fields);
2494 fprintf(stderr, "FMT(DTA:%d ", vtx->data_format);
2495 fprintf(stderr, "NUM:%d ", vtx->num_format_all);
2496 fprintf(stderr, "COMP:%d ", vtx->format_comp_all);
2497 fprintf(stderr, "MODE:%d)\n", vtx->srf_mode_all);
2723 struct r600_bytecode_vtx vtx;
2794 memset(&vtx, 0, sizeof(vtx));
2795 vtx.buffer_id = elements[i].vertex_buffer_index + fetch_resource_start;
2796 vtx.fetch_type = elements[i].instance_divisor ? SQ_VTX_FETCH_INSTANCE_DATA : SQ_VTX_FETCH_VERTEX_DATA;
2797 vtx.src_gpr = elements[i].instance_divisor > 1 ? i + 1 : 0;
2798 vtx.src_sel_x = elements[i].instance_divisor ? 3 : 0;
2799 vtx.mega_fetch_count = 0x1F;
2800 vtx.dst_gpr = i + 1;
2801 vtx.dst_sel_x = desc->swizzle[0];
2802 vtx.dst_sel_y = desc->swizzle[1];
2803 vtx.dst_sel_z = desc->swizzle[2];
2804 vtx.dst_sel_w = desc->swizzle[3];
2805 vtx.data_format = format;
2806 vtx.num_format_all = num_format;
2807 vtx.format_comp_all = format_comp;
2808 vtx.offset = elements[i].src_offset;
2809 vtx.endian = endian;
2811 if ((r = r600_bytecode_add_vtx(&bc, &vtx))) {