callc (sm4 - asm)

Secara kondisional memanggil subroutine yang ditandai dengan tempat label l# muncul dalam program.

callc{_z|_nz} src0.select_component, l #
Item Deskripsi
src0
[in] Komponen untuk menguji kondisi.
L #
[in] Label subroutine.

Keterangan

Ketika ret ditemui, kembalikan eksekusi ke instruksi setelah panggilan ini.

Format token berisi offset label yang sesuai di Shader sebagai kenyamanan.

Contoh berikut menunjukkan instruksi panggilan.

                ...
                callc_z  r1.y, l3 // if all bits in r0.x are 0, call l3
                callc_nz r2.z, l3 // if any bit in r0.x is nonzero, call l3
                ...
                ret
                label l3
                    ...
                    retc_nz r0.x
                    ...
                ret

Batasan

  • Subroutine dapat bersarang dalam 32.
  • Tumpukan alamat pengembalian dikelola secara transparan oleh implementasi.
  • Jika sudah ada 32 entri pada tumpukan alamat pengembalian dan panggilan dikeluarkan, panggilan akan dilewati.
  • Tidak ada tumpukan parameter otomatis. Aplikasi dapat menggunakan array register sementara yang dapat diindeks (x#[]) untuk mengimplementasikan tumpukan secara manual. Namun, alamat pengembalian panggilan sub-rutin tidak terlihat dan ortogonal untuk manajemen tumpukan manual yang dilakukan oleh aplikasi.
  • Pengindeksan parameter l# tidak diizinkan.
  • Register 32-bit yang disediakan oleh src0 diuji pada tingkat bit. Jika ada bit yang bukan nol, callc_nz akan melakukan panggilan. Jika semua bit nol, callc_z akan melakukan panggilan.
  • Rekursi tidak diizinkan.

Instruksi ini berlaku untuk tahap shader berikut:

Vertex Shader Shader Geometri Piksel Bayangan
x x x

Minimum Shader Model

Fungsi ini didukung dalam model shader berikut.

Shader Model Didukung
Model Shader 5 ya
Model Shader 4.1 ya
Model Shader 4 ya
Shader Model 3 (DirectX HLSL) tidak
Shader Model 2 (DirectX HLSL) tidak
Shader Model 1 (DirectX HLSL) tidak

Shader Model 4 Assembly (DirectX HLSL)