• Home
  • Raw
  • Download

Lines Matching refs:ureg

210 static void set_bad( struct ureg_program *ureg )  in set_bad()  argument
212 tokens_error(&ureg->domain[0]); in set_bad()
217 static union tgsi_any_token *get_tokens( struct ureg_program *ureg, in get_tokens() argument
221 struct ureg_tokens *tokens = &ureg->domain[domain]; in get_tokens()
233 static union tgsi_any_token *retrieve_token( struct ureg_program *ureg, in retrieve_token() argument
237 if (ureg->domain[domain].tokens == error_tokens) in retrieve_token()
240 return &ureg->domain[domain].tokens[nr]; in retrieve_token()
270 ureg_property_gs_input_prim(struct ureg_program *ureg, in ureg_property_gs_input_prim() argument
273 ureg->property_gs_input_prim = input_prim; in ureg_property_gs_input_prim()
277 ureg_property_gs_output_prim(struct ureg_program *ureg, in ureg_property_gs_output_prim() argument
280 ureg->property_gs_output_prim = output_prim; in ureg_property_gs_output_prim()
284 ureg_property_gs_max_vertices(struct ureg_program *ureg, in ureg_property_gs_max_vertices() argument
287 ureg->property_gs_max_vertices = max_vertices; in ureg_property_gs_max_vertices()
291 ureg_property_fs_coord_origin(struct ureg_program *ureg, in ureg_property_fs_coord_origin() argument
294 ureg->property_fs_coord_origin = fs_coord_origin; in ureg_property_fs_coord_origin()
298 ureg_property_fs_coord_pixel_center(struct ureg_program *ureg, in ureg_property_fs_coord_pixel_center() argument
301 ureg->property_fs_coord_pixel_center = fs_coord_pixel_center; in ureg_property_fs_coord_pixel_center()
305 ureg_property_fs_color0_writes_all_cbufs(struct ureg_program *ureg, in ureg_property_fs_color0_writes_all_cbufs() argument
308 ureg->property_fs_color0_writes_all_cbufs = fs_color0_writes_all_cbufs; in ureg_property_fs_color0_writes_all_cbufs()
312 ureg_property_fs_depth_layout(struct ureg_program *ureg, in ureg_property_fs_depth_layout() argument
315 ureg->property_fs_depth_layout = fs_depth_layout; in ureg_property_fs_depth_layout()
319 ureg_DECL_fs_input_cyl_centroid(struct ureg_program *ureg, in ureg_DECL_fs_input_cyl_centroid() argument
328 for (i = 0; i < ureg->nr_fs_inputs; i++) { in ureg_DECL_fs_input_cyl_centroid()
329 if (ureg->fs_input[i].semantic_name == semantic_name && in ureg_DECL_fs_input_cyl_centroid()
330 ureg->fs_input[i].semantic_index == semantic_index) { in ureg_DECL_fs_input_cyl_centroid()
335 if (ureg->nr_fs_inputs < UREG_MAX_INPUT) { in ureg_DECL_fs_input_cyl_centroid()
336 ureg->fs_input[i].semantic_name = semantic_name; in ureg_DECL_fs_input_cyl_centroid()
337 ureg->fs_input[i].semantic_index = semantic_index; in ureg_DECL_fs_input_cyl_centroid()
338 ureg->fs_input[i].interp = interp_mode; in ureg_DECL_fs_input_cyl_centroid()
339 ureg->fs_input[i].cylindrical_wrap = cylindrical_wrap; in ureg_DECL_fs_input_cyl_centroid()
340 ureg->fs_input[i].centroid = centroid; in ureg_DECL_fs_input_cyl_centroid()
341 ureg->nr_fs_inputs++; in ureg_DECL_fs_input_cyl_centroid()
343 set_bad(ureg); in ureg_DECL_fs_input_cyl_centroid()
352 ureg_DECL_vs_input( struct ureg_program *ureg, in ureg_DECL_vs_input() argument
355 assert(ureg->processor == TGSI_PROCESSOR_VERTEX); in ureg_DECL_vs_input()
357 ureg->vs_inputs[index/32] |= 1 << (index % 32); in ureg_DECL_vs_input()
363 ureg_DECL_gs_input(struct ureg_program *ureg, in ureg_DECL_gs_input() argument
368 if (ureg->nr_gs_inputs < UREG_MAX_INPUT) { in ureg_DECL_gs_input()
369 ureg->gs_input[ureg->nr_gs_inputs].index = index; in ureg_DECL_gs_input()
370 ureg->gs_input[ureg->nr_gs_inputs].semantic_name = semantic_name; in ureg_DECL_gs_input()
371 ureg->gs_input[ureg->nr_gs_inputs].semantic_index = semantic_index; in ureg_DECL_gs_input()
372 ureg->nr_gs_inputs++; in ureg_DECL_gs_input()
374 set_bad(ureg); in ureg_DECL_gs_input()
383 ureg_DECL_system_value(struct ureg_program *ureg, in ureg_DECL_system_value() argument
388 if (ureg->nr_system_values < UREG_MAX_SYSTEM_VALUE) { in ureg_DECL_system_value()
389 ureg->system_value[ureg->nr_system_values].index = index; in ureg_DECL_system_value()
390 ureg->system_value[ureg->nr_system_values].semantic_name = semantic_name; in ureg_DECL_system_value()
391 ureg->system_value[ureg->nr_system_values].semantic_index = semantic_index; in ureg_DECL_system_value()
392 ureg->nr_system_values++; in ureg_DECL_system_value()
394 set_bad(ureg); in ureg_DECL_system_value()
402 ureg_DECL_output_masked( struct ureg_program *ureg, in ureg_DECL_output_masked() argument
411 for (i = 0; i < ureg->nr_outputs; i++) { in ureg_DECL_output_masked()
412 if (ureg->output[i].semantic_name == name && in ureg_DECL_output_masked()
413 ureg->output[i].semantic_index == index) { in ureg_DECL_output_masked()
414 ureg->output[i].usage_mask |= usage_mask; in ureg_DECL_output_masked()
419 if (ureg->nr_outputs < UREG_MAX_OUTPUT) { in ureg_DECL_output_masked()
420 ureg->output[i].semantic_name = name; in ureg_DECL_output_masked()
421 ureg->output[i].semantic_index = index; in ureg_DECL_output_masked()
422 ureg->output[i].usage_mask = usage_mask; in ureg_DECL_output_masked()
423 ureg->nr_outputs++; in ureg_DECL_output_masked()
426 set_bad( ureg ); in ureg_DECL_output_masked()
435 ureg_DECL_output( struct ureg_program *ureg, in ureg_DECL_output() argument
439 return ureg_DECL_output_masked(ureg, name, index, TGSI_WRITEMASK_XYZW); in ureg_DECL_output()
454 ureg_DECL_constant2D(struct ureg_program *ureg, in ureg_DECL_constant2D() argument
459 struct const_decl *decl = &ureg->const_decls2D[index2D]; in ureg_DECL_constant2D()
478 ureg_DECL_constant(struct ureg_program *ureg, in ureg_DECL_constant() argument
481 struct const_decl *decl = &ureg->const_decls; in ureg_DECL_constant()
534 static struct ureg_dst alloc_temporary( struct ureg_program *ureg, in alloc_temporary() argument
541 for (i = util_bitmask_get_first_index(ureg->free_temps); in alloc_temporary()
543 i = util_bitmask_get_next_index(ureg->free_temps, i + 1)) { in alloc_temporary()
544 if (util_bitmask_get(ureg->local_temps, i) == local) in alloc_temporary()
551 i = ureg->nr_temps++; in alloc_temporary()
553 util_bitmask_clear(ureg->free_temps, i); in alloc_temporary()
556 util_bitmask_set(ureg->local_temps, i); in alloc_temporary()
561 struct ureg_dst ureg_DECL_temporary( struct ureg_program *ureg ) in ureg_DECL_temporary() argument
563 return alloc_temporary(ureg, FALSE); in ureg_DECL_temporary()
566 struct ureg_dst ureg_DECL_local_temporary( struct ureg_program *ureg ) in ureg_DECL_local_temporary() argument
568 return alloc_temporary(ureg, TRUE); in ureg_DECL_local_temporary()
571 void ureg_release_temporary( struct ureg_program *ureg, in ureg_release_temporary() argument
575 util_bitmask_set(ureg->free_temps, tmp.Index); in ureg_release_temporary()
581 struct ureg_dst ureg_DECL_address( struct ureg_program *ureg ) in ureg_DECL_address() argument
583 if (ureg->nr_addrs < UREG_MAX_ADDR) in ureg_DECL_address()
584 return ureg_dst_register( TGSI_FILE_ADDRESS, ureg->nr_addrs++ ); in ureg_DECL_address()
593 ureg_DECL_predicate(struct ureg_program *ureg) in ureg_DECL_predicate() argument
595 if (ureg->nr_preds < UREG_MAX_PRED) { in ureg_DECL_predicate()
596 return ureg_dst_register(TGSI_FILE_PREDICATE, ureg->nr_preds++); in ureg_DECL_predicate()
605 struct ureg_src ureg_DECL_sampler( struct ureg_program *ureg, in ureg_DECL_sampler() argument
610 for (i = 0; i < ureg->nr_samplers; i++) in ureg_DECL_sampler()
611 if (ureg->sampler[i].Index == nr) in ureg_DECL_sampler()
612 return ureg->sampler[i]; in ureg_DECL_sampler()
615 ureg->sampler[i] = ureg_src_register( TGSI_FILE_SAMPLER, nr ); in ureg_DECL_sampler()
616 ureg->nr_samplers++; in ureg_DECL_sampler()
617 return ureg->sampler[i]; in ureg_DECL_sampler()
621 return ureg->sampler[0]; in ureg_DECL_sampler()
628 ureg_DECL_sampler_view(struct ureg_program *ureg, in ureg_DECL_sampler_view() argument
639 for (i = 0; i < ureg->nr_sampler_views; i++) { in ureg_DECL_sampler_view()
640 if (ureg->sampler_view[i].index == index) { in ureg_DECL_sampler_view()
646 ureg->sampler_view[i].index = index; in ureg_DECL_sampler_view()
647 ureg->sampler_view[i].target = target; in ureg_DECL_sampler_view()
648 ureg->sampler_view[i].return_type_x = return_type_x; in ureg_DECL_sampler_view()
649 ureg->sampler_view[i].return_type_y = return_type_y; in ureg_DECL_sampler_view()
650 ureg->sampler_view[i].return_type_z = return_type_z; in ureg_DECL_sampler_view()
651 ureg->sampler_view[i].return_type_w = return_type_w; in ureg_DECL_sampler_view()
652 ureg->nr_sampler_views++; in ureg_DECL_sampler_view()
701 decl_immediate( struct ureg_program *ureg, in decl_immediate() argument
713 for (i = 0; i < ureg->nr_immediates; i++) { in decl_immediate()
714 if (ureg->immediate[i].type != type) { in decl_immediate()
719 ureg->immediate[i].value.u, in decl_immediate()
720 &ureg->immediate[i].nr, in decl_immediate()
726 if (ureg->nr_immediates < UREG_MAX_IMMEDIATE) { in decl_immediate()
727 i = ureg->nr_immediates++; in decl_immediate()
728 ureg->immediate[i].type = type; in decl_immediate()
731 ureg->immediate[i].value.u, in decl_immediate()
732 &ureg->immediate[i].nr, in decl_immediate()
738 set_bad(ureg); in decl_immediate()
757 ureg_DECL_immediate( struct ureg_program *ureg, in ureg_DECL_immediate() argument
771 return decl_immediate(ureg, fu.u, nr, TGSI_IMM_FLOAT32); in ureg_DECL_immediate()
776 ureg_DECL_immediate_uint( struct ureg_program *ureg, in ureg_DECL_immediate_uint() argument
780 return decl_immediate(ureg, v, nr, TGSI_IMM_UINT32); in ureg_DECL_immediate_uint()
785 ureg_DECL_immediate_block_uint( struct ureg_program *ureg, in ureg_DECL_immediate_block_uint() argument
792 if (ureg->nr_immediates + (nr + 3) / 4 > UREG_MAX_IMMEDIATE) { in ureg_DECL_immediate_block_uint()
793 set_bad(ureg); in ureg_DECL_immediate_block_uint()
797 index = ureg->nr_immediates; in ureg_DECL_immediate_block_uint()
798 ureg->nr_immediates += (nr + 3) / 4; in ureg_DECL_immediate_block_uint()
800 for (i = index; i < ureg->nr_immediates; i++) { in ureg_DECL_immediate_block_uint()
801 ureg->immediate[i].type = TGSI_IMM_UINT32; in ureg_DECL_immediate_block_uint()
802 ureg->immediate[i].nr = nr > 4 ? 4 : nr; in ureg_DECL_immediate_block_uint()
803 memcpy(ureg->immediate[i].value.u, in ureg_DECL_immediate_block_uint()
805 ureg->immediate[i].nr * sizeof(uint)); in ureg_DECL_immediate_block_uint()
814 ureg_DECL_immediate_int( struct ureg_program *ureg, in ureg_DECL_immediate_int() argument
818 return decl_immediate(ureg, (const unsigned *)v, nr, TGSI_IMM_INT32); in ureg_DECL_immediate_int()
823 ureg_emit_src( struct ureg_program *ureg, in ureg_emit_src() argument
829 union tgsi_any_token *out = get_tokens( ureg, DOMAIN_INSN, size ); in ureg_emit_src()
888 ureg_emit_dst( struct ureg_program *ureg, in ureg_emit_dst() argument
894 union tgsi_any_token *out = get_tokens( ureg, DOMAIN_INSN, size ); in ureg_emit_dst()
942 ureg_emit_insn(struct ureg_program *ureg, in ureg_emit_insn() argument
960 out = get_tokens( ureg, DOMAIN_INSN, count ); in ureg_emit_insn()
967 result.insn_token = ureg->domain[DOMAIN_INSN].count - count; in ureg_emit_insn()
980 ureg->nr_instructions++; in ureg_emit_insn()
987 ureg_emit_label(struct ureg_program *ureg, in ureg_emit_label() argument
996 out = get_tokens( ureg, DOMAIN_INSN, 1 ); in ureg_emit_label()
999 insn = retrieve_token( ureg, DOMAIN_INSN, extended_token ); in ureg_emit_label()
1002 *label_token = ureg->domain[DOMAIN_INSN].count - 1; in ureg_emit_label()
1009 ureg_get_instruction_number( struct ureg_program *ureg ) in ureg_get_instruction_number() argument
1011 return ureg->nr_instructions; in ureg_get_instruction_number()
1018 ureg_fixup_label(struct ureg_program *ureg, in ureg_fixup_label() argument
1022 union tgsi_any_token *out = retrieve_token( ureg, DOMAIN_INSN, label_token ); in ureg_fixup_label()
1029 ureg_emit_texture(struct ureg_program *ureg, in ureg_emit_texture() argument
1035 out = get_tokens( ureg, DOMAIN_INSN, 1 ); in ureg_emit_texture()
1036 insn = retrieve_token( ureg, DOMAIN_INSN, extended_token ); in ureg_emit_texture()
1046 ureg_emit_texture_offset(struct ureg_program *ureg, in ureg_emit_texture_offset() argument
1051 out = get_tokens( ureg, DOMAIN_INSN, 1); in ureg_emit_texture_offset()
1060 ureg_fixup_insn_size(struct ureg_program *ureg, in ureg_fixup_insn_size() argument
1063 union tgsi_any_token *out = retrieve_token( ureg, DOMAIN_INSN, insn ); in ureg_fixup_insn_size()
1066 out->insn.NrTokens = ureg->domain[DOMAIN_INSN].count - insn - 1; in ureg_fixup_insn_size()
1071 ureg_insn(struct ureg_program *ureg, in ureg_insn() argument
1095 insn = ureg_emit_insn(ureg, in ureg_insn()
1108 ureg_emit_dst( ureg, dst[i] ); in ureg_insn()
1111 ureg_emit_src( ureg, src[i] ); in ureg_insn()
1113 ureg_fixup_insn_size( ureg, insn.insn_token ); in ureg_insn()
1117 ureg_tex_insn(struct ureg_program *ureg, in ureg_tex_insn() argument
1144 insn = ureg_emit_insn(ureg, in ureg_tex_insn()
1156 ureg_emit_texture( ureg, insn.extended_token, target, nr_offset ); in ureg_tex_insn()
1159 ureg_emit_texture_offset( ureg, &texoffsets[i]); in ureg_tex_insn()
1162 ureg_emit_dst( ureg, dst[i] ); in ureg_tex_insn()
1165 ureg_emit_src( ureg, src[i] ); in ureg_tex_insn()
1167 ureg_fixup_insn_size( ureg, insn.insn_token ); in ureg_tex_insn()
1172 ureg_label_insn(struct ureg_program *ureg, in ureg_label_insn() argument
1181 insn = ureg_emit_insn(ureg, in ureg_label_insn()
1193 ureg_emit_label( ureg, insn.extended_token, label_token ); in ureg_label_insn()
1196 ureg_emit_src( ureg, src[i] ); in ureg_label_insn()
1198 ureg_fixup_insn_size( ureg, insn.insn_token ); in ureg_label_insn()
1203 emit_decl_semantic(struct ureg_program *ureg, in emit_decl_semantic() argument
1210 union tgsi_any_token *out = get_tokens(ureg, DOMAIN_DECL, 3); in emit_decl_semantic()
1230 emit_decl_fs(struct ureg_program *ureg, in emit_decl_fs() argument
1239 union tgsi_any_token *out = get_tokens(ureg, DOMAIN_DECL, 4); in emit_decl_fs()
1264 static void emit_decl( struct ureg_program *ureg, in emit_decl() argument
1269 union tgsi_any_token *out = get_tokens( ureg, DOMAIN_DECL, 2 ); in emit_decl()
1283 static void emit_decl_range( struct ureg_program *ureg, in emit_decl_range() argument
1288 union tgsi_any_token *out = get_tokens( ureg, DOMAIN_DECL, 2 ); in emit_decl_range()
1303 emit_decl_range2D(struct ureg_program *ureg, in emit_decl_range2D() argument
1309 union tgsi_any_token *out = get_tokens(ureg, DOMAIN_DECL, 3); in emit_decl_range2D()
1327 emit_decl_sampler_view(struct ureg_program *ureg, in emit_decl_sampler_view() argument
1335 union tgsi_any_token *out = get_tokens(ureg, DOMAIN_DECL, 3); in emit_decl_sampler_view()
1356 emit_immediate( struct ureg_program *ureg, in emit_immediate() argument
1360 union tgsi_any_token *out = get_tokens( ureg, DOMAIN_DECL, 5 ); in emit_immediate()
1375 emit_property(struct ureg_program *ureg, in emit_property() argument
1379 union tgsi_any_token *out = get_tokens(ureg, DOMAIN_DECL, 2); in emit_property()
1390 static void emit_decls( struct ureg_program *ureg ) in emit_decls() argument
1394 if (ureg->property_gs_input_prim != ~0) { in emit_decls()
1395 assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY); in emit_decls()
1397 emit_property(ureg, in emit_decls()
1399 ureg->property_gs_input_prim); in emit_decls()
1402 if (ureg->property_gs_output_prim != ~0) { in emit_decls()
1403 assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY); in emit_decls()
1405 emit_property(ureg, in emit_decls()
1407 ureg->property_gs_output_prim); in emit_decls()
1410 if (ureg->property_gs_max_vertices != ~0) { in emit_decls()
1411 assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY); in emit_decls()
1413 emit_property(ureg, in emit_decls()
1415 ureg->property_gs_max_vertices); in emit_decls()
1418 if (ureg->property_fs_coord_origin) { in emit_decls()
1419 assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT); in emit_decls()
1421 emit_property(ureg, in emit_decls()
1423 ureg->property_fs_coord_origin); in emit_decls()
1426 if (ureg->property_fs_coord_pixel_center) { in emit_decls()
1427 assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT); in emit_decls()
1429 emit_property(ureg, in emit_decls()
1431 ureg->property_fs_coord_pixel_center); in emit_decls()
1434 if (ureg->property_fs_color0_writes_all_cbufs) { in emit_decls()
1435 assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT); in emit_decls()
1437 emit_property(ureg, in emit_decls()
1439 ureg->property_fs_color0_writes_all_cbufs); in emit_decls()
1442 if (ureg->property_fs_depth_layout) { in emit_decls()
1443 assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT); in emit_decls()
1445 emit_property(ureg, in emit_decls()
1447 ureg->property_fs_depth_layout); in emit_decls()
1450 if (ureg->processor == TGSI_PROCESSOR_VERTEX) { in emit_decls()
1452 if (ureg->vs_inputs[i/32] & (1 << (i%32))) { in emit_decls()
1453 emit_decl_range( ureg, TGSI_FILE_INPUT, i, 1 ); in emit_decls()
1456 } else if (ureg->processor == TGSI_PROCESSOR_FRAGMENT) { in emit_decls()
1457 for (i = 0; i < ureg->nr_fs_inputs; i++) { in emit_decls()
1458 emit_decl_fs(ureg, in emit_decls()
1461 ureg->fs_input[i].semantic_name, in emit_decls()
1462 ureg->fs_input[i].semantic_index, in emit_decls()
1463 ureg->fs_input[i].interp, in emit_decls()
1464 ureg->fs_input[i].cylindrical_wrap, in emit_decls()
1465 ureg->fs_input[i].centroid); in emit_decls()
1468 for (i = 0; i < ureg->nr_gs_inputs; i++) { in emit_decls()
1469 emit_decl_semantic(ureg, in emit_decls()
1471 ureg->gs_input[i].index, in emit_decls()
1472 ureg->gs_input[i].semantic_name, in emit_decls()
1473 ureg->gs_input[i].semantic_index, in emit_decls()
1478 for (i = 0; i < ureg->nr_system_values; i++) { in emit_decls()
1479 emit_decl_semantic(ureg, in emit_decls()
1481 ureg->system_value[i].index, in emit_decls()
1482 ureg->system_value[i].semantic_name, in emit_decls()
1483 ureg->system_value[i].semantic_index, in emit_decls()
1487 for (i = 0; i < ureg->nr_outputs; i++) { in emit_decls()
1488 emit_decl_semantic(ureg, in emit_decls()
1491 ureg->output[i].semantic_name, in emit_decls()
1492 ureg->output[i].semantic_index, in emit_decls()
1493 ureg->output[i].usage_mask); in emit_decls()
1496 for (i = 0; i < ureg->nr_samplers; i++) { in emit_decls()
1497 emit_decl_range( ureg, in emit_decls()
1499 ureg->sampler[i].Index, 1 ); in emit_decls()
1502 for (i = 0; i < ureg->nr_sampler_views; i++) { in emit_decls()
1503 emit_decl_sampler_view(ureg, in emit_decls()
1504 ureg->sampler_view[i].index, in emit_decls()
1505 ureg->sampler_view[i].target, in emit_decls()
1506 ureg->sampler_view[i].return_type_x, in emit_decls()
1507 ureg->sampler_view[i].return_type_y, in emit_decls()
1508 ureg->sampler_view[i].return_type_z, in emit_decls()
1509 ureg->sampler_view[i].return_type_w); in emit_decls()
1512 if (ureg->const_decls.nr_constant_ranges) { in emit_decls()
1513 for (i = 0; i < ureg->const_decls.nr_constant_ranges; i++) { in emit_decls()
1514 emit_decl_range(ureg, in emit_decls()
1516 ureg->const_decls.constant_range[i].first, in emit_decls()
1517ureg->const_decls.constant_range[i].last - ureg->const_decls.constant_range[i].first + 1); in emit_decls()
1522 struct const_decl *decl = &ureg->const_decls2D[i]; in emit_decls()
1528 emit_decl_range2D(ureg, in emit_decls()
1537 if (ureg->nr_temps) { in emit_decls()
1538 if (util_bitmask_get_first_index(ureg->local_temps) == UTIL_BITMASK_INVALID_INDEX) { in emit_decls()
1539 emit_decl_range( ureg, in emit_decls()
1541 0, ureg->nr_temps ); in emit_decls()
1544 for (i = 0; i < ureg->nr_temps; i++) { in emit_decls()
1545 emit_decl( ureg, TGSI_FILE_TEMPORARY, i, in emit_decls()
1546 util_bitmask_get(ureg->local_temps, i) ); in emit_decls()
1551 if (ureg->nr_addrs) { in emit_decls()
1552 emit_decl_range( ureg, in emit_decls()
1554 0, ureg->nr_addrs ); in emit_decls()
1557 if (ureg->nr_preds) { in emit_decls()
1558 emit_decl_range(ureg, in emit_decls()
1561 ureg->nr_preds); in emit_decls()
1564 for (i = 0; i < ureg->nr_immediates; i++) { in emit_decls()
1565 emit_immediate( ureg, in emit_decls()
1566 ureg->immediate[i].value.u, in emit_decls()
1567 ureg->immediate[i].type ); in emit_decls()
1574 static void copy_instructions( struct ureg_program *ureg ) in copy_instructions() argument
1576 unsigned nr_tokens = ureg->domain[DOMAIN_INSN].count; in copy_instructions()
1577 union tgsi_any_token *out = get_tokens( ureg, in copy_instructions()
1582 ureg->domain[DOMAIN_INSN].tokens, in copy_instructions()
1588 fixup_header_size(struct ureg_program *ureg) in fixup_header_size() argument
1590 union tgsi_any_token *out = retrieve_token( ureg, DOMAIN_DECL, 0 ); in fixup_header_size()
1592 out->header.BodySize = ureg->domain[DOMAIN_DECL].count - 2; in fixup_header_size()
1597 emit_header( struct ureg_program *ureg ) in emit_header() argument
1599 union tgsi_any_token *out = get_tokens( ureg, DOMAIN_DECL, 2 ); in emit_header()
1604 out[1].processor.Processor = ureg->processor; in emit_header()
1609 const struct tgsi_token *ureg_finalize( struct ureg_program *ureg ) in ureg_finalize() argument
1613 emit_header( ureg ); in ureg_finalize()
1614 emit_decls( ureg ); in ureg_finalize()
1615 copy_instructions( ureg ); in ureg_finalize()
1616 fixup_header_size( ureg ); in ureg_finalize()
1618 if (ureg->domain[0].tokens == error_tokens || in ureg_finalize()
1619 ureg->domain[1].tokens == error_tokens) { in ureg_finalize()
1625 tokens = &ureg->domain[DOMAIN_DECL].tokens[0].token; in ureg_finalize()
1629 ureg->domain[DOMAIN_DECL].count); in ureg_finalize()
1646 void *ureg_create_shader( struct ureg_program *ureg, in ureg_create_shader() argument
1652 state.tokens = ureg_finalize(ureg); in ureg_create_shader()
1661 if (ureg->processor == TGSI_PROCESSOR_VERTEX) in ureg_create_shader()
1668 const struct tgsi_token *ureg_get_tokens( struct ureg_program *ureg, in ureg_get_tokens() argument
1673 ureg_finalize(ureg); in ureg_get_tokens()
1675 tokens = &ureg->domain[DOMAIN_DECL].tokens[0].token; in ureg_get_tokens()
1678 *nr_tokens = ureg->domain[DOMAIN_DECL].size; in ureg_get_tokens()
1680 ureg->domain[DOMAIN_DECL].tokens = 0; in ureg_get_tokens()
1681 ureg->domain[DOMAIN_DECL].size = 0; in ureg_get_tokens()
1682 ureg->domain[DOMAIN_DECL].order = 0; in ureg_get_tokens()
1683 ureg->domain[DOMAIN_DECL].count = 0; in ureg_get_tokens()
1697 struct ureg_program *ureg = CALLOC_STRUCT( ureg_program ); in ureg_create() local
1698 if (ureg == NULL) in ureg_create()
1701 ureg->processor = processor; in ureg_create()
1702 ureg->property_gs_input_prim = ~0; in ureg_create()
1703 ureg->property_gs_output_prim = ~0; in ureg_create()
1704 ureg->property_gs_max_vertices = ~0; in ureg_create()
1706 ureg->free_temps = util_bitmask_create(); in ureg_create()
1707 if (ureg->free_temps == NULL) in ureg_create()
1710 ureg->local_temps = util_bitmask_create(); in ureg_create()
1711 if (ureg->local_temps == NULL) in ureg_create()
1714 return ureg; in ureg_create()
1717 util_bitmask_destroy(ureg->free_temps); in ureg_create()
1719 FREE(ureg); in ureg_create()
1725 void ureg_destroy( struct ureg_program *ureg ) in ureg_destroy() argument
1729 for (i = 0; i < Elements(ureg->domain); i++) { in ureg_destroy()
1730 if (ureg->domain[i].tokens && in ureg_destroy()
1731 ureg->domain[i].tokens != error_tokens) in ureg_destroy()
1732 FREE(ureg->domain[i].tokens); in ureg_destroy()
1735 util_bitmask_destroy(ureg->free_temps); in ureg_destroy()
1736 util_bitmask_destroy(ureg->local_temps); in ureg_destroy()
1738 FREE(ureg); in ureg_destroy()