Lines Matching refs:ureg

171 static void nine_ureg_tgsi_dump(struct ureg_program *ureg, boolean override)
174 const struct tgsi_token *toks = ureg_get_tokens(ureg, NULL);
194 ureg_src_indirect(ureg_DECL_constant(ureg, i), _X(AL))
197 ureg_DECL_constant(ureg, 19 + (i))
199 #define _CONST(n) ureg_DECL_constant(ureg, n)
277 struct ureg_program *ureg;
314 return ureg_DECL_vs_input(vs->ureg, i);
319 ureg_normalize3(struct ureg_program *ureg,
322 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
325 ureg_DP3(ureg, tmp_x, src, src);
326 ureg_RSQ(ureg, tmp_x, _X(tmp));
327 ureg_MUL(ureg, dst, src, _X(tmp));
328 ureg_release_temporary(ureg, tmp);
335 struct ureg_program *ureg = ureg_create(PIPE_SHADER_VERTEX);
345 vs->ureg = ureg;
375 vs->aNrm = ureg_imm1f(ureg, 0.0f);
379 vs->aCol[0] = ureg_imm1f(ureg, 1.0f);
380 vs->aCol[1] = ureg_imm1f(ureg, 0.0f);
421 oPos = ureg_DECL_output(ureg, TGSI_SEMANTIC_POSITION, 0); /* HPOS */
422 oCol[0] = ureg_saturate(ureg_DECL_output(ureg, TGSI_SEMANTIC_COLOR, 0));
423 oCol[1] = ureg_saturate(ureg_DECL_output(ureg, TGSI_SEMANTIC_COLOR, 1));
425 oFog = ureg_DECL_output(ureg, TGSI_SEMANTIC_GENERIC, 16);
430 oPsz = ureg_DECL_output_masked(ureg, TGSI_SEMANTIC_PSIZE, 0,
436 AR = ureg_DECL_address(ureg);
443 ureg_MOV(ureg, oPos, vs->aVtx);
445 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
451 ureg_MOV(ureg, tmp, vs->aVtx);
453 ureg_ADD(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), ureg_src(tmp), ureg_negate(_CONST(101)));
454 ureg_MUL(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), ureg_src(tmp), _CONST(100));
455 ureg_ADD(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XY), ureg_src(tmp), ureg_imm1f(ureg, -1.0f));
457 ureg_MOV(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_Y), ureg_negate(ureg_src(tmp)));
459 ureg_CMP(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_W), ureg_negate(ureg_abs(ureg_scalar(ureg_src(tmp), TGSI_SWIZZLE_W))),
460 ureg_scalar(ureg_src(tmp), TGSI_SWIZZLE_W), ureg_imm1f(ureg, 1.0f));
462 ureg_RCP(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_W), _W(tmp));
464 ureg_MUL(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), ureg_src(tmp), _W(tmp));
465 ureg_MOV(ureg, oPos, ureg_src(tmp));
466 ureg_release_temporary(ureg, tmp);
469 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
470 struct ureg_dst tmp2 = ureg_DECL_temporary(ureg);
471 struct ureg_dst aVtx_dst = ureg_DECL_temporary(ureg);
472 struct ureg_dst aNrm_dst = ureg_DECL_temporary(ureg);
473 struct ureg_dst sum_blendweights = ureg_DECL_temporary(ureg);
477 ureg_DECL_constant(ureg, i);
481 ureg_MAD(ureg, tmp, vs->aInd, ureg_imm1f(ureg, 4.0f), ureg_imm1f(ureg, 160.0f));
482 ureg_ARL(ureg, AR, ureg_src(tmp));
485 ureg_MOV(ureg, aVtx_dst, ureg_imm4f(ureg, 0.0f, 0.0f, 0.0f, 0.0f));
486 ureg_MOV(ureg, aNrm_dst, ureg_imm4f(ureg, 0.0f, 0.0f, 0.0f, 0.0f));
487 ureg_MOV(ureg, sum_blendweights, ureg_imm4f(ureg, 1.0f, 1.0f, 1.0f, 1.0f));
497 ureg_MUL(ureg, tmp, _XXXX(vs->aVtx), cWM[0]);
498 ureg_MAD(ureg, tmp, _YYYY(vs->aVtx), cWM[1], ureg_src(tmp));
499 ureg_MAD(ureg, tmp, _ZZZZ(vs->aVtx), cWM[2], ureg_src(tmp));
500 ureg_MAD(ureg, tmp, _WWWW(vs->aVtx), cWM[3], ureg_src(tmp));
507 ureg_MUL(ureg, tmp2, _XXXX(vs->aNrm), cWM[0]);
508 ureg_MAD(ureg, tmp2, _YYYY(vs->aNrm), cWM[1], ureg_src(tmp2));
509 ureg_MAD(ureg, tmp2, _ZZZZ(vs->aNrm), cWM[2], ureg_src(tmp2));
514 ureg_MAD(ureg, aVtx_dst, ureg_src(tmp), ureg_scalar(vs->aWgt, i), ureg_src(aVtx_dst));
516 ureg_MAD(ureg, aNrm_dst, ureg_src(tmp2), ureg_scalar(vs->aWgt, i), ureg_src(aNrm_dst));
518 ureg_ADD(ureg, sum_blendweights, ureg_src(sum_blendweights), ureg_negate(ureg_scalar(vs->aWgt, i)));
523 ureg_MAD(ureg, aVtx_dst, ureg_src(tmp), ureg_scalar(ureg_src(sum_blendweights), key->vertexblend - 1), ureg_src(aVtx_dst));
525 ureg_MAD(ureg, aNrm_dst, ureg_src(tmp2), ureg_scalar(ureg_src(sum_blendweights), key->vertexblend - 1), ureg_src(aNrm_dst));
528 ureg_MUL(ureg, tmp, _X(aVtx_dst), _CONST(8));
529 ureg_MAD(ureg, tmp, _Y(aVtx_dst), _CONST(9), ureg_src(tmp));
530 ureg_MAD(ureg, tmp, _Z(aVtx_dst), _CONST(10), ureg_src(tmp));
531 ureg_MAD(ureg, oPos, _W(aVtx_dst), _CONST(11), ureg_src(tmp));
536 ureg_release_temporary(ureg, tmp);
537 ureg_release_temporary(ureg, tmp2);
538 ureg_release_temporary(ureg, sum_blendweights);
540 ureg_release_temporary(ureg, aVtx_dst);
544 ureg_normalize3(ureg, aNrm_dst, ureg_src(aNrm_dst));
547 ureg_release_temporary(ureg, aNrm_dst);
549 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
552 struct ureg_dst aVtx_dst = ureg_DECL_temporary(ureg);
553 ureg_LRP(ureg, aVtx_dst, _XXXX(_CONST(30)), vs->aVtx1, vs->aVtx);
556 struct ureg_dst aNrm_dst = ureg_DECL_temporary(ureg);
557 ureg_LRP(ureg, aNrm_dst, _XXXX(_CONST(30)), vs->aNrm1, vs->aNrm);
563 ureg_MUL(ureg, tmp, _XXXX(vs->aVtx), _CONST(0));
564 ureg_MAD(ureg, tmp, _YYYY(vs->aVtx), _CONST(1), ureg_src(tmp));
565 ureg_MAD(ureg, tmp, _ZZZZ(vs->aVtx), _CONST(2), ureg_src(tmp));
566 ureg_MAD(ureg, oPos, _WWWW(vs->aVtx), _CONST(3), ureg_src(tmp));
567 ureg_release_temporary(ureg, tmp);
570 struct ureg_dst aVtx_dst = ureg_writemask(ureg_DECL_temporary(ureg), TGSI_WRITEMASK_XYZ);
571 ureg_MUL(ureg, aVtx_dst, _XXXX(vs->aVtx), _CONST(4));
572 ureg_MAD(ureg, aVtx_dst, _YYYY(vs->aVtx), _CONST(5), ureg_src(aVtx_dst));
573 ureg_MAD(ureg, aVtx_dst, _ZZZZ(vs->aVtx), _CONST(6), ureg_src(aVtx_dst));
574 ureg_MAD(ureg, aVtx_dst, _WWWW(vs->aVtx), _CONST(7), ureg_src(aVtx_dst));
578 struct ureg_dst aNrm_dst = ureg_writemask(ureg_DECL_temporary(ureg), TGSI_WRITEMASK_XYZ);
579 ureg_MUL(ureg, aNrm_dst, _XXXX(vs->aNrm), _CONST(16));
580 ureg_MAD(ureg, aNrm_dst, _YYYY(vs->aNrm), _CONST(17), ureg_src(aNrm_dst));
581 ureg_MAD(ureg, aNrm_dst, _ZZZZ(vs->aNrm), _CONST(18), ureg_src(aNrm_dst));
583 ureg_normalize3(ureg, aNrm_dst, ureg_src(aNrm_dst));
591 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
596 struct ureg_src cPsz1 = ureg_DECL_constant(ureg, 26);
597 ureg_MAX(ureg, tmp_z, _XXXX(vs->aPsz), _XXXX(cPsz1));
598 ureg_MIN(ureg, tmp_z, _Z(tmp), _YYYY(cPsz1));
600 struct ureg_src cPsz1 = ureg_DECL_constant(ureg, 26);
601 ureg_MOV(ureg, tmp_z, _ZZZZ(cPsz1));
605 struct ureg_src cPsz1 = ureg_DECL_constant(ureg, 26);
606 struct ureg_src cPsz2 = ureg_DECL_constant(ureg, 27);
608 ureg_DP3(ureg, tmp_x, vs->aVtx, vs->aVtx);
609 ureg_RSQ(ureg, tmp_y, _X(tmp));
610 ureg_MUL(ureg, tmp_y, _Y(tmp), _X(tmp));
611 ureg_CMP(ureg, tmp_y, ureg_negate(_Y(tmp)), _Y(tmp), ureg_imm1f(ureg, 0.0f));
612 ureg_MAD(ureg, tmp_x, _Y(tmp), _YYYY(cPsz2), _XXXX(cPsz2));
613 ureg_MAD(ureg, tmp_x, _Y(tmp), _X(tmp), _WWWW(cPsz1));
614 ureg_RSQ(ureg, tmp_x, _X(tmp));
615 ureg_MUL(ureg, tmp_x, _X(tmp), _Z(tmp));
616 ureg_MUL(ureg, tmp_x, _X(tmp), _WWWW(_CONST(100)));
617 ureg_MAX(ureg, tmp_x, _X(tmp), _XXXX(cPsz1));
618 ureg_MIN(ureg, tmp_z, _X(tmp), _YYYY(cPsz1));
621 ureg_MOV(ureg, oPsz, _Z(tmp));
622 ureg_release_temporary(ureg, tmp);
637 oTex = ureg_DECL_output(ureg, texcoord_sn, i);
638 tmp = ureg_DECL_temporary(ureg);
640 input_coord = ureg_DECL_temporary(ureg);
641 transformed = ureg_DECL_temporary(ureg);
649 ureg_MOV(ureg, input_coord, vs->aTex[idx]);
652 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_XYZ), vs->aNrm);
653 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_W), ureg_imm1f(ureg, 1.0f));
657 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_XYZ), vs->aVtx);
658 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_W), ureg_imm1f(ureg, 1.0f));
663 aVtx_normed = ureg_DECL_temporary(ureg);
664 ureg_normalize3(ureg, aVtx_normed, vs->aVtx);
665 ureg_DP3(ureg, tmp_x, ureg_src(aVtx_normed), vs->aNrm);
666 ureg_MUL(ureg, tmp, vs->aNrm, _X(tmp));
667 ureg_ADD(ureg, tmp, ureg_src(tmp), ureg_src(tmp));
668 ureg_ADD(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_XYZ), ureg_src(aVtx_normed), ureg_negate(ureg_src(tmp)));
669 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_W), ureg_imm1f(ureg, 1.0f));
670 ureg_release_temporary(ureg, aVtx_normed);
677 aVtx_normed = ureg_DECL_temporary(ureg);
678 tmp2 = ureg_DECL_temporary(ureg);
679 ureg_normalize3(ureg, aVtx_normed, vs->aVtx);
680 ureg_DP3(ureg, tmp_x, ureg_src(aVtx_normed), vs->aNrm);
681 ureg_MUL(ureg, tmp, vs->aNrm, _X(tmp));
682 ureg_ADD(ureg, tmp, ureg_src(tmp), ureg_src(tmp));
683 ureg_ADD(ureg, tmp, ureg_src(aVtx_normed), ureg_negate(ureg_src(tmp)));
685 ureg_MOV(ureg, ureg_writemask(tmp2, TGSI_WRITEMASK_XYZ), ureg_src(tmp));
686 ureg_MUL(ureg, tmp2, ureg_src(tmp2), ureg_src(tmp2));
687 ureg_DP3(ureg, ureg_writemask(tmp2, TGSI_WRITEMASK_X), ureg_src(tmp2), ureg_src(tmp2));
688 ureg_RSQ(ureg, ureg_writemask(tmp2, TGSI_WRITEMASK_X), ureg_src(tmp2));
689 ureg_MUL(ureg, ureg_writemask(tmp2, TGSI_WRITEMASK_X), ureg_src(tmp2), ureg_imm1f(ureg, 0.5f));
692 ureg_MUL(ureg, tmp, ureg_src(tmp), _X(tmp2));
693 ureg_ADD(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_XY), ureg_src(tmp), ureg_imm1f(ureg, 0.5f));
694 ureg_MOV(ureg, ureg_writemask(input_coord, TGSI_WRITEMASK_ZW), ureg_imm4f(ureg, 0.0f, 0.0f, 0.0f, 1.0f));
695 ureg_release_temporary(ureg, aVtx_normed);
696 ureg_release_temporary(ureg, tmp2);
709 ureg_release_temporary(ureg, transformed);
717 case 1: ureg_MAD(ureg, t, _X(input_coord), _XXXX(_CONST(128 + i * 4 + c)), _YYYY(_CONST(128 + i * 4 + c)));
719 case 2: ureg_DP2(ureg, t, ureg_src(input_coord), _CONST(128 + i * 4 + c));
720 ureg_ADD(ureg, t, ureg_src(transformed), _ZZZZ(_CONST(128 + i * 4 + c)));
722 case 3: ureg_DP3(ureg, t, ureg_src(input_coord), _CONST(128 + i * 4 + c));
723 ureg_ADD(ureg, t, ureg_src(transformed), _WWWW(_CONST(128 + i * 4 + c)));
725 case 4: ureg_DP4(ureg, t, ureg_src(input_coord), _CONST(128 + i * 4 + c)); break;
731 ureg_release_temporary(ureg, input_coord);
734 ureg_MOV(ureg, ureg_writemask(oTex, writemask), ureg_src(transformed));
735 ureg_release_temporary(ureg, transformed);
736 ureg_release_temporary(ureg, tmp);
781 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
785 struct ureg_dst rAtt = ureg_writemask(ureg_DECL_temporary(ureg), TGSI_WRITEMASK_W);
786 struct ureg_dst rHit = ureg_writemask(ureg_DECL_temporary(ureg), TGSI_WRITEMASK_XYZ);
787 struct ureg_dst rMid = ureg_writemask(ureg_DECL_temporary(ureg), TGSI_WRITEMASK_XYZ);
789 struct ureg_dst rCtr = ureg_writemask(ureg_DECL_temporary(ureg), TGSI_WRITEMASK_W);
794 struct ureg_dst rD = ureg_writemask(ureg_DECL_temporary(ureg), TGSI_WRITEMASK_XYZ);
795 struct ureg_dst rA = ureg_writemask(ureg_DECL_temporary(ureg), TGSI_WRITEMASK_XYZ);
796 struct ureg_dst rS = ureg_DECL_temporary(ureg);
820 ureg_DECL_constant(ureg, i);
822 ureg_MOV(ureg, rCtr, ureg_imm1f(ureg, 32.0f)); /* &lightconst(0) */
823 ureg_MOV(ureg, rD, ureg_imm1f(ureg, 0.0f));
824 ureg_MOV(ureg, rA, ureg_imm1f(ureg, 0.0f));
825 ureg_MOV(ureg, rS, ureg_imm1f(ureg, 0.0f));
828 ureg_BGNLOOP(ureg, &label[loop_label]);
829 ureg_ARL(ureg, AL, _W(rCtr));
832 ureg_SNE(ureg, tmp_x, cLKind, ureg_imm1f(ureg, D3DLIGHT_DIRECTIONAL));
833 ureg_MOV(ureg, rHit, ureg_negate(cLDir));
834 ureg_MOV(ureg, rAtt, ureg_imm1f(ureg, 1.0f));
835 ureg_IF(ureg, _X(tmp), &label[l++]);
840 ureg_ADD(ureg, rHit, cLPos, ureg_negate(vs->aVtx));
841 ureg_DP3(ureg, tmp_x, ureg_src(rHit), ureg_src(rHit));
842 ureg_RSQ(ureg, tmp_y, _X(tmp));
843 ureg_MUL(ureg, tmp_x, _X(tmp), _Y(tmp)); /* length */
846 ureg_MAD(ureg, rAtt, _X(tmp), cLAtt2, cLAtt1);
847 ureg_MAD(ureg, rAtt, _X(tmp), _W(rAtt), cLAtt0);
848 ureg_RCP(ureg, rAtt, _W(rAtt));
850 ureg_SLT(ureg, tmp_x, _X(tmp), cLRng);
851 ureg_MUL(ureg, rAtt, _W(rAtt), _X(tmp));
853 ureg_fixup_label(ureg, label[l-1], ureg_get_instruction_number(ureg));
854 ureg_ENDIF(ureg);
857 ureg_normalize3(ureg, rHit, ureg_src(rHit));
860 ureg_SEQ(ureg, tmp_x, cLKind, ureg_imm1f(ureg, D3DLIGHT_SPOT));
861 ureg_IF(ureg, _X(tmp), &label[l++]);
873 ureg_DP3(ureg, tmp_y, ureg_negate(ureg_src(rHit)), cLDir); /* rho */
874 ureg_ADD(ureg, tmp_x, _Y(tmp), ureg_negate(cLPhi));
875 ureg_MUL(ureg, tmp_x, _X(tmp), cLSDiv);
876 ureg_POW(ureg, tmp_x, _X(tmp), cLFOff); /* spotAtten */
877 ureg_SGE(ureg, tmp_z, _Y(tmp), cLTht); /* if inside theta && phi */
878 ureg_SGE(ureg, tmp_y, _Y(tmp), cLPhi); /* if inside phi */
879 ureg_MAD(ureg, ureg_saturate(tmp_x), _X(tmp), _Y(tmp), _Z(tmp));
880 ureg_MUL(ureg, rAtt, _W(rAtt), _X(tmp));
882 ureg_fixup_label(ureg, label[l-1], ureg_get_instruction_number(ureg));
883 ureg_ENDIF(ureg);
889 ureg_normalize3(ureg, rMid, vs->aVtx);
890 ureg_ADD(ureg, rMid, ureg_src(rHit), ureg_negate(ureg_src(rMid)));
892 ureg_ADD(ureg, rMid, ureg_src(rHit), ureg_imm3f(ureg, 0.0f, 0.0f, -1.0f));
894 ureg_normalize3(ureg, rMid, ureg_src(rMid));
895 ureg_DP3(ureg, ureg_saturate(tmp_x), vs->aNrm, ureg_src(rHit));
896 ureg_DP3(ureg, ureg_saturate(tmp_y), vs->aNrm, ureg_src(rMid));
897 ureg_MUL(ureg, tmp_z, _X(tmp), _Y(tmp));
901 ureg_IF(ureg, _Z(tmp), &label[l++]);
903 ureg_DP3(ureg, ureg_saturate(tmp_y), vs->aNrm, ureg_src(rMid));
904 ureg_POW(ureg, tmp_y, _Y(tmp), mtlP);
905 ureg_MUL(ureg, tmp_y, _W(rAtt), _Y(tmp)); /* power factor * att */
906 ureg_MAD(ureg, rS, cLColS, _Y(tmp), ureg_src(rS)); /* accumulate specular */
908 ureg_fixup_label(ureg, label[l-1], ureg_get_instruction_number(ureg));
909 ureg_ENDIF(ureg);
911 ureg_MUL(ureg, tmp_x, _W(rAtt), _X(tmp)); /* dp3(normal,hitDir) * att */
912 ureg_MAD(ureg, rD, cLColD, _X(tmp), ureg_src(rD)); /* accumulate diffuse */
915 ureg_MAD(ureg, rA, cLColA, _W(rAtt), ureg_src(rA)); /* accumulate ambient */
918 ureg_IF(ureg, cLLast, &label[l++]);
919 ureg_BRK(ureg);
920 ureg_ENDIF(ureg);
921 ureg_fixup_label(ureg, label[l-1], ureg_get_instruction_number(ureg));
923 ureg_ADD(ureg, rCtr, _W(rCtr), ureg_imm1f(ureg, 8.0f));
924 ureg_fixup_label(ureg, label[loop_label], ureg_get_instruction_number(ureg));
925 ureg_ENDLOOP(ureg, &label[loop_label]);
935 ureg_MAD(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), ureg_src(rA), vs->mtlA, _CONST(19));
937 ureg_ADD(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), ureg_src(rA), _CONST(25));
938 ureg_MAD(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_XYZ), vs->mtlA, ureg_src(tmp), vs->mtlE);
941 ureg_MAD(ureg, ureg_writemask(oCol[0], TGSI_WRITEMASK_XYZ), ureg_src(rD), vs->mtlD, ureg_src(tmp));
942 ureg_MOV(ureg, ureg_writemask(oCol[0], TGSI_WRITEMASK_W), vs->mtlD);
943 ureg_MUL(ureg, oCol[1], ureg_src(rS), vs->mtlS);
944 ureg_release_temporary(ureg, rAtt);
945 ureg_release_temporary(ureg, rHit);
946 ureg_release_temporary(ureg, rMid);
947 ureg_release_temporary(ureg, rCtr);
948 ureg_release_temporary(ureg, rD);
949 ureg_release_temporary(ureg, rA);
950 ureg_release_temporary(ureg, rS);
951 ureg_release_temporary(ureg, rAtt);
952 ureg_release_temporary(ureg, tmp);
957 ureg_MOV(ureg, ureg_writemask(oCol[0], TGSI_WRITEMASK_XYZ), _CONST(19));
959 ureg_MAD(ureg, ureg_writemask(oCol[0], TGSI_WRITEMASK_XYZ), vs->mtlA, _CONST(25), vs->mtlE);
960 ureg_MOV(ureg, ureg_writemask(oCol[0], TGSI_WRITEMASK_W), vs->mtlD);
961 ureg_MOV(ureg, oCol[1], ureg_imm1f(ureg, 0.0f));
963 ureg_MOV(ureg, oCol[0], vs->aCol[0]);
964 ureg_MOV(ureg, oCol[1], vs->aCol[1]);
972 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
976 ureg_DP3(ureg, tmp_x, vs->aVtx, vs->aVtx);
977 ureg_RSQ(ureg, tmp_z, _X(tmp));
978 ureg_MUL(ureg, tmp_z, _Z(tmp), _X(tmp));
980 ureg_MOV(ureg, tmp_z, ureg_abs(_ZZZZ(vs->aVtx)));
984 ureg_MUL(ureg, tmp_x, _Z(tmp), _ZZZZ(_CONST(28)));
985 ureg_MUL(ureg, tmp_x, _X(tmp), ureg_imm1f(ureg, -1.442695f));
986 ureg_EX2(ureg, tmp_x, _X(tmp));
989 ureg_MUL(ureg, tmp_x, _Z(tmp), _ZZZZ(_CONST(28)));
990 ureg_MUL(ureg, tmp_x, _X(tmp), _X(tmp));
991 ureg_MUL(ureg, tmp_x, _X(tmp), ureg_imm1f(ureg, -1.442695f));
992 ureg_EX2(ureg, tmp_x, _X(tmp));
995 ureg_ADD(ureg, tmp_x, _XXXX(_CONST(28)), ureg_negate(_Z(tmp)));
996 ureg_MUL(ureg, ureg_saturate(tmp_x), _X(tmp), _YYYY(_CONST(28)));
998 ureg_MOV(ureg, oFog, _X(tmp));
999 ureg_release_temporary(ureg, tmp);
1001 ureg_MOV(ureg, oFog, ureg_scalar(vs->aCol[1], TGSI_SWIZZLE_W));
1008 output = ureg_DECL_output(ureg, TGSI_SEMANTIC_GENERIC, 19);
1009 ureg_MOV(ureg, output, input);
1015 output = ureg_DECL_output(ureg, TGSI_SEMANTIC_GENERIC, 20);
1016 ureg_MOV(ureg, output, input);
1022 output = ureg_DECL_output(ureg, TGSI_SEMANTIC_GENERIC, 21);
1023 ureg_MOV(ureg, output, input);
1029 output = ureg_DECL_output(ureg, TGSI_SEMANTIC_GENERIC, 22);
1030 ureg_MOV(ureg, output, input);
1036 output = ureg_DECL_output(ureg, TGSI_SEMANTIC_GENERIC, 23);
1037 ureg_MOV(ureg, output, input);
1045 ureg_MOV(ureg, output, input);
1054 struct ureg_dst clipVect = ureg_DECL_output(ureg, TGSI_SEMANTIC_CLIPVERTEX, 0);
1055 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
1056 ureg_MUL(ureg, tmp, _XXXX(vs->aVtx), _CONST(12));
1057 ureg_MAD(ureg, tmp, _YYYY(vs->aVtx), _CONST(13), ureg_src(tmp));
1058 ureg_MAD(ureg, tmp, _ZZZZ(vs->aVtx), _CONST(14), ureg_src(tmp));
1059 ureg_ADD(ureg, clipVect, _CONST(15), ureg_src(tmp));
1060 ureg_release_temporary(ureg, tmp);
1064 ureg_property(ureg, TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION, TRUE);
1066 ureg_END(ureg);
1067 nine_ureg_tgsi_dump(ureg, FALSE);
1068 return nine_create_shader_with_so_and_destroy(ureg, device->context.pipe, NULL);
1089 struct ureg_program *ureg;
1116 reg = ureg_DECL_constant(ps->ureg, ps->stage.index);
1122 reg = ureg_DECL_fs_input(ps->ureg, TGSI_SEMANTIC_COLOR, 0, TGSI_INTERPOLATE_COLOR);
1125 reg = ureg_DECL_fs_input(ps->ureg, TGSI_SEMANTIC_COLOR, 1, TGSI_INTERPOLATE_COLOR);
1134 reg = ureg_DECL_constant(ps->ureg, 20);
1142 struct ureg_dst dst = ureg_DECL_temporary(ps->ureg);
1143 ureg_ADD(ps->ureg, dst, ureg_imm1f(ps->ureg, 1.0f), ureg_negate(reg));
1206 struct ureg_program *ureg = ps->ureg;
1207 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
1208 struct ureg_dst tmp2 = ureg_DECL_temporary(ureg);
1224 ureg_MOV(ureg, dst, arg[1]);
1228 ureg_MOV(ureg, dst, arg[2]);
1231 ureg_MUL(ureg, dst, arg[1], arg[2]);
1234 ureg_MUL(ureg, tmp, arg[1], arg[2]);
1235 ureg_ADD(ureg, dst, ureg_src(tmp), ureg_src(tmp));
1238 ureg_MUL(ureg, tmp, arg[1], arg[2]);
1239 ureg_MUL(ureg, dst, ureg_src(tmp), ureg_imm1f(ureg, 4.0f));
1242 ureg_ADD(ureg, dst, arg[1], arg[2]);
1245 ureg_ADD(ureg, tmp, arg[1], arg[2]);
1246 ureg_ADD(ureg, dst, ureg_src(tmp), ureg_imm1f(ureg, -0.5f));
1249 ureg_ADD(ureg, tmp, arg[1], arg[2]);
1250 ureg_MAD(ureg, dst, ureg_src(tmp), ureg_imm1f(ureg, 2.0f), ureg_imm1f(ureg, -1.0f));
1253 ureg_ADD(ureg, dst, arg[1], ureg_negate(arg[2]));
1256 ureg_ADD(ureg, tmp, ureg_imm1f(ureg, 1.0f), ureg_negate(arg[1]));
1257 ureg_MAD(ureg, dst, ureg_src(tmp), arg[2], arg[1]);
1260 ureg_LRP(ureg, dst, _WWWW(ps->vC[0]), arg[1], arg[2]);
1264 ureg_LRP(ureg, dst, _W(ps->rTex), arg[1], arg[2]);
1267 ureg_LRP(ureg, dst, _WWWW(_CONST(20)), arg[1], arg[2]);
1270 ureg_ADD(ureg, tmp_x, ureg_imm1f(ureg, 1.0f), ureg_negate(_W(ps->rTex)));
1271 ureg_MAD(ureg, dst, arg[2], _X(tmp), arg[1]);
1274 ureg_LRP(ureg, dst, _WWWW(ps->rCurSrc), arg[1], arg[2]);
1277 ureg_MOV(ureg, dst, arg[1]);
1281 ureg_MAD(ureg, dst, _WWWW(arg[1]), arg[2], arg[1]);
1284 ureg_MAD(ureg, dst, arg[1], arg[2], _WWWW(arg[1]));
1287 ureg_ADD(ureg, tmp_x, ureg_imm1f(ureg, 1.0f), ureg_negate(_WWWW(arg[1])));
1288 ureg_MAD(ureg, dst, _X(tmp), arg[2], arg[1]);
1291 ureg_ADD(ureg, tmp, ureg_imm1f(ureg, 1.0f), ureg_negate(arg[1]));
1292 ureg_MAD(ureg, dst, ureg_src(tmp), arg[2], _WWWW(arg[1]));
1299 ureg_ADD(ureg, tmp, arg[1], ureg_imm4f(ureg,-0.5,-0.5,-0.5,-0.5));
1300 ureg_ADD(ureg, tmp2, arg[2] , ureg_imm4f(ureg,-0.5,-0.5,-0.5,-0.5));
1301 ureg_DP3(ureg, tmp, ureg_src(tmp), ureg_src(tmp2));
1302 ureg_MUL(ureg, ureg_saturate(dst), ureg_src(tmp), ureg_imm4f(ureg,4.0,4.0,4.0,4.0));
1305 ureg_MAD(ureg, dst, arg[1], arg[2], arg[0]);
1308 ureg_LRP(ureg, dst, arg[0], arg[1], arg[2]);
1317 ureg_release_temporary(ureg, tmp);
1318 ureg_release_temporary(ureg, tmp2);
1325 struct ureg_program *ureg = ureg_create(PIPE_SHADER_FRAGMENT);
1331 ps.ureg = ureg;
1334 ps.vC[0] = ureg_DECL_fs_input(ureg, TGSI_SEMANTIC_COLOR, 0, TGSI_INTERPOLATE_COLOR);
1336 ps.rCur = ureg_DECL_temporary(ureg);
1337 ps.rTmp = ureg_DECL_temporary(ureg);
1338 ps.rTex = ureg_DECL_temporary(ureg);
1344 ureg_MOV(ureg, ps.rCur, ps.vC[0]);
1345 ureg_MOV(ureg, ps.rTmp, ureg_imm1f(ureg, 0.0f));
1346 ureg_MOV(ureg, ps.rTex, ureg_imm1f(ureg, 0.0f));
1355 ps.vC[1] = ureg_DECL_fs_input(ureg, TGSI_SEMANTIC_COLOR, 1, TGSI_INTERPOLATE_COLOR);
1362 ps.s[s] = ureg_DECL_sampler(ureg, s);
1363 ps.vT[s] = ureg_DECL_fs_input(ureg, texcoord_sn, s, TGSI_INTERPOLATE_PERSPECTIVE);
1367 ps.s[s] = ureg_DECL_sampler(ureg, s);
1374 ps.vC[1] = ureg_DECL_fs_input(ureg, TGSI_SEMANTIC_COLOR, 1, TGSI_INTERPOLATE_COLOR);
1381 ps.s[s] = ureg_DECL_sampler(ureg, s);
1382 ps.vT[s] = ureg_DECL_fs_input(ureg, texcoord_sn, s, TGSI_INTERPOLATE_PERSPECTIVE);
1387 ps.vC[1] = ureg_DECL_fs_input(ureg, TGSI_SEMANTIC_COLOR, 1, TGSI_INTERPOLATE_COLOR);
1389 oCol = ureg_DECL_output(ureg, TGSI_SEMANTIC_COLOR, 0);
1427 delta = ureg_DECL_temporary(ureg);
1429 ureg_MUL(ureg, ureg_writemask(delta, TGSI_WRITEMASK_X), _X(ps.rTex), _XXXX(_CONST(8 + s - 1)));
1430 ureg_MAD(ureg, ureg_writemask(delta, TGSI_WRITEMASK_X), _Y(ps.rTex), _ZZZZ(_CONST(8 + s - 1)), ureg_src(delta));
1432 ureg_MUL(ureg, ureg_writemask(delta, TGSI_WRITEMASK_Y), _X(ps.rTex), _YYYY(_CONST(8 + s - 1)));
1433 ureg_MAD(ureg, ureg_writemask(delta, TGSI_WRITEMASK_Y), _Y(ps.rTex), _WWWW(_CONST(8 + s - 1)), ureg_src(delta));
1434 texture_coord = ureg_src(ureg_DECL_temporary(ureg));
1435 ureg_MOV(ureg, ureg_writemask(ureg_dst(texture_coord), ureg_dst(ps.vT[s]).WriteMask), ps.vT[s]);
1436 ureg_ADD(ureg, ureg_writemask(ureg_dst(texture_coord), TGSI_WRITEMASK_XY), texture_coord, ureg_src(delta));
1443 ureg_MAD(ureg, ureg_saturate(ureg_writemask(delta, TGSI_WRITEMASK_X)), _Z(ps.rTex), bumpenvlscale, bumpenvloffset);
1449 ureg_TXP(ureg, ps.rTex, target, texture_coord, ps.s[s]);
1451 struct ureg_dst tmp = ureg_DECL_temporary(ureg);
1452 ureg_RCP(ureg, ureg_writemask(tmp, TGSI_WRITEMASK_X), ureg_scalar(texture_coord, dim-1));
1453 ureg_MUL(ureg, ps.rTmp, _X(tmp), texture_coord);
1454 ureg_TEX(ureg, ps.rTex, target, ps.rTmpSrc, ps.s[s]);
1455 ureg_release_temporary(ureg, tmp);
1458 ureg_TEX(ureg, ps.rTex, target, texture_coord, ps.s[s]);
1461 ureg_MUL(ureg, ps.rTex, ureg_src(ps.rTex), _X(delta));
1471 ps.rMod = ureg_DECL_temporary(ureg);
1472 ureg_MUL(ureg, ps.rMod, ps.rCurSrc, ps.rTexSrc);
1508 ureg_ADD(ureg, ureg_writemask(ps.rCur, TGSI_WRITEMASK_XYZ), ps.rCurSrc, ps.vC[1]);
1517 vPos = ureg_DECL_system_value(ureg, TGSI_SEMANTIC_POSITION, 0);
1519 vPos = ureg_DECL_fs_input(ureg, TGSI_SEMANTIC_POSITION, 0,
1534 ureg_MOV(ureg, rFog, _ZZZZ(vPos));
1537 ureg_RCP(ureg, rFog, _WWWW(vPos));
1540 ureg_MUL(ureg, rFog, _X(rFog), _ZZZZ(_CONST(22)));
1541 ureg_MUL(ureg, rFog, _X(rFog), ureg_imm1f(ureg, -1.442695f));
1542 ureg_EX2(ureg, rFog, _X(rFog));
1545 ureg_MUL(ureg, rFog, _X(rFog), _ZZZZ(_CONST(22)));
1546 ureg_MUL(ureg, rFog, _X(rFog), _X(rFog));
1547 ureg_MUL(ureg, rFog, _X(rFog), ureg_imm1f(ureg, -1.442695f));
1548 ureg_EX2(ureg, rFog, _X(rFog));
1551 ureg_ADD(ureg, rFog, _XXXX(_CONST(22)), ureg_negate(_X(rFog)));
1552 ureg_MUL(ureg, ureg_saturate(rFog), _X(rFog), _YYYY(_CONST(22)));
1554 ureg_LRP(ureg, ureg_writemask(oCol, TGSI_WRITEMASK_XYZ), _X(rFog), ps.rCurSrc, _CONST(21));
1555 ureg_MOV(ureg, ureg_writemask(oCol, TGSI_WRITEMASK_W), ps.rCurSrc);
1558 struct ureg_src vFog = ureg_DECL_fs_input(ureg, TGSI_SEMANTIC_GENERIC, 16, TGSI_INTERPOLATE_PERSPECTIVE);
1559 ureg_LRP(ureg, ureg_writemask(oCol, TGSI_WRITEMASK_XYZ), _XXXX(vFog), ps.rCurSrc, _CONST(21));
1560 ureg_MOV(ureg, ureg_writemask(oCol, TGSI_WRITEMASK_W), ps.rCurSrc);
1562 ureg_MOV(ureg, oCol, ps.rCurSrc);
1565 ureg_END(ureg);
1566 nine_ureg_tgsi_dump(ureg, FALSE);
1567 return nine_create_shader_with_so_and_destroy(ureg, device->context.pipe, NULL);