struktur D3D11_TRACE_STEP (d3d11shadertracing.h)

Menjelaskan langkah pelacakan, yang merupakan instruksi.

Sintaks

typedef struct D3D11_TRACE_STEP {
  UINT                             ID;
  BOOL                             InstructionActive;
  UINT8                            NumRegistersWritten;
  UINT8                            NumRegistersRead;
  D3D11_TRACE_MISC_OPERATIONS_MASK MiscOperations;
  UINT                             OpcodeType;
  UINT64                           CurrentGlobalCycle;
} D3D11_TRACE_STEP;

Anggota

ID

Angka yang mengidentifikasi instruksi, sebagai offset ke dalam instruksi yang dapat dieksekusi yang ada di shader.

Informasi penelusuran kesalahan HLSL menggunakan konvensi yang sama. Oleh karena itu, instruksi HLSL dicocokkan dengan satu set ID. Anda kemudian dapat memetakan ID ke string yang dibongkar yang dapat ditampilkan kepada pengguna.

InstructionActive

Nilai yang menentukan apakah instruksi aktif. Nilai ini TRUE jika terjadi sesuatu; oleh karena itu, Anda harus mengurai data lain dalam struktur ini. Jika tidak, tidak ada yang terjadi; misalnya, jika instruksi dinonaktifkan karena kontrol aliran meskipun piksel lain dalam stempel menjalankannya.

NumRegistersWritten

Jumlah register untuk instruksi yang ditulis. Rentang register adalah [0...NumRegistersWritten-1]. Anda dapat meneruskan nomor register ke parameter writeRegisterIndexID3D11ShaderTrace::GetWrittenRegister untuk mengambil informasi write-register individual.

NumRegistersRead

Jumlah register untuk instruksi yang dibaca. Rentang register adalah [0...NumRegistersRead-1]. Anda dapat meneruskan nomor register ke parameter readRegisterIndexID3D11ShaderTrace::GetReadRegister untuk mengambil informasi baca-daftar individual.

MiscOperations

Kombinasi nilai berikut yang digabungkan dengan menggunakan operasi OR bitwise. Nilai yang dihasilkan menentukan masker untuk operasi lain-lain jejak. Bendera ini menunjukkan kemungkinan efek operasi shader ketika tidak menulis register output apa pun. Misalnya, operasi "tambahkan r0, r1 ,r2" menulis ke register r0; oleh karena itu, Anda dapat melihat informasi register yang ditulis jejak untuk menentukan apa operasi yang berubah. Namun, beberapa instruksi shader tidak menulis register apa pun, tetapi masih mempengaruhi register tersebut.

Bendera Deskripsi
D3D11_TRACE_MISC_GS_EMIT (0x1) Operasi ini adalah pemancar data shader geometri.
D3D11_TRACE_MISC_GS_CUT (0x2) Operasi ini adalah pemotongan strip shader geometri.
D3D11_TRACE_MISC_PS_DISCARD (0x4) Operasi ini adalah pembuangan shader piksel, yang menolak piksel.
D3D11_TRACE_MISC_GS_EMIT_STREAM (0x8) Sama seperti D3D11_TRACE_MISC_GS_EMIT, kecuali dalam model shader 5 tempat Anda dapat menentukan aliran tertentu untuk dipancarkan.
D3D11_TRACE_MISC_GS_CUT_STREAM (0x10) Sama seperti D3D11_TRACE_MISC_GS_CUT, kecuali dalam model shader 5 di mana Anda dapat menentukan aliran tertentu untuk dipotong.
D3D11_TRACE_MISC_HALT (0x20) Operasi ini adalah instruksi penghentian shader, yang menghentikan eksekusi shader. Fungsi intrinsik pembatalan HLSL menyebabkan penghentian.
D3D11_TRACE_MISC_MESSAGE (0x40) Operasi ini adalah output pesan shader, yang dapat dicatat ke antrean informasi. Fungsi intrinsik cetak HLSL dan kesalahan menyebabkan pesan.
 

Jika anggota NumRegistersWritten adalah 0, periksa anggota ini meskipun anggota ini mungkin masih kosong (0).

OpcodeType

Angka yang menentukan jenis instruksi (misalnya, tambahkan, mul, dan sebagainya). Anda dapat mengabaikan anggota ini jika Anda tidak tahu nomor untuk jenis instruksi. Anggota ini menawarkan kenyamanan kecil dengan biaya kembung sedikit pelacakan. Anda dapat menggunakan anggota ID dan memetakan kembali ke kode shader asli untuk mengambil informasi lengkap tentang instruksi.

CurrentGlobalCycle

Jumlah siklus global untuk langkah ini. Anda dapat menggunakan anggota ini untuk menghubungkan eksekusi utas paralel melalui beberapa jejak simultan, misalnya, untuk shader komputasi.

Catatan Beberapa utas pada titik yang sama dalam eksekusi mungkin mencatat CurrentGlobalCycle yang sama.
 

Keterangan

API ini memerlukan Windows Software Development Kit (SDK) untuk Windows 8.

Persyaratan

   
Klien minimum yang didukung Windows 8 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2012 [hanya aplikasi desktop]
Header d3d11shadertracing.h

Lihat juga

Struktur Shader