enumerasi D3D10DDI_QUERY (d3d10umddi.h)

Jenis enumerasi D3D10DDI_QUERY berisi nilai yang mengidentifikasi jenis kueri.

Sintaks

typedef enum D3D10DDI_QUERY {
  D3D10DDI_QUERY_EVENT,
  D3D10DDI_QUERY_OCCLUSION,
  D3D10DDI_QUERY_TIMESTAMP,
  D3D10DDI_QUERY_TIMESTAMPDISJOINT,
  D3D10DDI_QUERY_PIPELINESTATS,
  D3D10DDI_QUERY_OCCLUSIONPREDICATE,
  D3D10DDI_QUERY_STREAMOUTPUTSTATS,
  D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE,
  D3D11DDI_QUERY_PIPELINESTATS,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM0,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM1,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM2,
  D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM3,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM0,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM1,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM2,
  D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM3,
  D3D10DDI_COUNTER_GPU_IDLE,
  D3D10DDI_COUNTER_VERTEX_PROCESSING,
  D3D10DDI_COUNTER_GEOMETRY_PROCESSING,
  D3D10DDI_COUNTER_PIXEL_PROCESSING,
  D3D10DDI_COUNTER_OTHER_GPU_PROCESSING,
  D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION,
  D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION,
  D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION,
  D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION,
  D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION,
  D3D10DDI_COUNTER_VERTEXSHADER_MEMORY_LIMITED,
  D3D10DDI_COUNTER_VERTEXSHADER_COMPUTATION_LIMITED,
  D3D10DDI_COUNTER_GEOMETRYSHADER_MEMORY_LIMITED,
  D3D10DDI_COUNTER_GEOMETRYSHADER_COMPUTATION_LIMITED,
  D3D10DDI_COUNTER_PIXELSHADER_MEMORY_LIMITED,
  D3D10DDI_COUNTER_PIXELSHADER_COMPUTATION_LIMITED,
  D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE,
  D3D10DDI_COUNTER_TEXTURE_CACHE_HIT_RATE,
  D3D10DDI_COUNTER_DEVICE_DEPENDENT_0
} ;

Konstanta

 
D3D10DDI_QUERY_EVENT
Jenis kueri ini menyediakan primitif sinkronisasi yang banyak dari jenis kueri berikut ini meniru untuk menangani sifat asinkron unit pemrosesan grafis (GPU). D3D10DDI_QUERY_EVENT yang dikeluarkan menjadi sinyal setelah GPU selesai dengan semua perintah yang dikeluarkan sebelumnya, umumnya dari backend alur grafis. Data yang dikaitkan driver dengan jenis kueri ini adalah BOOL. Namun, nilai BOOL berlebihan karena setiap kali kueri D3D10DDI_QUERY_EVENT diberi sinyal, nilai BOOL selalu TRUE. Driver harus selalu mengirim kembali nilai data BOOL TRUE saat memberi sinyal D3D10DDI_QUERY_EVENT.
D3D10DDI_QUERY_OCCLUSION
Data statistik yang dikaitkan driver dengan jenis kueri ini adalah UINT64. Data statistik ini berisi jumlah multisampel yang melewati pengujian kedalaman dan stensil, juga dikenal sebagai multisampel "terlihat", untuk semua primitif sejak pembuatan konteks perangkat. Jika target render tidak multisampel, penghitung dinaikkan dengan jumlah seluruh piksel yang terlihat. Penghitung harus membungkus ketika meluap.

CATATAN

Runtime Direct3D dapat memanggil fungsi QueryGetData driver kapan saja untuk meminta data statistik ini. Oleh karena itu, harus terus dihitung secara akurat.

Hanya perbedaan antara dua permintaan statistik independen yang akan memberikan informasi yang bermakna. Driver harus menghitung perbedaan antara data statistik yang diterimanya ketika panggilan ke fungsi QueryBegin-nya terjadi dan data statistik yang diterimanya ketika panggilan ke fungsi QueryEnd-nya terjadi.

Untuk tujuan menghitung multisampel yang terlihat, pengujian kedalaman yang dinonaktifkan atau pengujian stensil harus berperilaku seolah-olah multisampel "lulus" tes yang dinonaktifkan. Ini menghasilkan hasil yang setara dengan ketika unit pengujian diaktifkan dengan fungsi pengujian diatur ke "selalu". Selain itu, nilai-nilai ini harus ditaulatasi seperti biasa meskipun tidak ada target render yang terikat. Karena pengujian kedalaman dan stensil secara logis terjadi pada tahap output-merger alur, piksel yang dibuang selama eksekusi pixel-shader tidak menambah penghitung oklusi. Piksel yang dibuang secara logis bahkan tidak mencapai penggabungan output. Ada konfigurasi alur di mana satu-satunya hasil efektif yang dihasilkan dari alur adalah tabulasi penghitung oklusi.

D3D10DDI_QUERY_TIMESTAMP
Data yang dikaitkan driver dengan jenis kueri ini adalah UINT64. Jenis kueri TIMESTAMP digunakan sama dengan jenis kueri D3D10DDI_QUERY_EVENT karena jenis kueri TIMESTAMP juga menyediakan jenis primitif sinkronisasi. Seperti D3D10DDI_QUERY_EVENT, TIMESTAMP harus menjadi sinyal ketika GPU selesai dengan semua perintah yang dikeluarkan sebelumnya. Namun, TIMESTAMP berbeda dari D3D10DDI_QUERY_EVENT dengan mengembalikan nilai tanda waktu 64-bit. Nilai tanda waktu 64-bit ini harus diambil sampelnya dari penghitung GPU, yang meningkat pada frekuensi yang konsisten. Nilai tanda waktu harus diambil sampelnya pada saat GPU selesai dengan semua perintah yang dikeluarkan sebelumnya. GPU tidak diperlukan untuk memastikan bahwa semua cache dibersihkan ke memori untuk menentukan bahwa pekerjaan selesai. Hal ini agar memuaskan beberapa jenis kueri TIMESTAMP frekuensi tinggi tidak terlalu mengganggu alur. Namun, CPU harus memantau urutan penulisan memori yang terdefinisi dengan baik antara dirinya sendiri dan GPU, terutama ketika D3D10DDI_QUERY_EVENT didukung. Jika CPU menentukan bahwa GPU menulis nilai tertentu (terutama nilai pagar), CPU akan menentukan bahwa semua penulisan memori sebelumnya yang dikeluarkan sebelum penulisan pagar harus dibersihkan ke memori dan dapat segera dilihat oleh CPU. Jenis flush yang mungkin diperlukan untuk mengeluarkan data dari cache GPU dan ke memori yang dapat diakses CPU tidak perlu dilakukan setiap TIMESTAMP tetapi mungkin lebih di akhir setiap buffer perintah.

Frekuensi penghitung tanda waktu disediakan dalam konteks jenis kueri D3D10DDI_QUERY_TIMESTAMPDISJOINT. Frekuensi penghitung ini harus lebih besar dari 10 MHz dan tahan terhadap pembatasan dinamis frekuensi tinggi GPU. Penghitung tanda waktu harus global. Oleh karena itu, penghitung tanda waktu tidak diperlukan untuk memperhitungkan pemotongan waktu GPU konteks.

Nilai awal penghitung tanda waktu tidak ditentukan. Oleh karena itu, nilai absolut penghitung tanda waktu umumnya tidak ada artinya dengan sendirinya. Namun, nilai relatif yang dihasilkan dari perbedaan dua nilai absolut mengukur jumlah waktu yang berlalu. Perbedaan dua nilai tanda waktu hanya akurat ketika dua kueri TIMESTAMP dikurung dalam rentang D3D10DDI_QUERY_TIMESTAMPDISJOINT dan saat nilai kueri-terputus dari kueri D3D10DDI_QUERY_TIMESTAMPDISJOINT mengembalikan FALSE.
D3D10DDI_QUERY_TIMESTAMPDISJOINT
Data yang dikaitkan driver dengan jenis kueri ini adalah struktur D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT . TIMESTAMPDISJOINT memungkinkan aplikasi untuk menentukan bracketing untuk tidak hanya meminta frekuensi jam TIMESTAMP tetapi juga untuk mendeteksi apakah frekuensi tersebut konsisten di seluruh rentang perintah grafis yang dikurung. Anggota D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT yang terputus-putus berisi nilai BOOL yang menunjukkan ketika sesuatu menyebabkan penghitung tanda waktu menjadi terputus-putus atau terputus-putus. Beberapa contoh peristiwa yang harus memicu TIMESTAMPDISJOINT adalah daya turun, pembatasan naik dan turun karena peristiwa penghematan daya laptop, kabel AC yang dicabut, dan terlalu panas. Kejadian peristiwa seperti itu harus cukup langka selama status eksekusi aplikasi grafis stabil untuk dihindari dengan mengontrol lingkungan eksekusi sistem. Perhatikan bahwa jika peristiwa tersebut terjadi, peristiwa tersebut secara efektif mengurangi kegunaan fungsionalitas TIMESTAMP. Kueri TIMESTAMP setelah peristiwa yang akan memicu kueri TIMESTAMPDISJOINT tidak diharapkan bermakna dibandingkan dengan kueri TIMESTAMP sebelum peristiwa tersebut. Nilai BOOL dalam anggota Disjoint adalah TRUE jika nilai dari kueri TIMESTAMP tidak dapat dijamin berkelanjutan selama durasi kueri TIMESTAMPDISJOINT. Lainnya, Putus-putus harus FALSE. Nilai anggota Frekuensi D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT harus sama dengan frekuensi jam TANDA WAKTU.

Selain itu, pemberitahuan tentang peristiwa pembatasan tersebut berguna untuk pemantauan performa, regresi, dan alat investigasi, dengan asumsi pemberitahuan menghasilkan perbedaan performa dalam eksekusi aplikasi.
D3D10DDI_QUERY_PIPELINESTATS
Lihat Keterangan untuk detailnya.
D3D10DDI_QUERY_OCCLUSIONPREDICATE
Data yang dikaitkan driver dengan jenis kueri ini adalah BOOL. Predikat ini mencerminkan spesifikasi untuk kueri OKLUSI. Jika kueri OCCLUSION untuk rentang bracketed yang sama mengembalikan 0, predikat OCCLUSION mengembalikan FALSE. Jika tidak, predikat OKLUSI mengembalikan TRUE, yang menunjukkan bahwa setidaknya satu multisample terlihat. Jika predikat ditunjukkan sebagai petunjuk versus dijamin, tidak ada hasil yang pernah disebarluaskan kembali ke aplikasi. Jenis kueri ini adalah predikat dan dapat digunakan untuk mempredikat perintah penyajian.
D3D10DDI_QUERY_STREAMOUTPUTSTATS
Data yang dikaitkan driver dengan jenis kueri ini adalah struktur D3D10_DDI_QUERY_DATA_SO_STATISTICS . Struktur ini berisi statistik untuk memantau jumlah data yang dialirkan pada tahap stream-output alur. Statistik ini hanya menghitung primitif lengkap (misalnya, titik, garis, dan segitiga) yang dialirkan. Jika jenis primitif berubah (misalnya, garis ke segitiga), penghitungan tidak disesuaikan dengan cara apa pun. Artinya, jumlahnya selalu total primitif, terlepas dari jenisnya.

CATATAN

Runtime Direct3D dapat memanggil fungsi QueryGetData driver kapan saja untuk meminta statistik ini. Oleh karena itu, harus terus dihitung secara akurat.

Hanya perbedaan antara dua permintaan statistik independen yang akan memberikan informasi yang bermakna. Driver harus menghitung perbedaan antara data statistik yang diterimanya ketika panggilan ke fungsi QueryBegin-nya terjadi dan data statistik yang diterimanya ketika panggilan ke fungsi QueryEnd-nya terjadi.

D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE
Data yang dikaitkan driver dengan jenis kueri ini adalah BOOL. BOOL ini TRUE jika ada output aliran yang meluap. Jika dua kueri D3D10DDI_QUERY_STREAMOUTPUTSTATS digunakan untuk secara bersamaan memantau rentang bracketed yang sama dengan jenis predikat STREAMOVERFLOWPREDICATE, perbedaan nilai dalam anggota PrimitivesStorageNeeded dari D3D10_DDI_QUERY_DATA_SO_STATISTICS akan menghasilkan perbedaan yang lebih besar daripada perbedaan nilai dalam anggota NumPrimitivesWritten . STREAMOVERFLOWPREDICATE tidak mendukung kemampuan untuk digunakan sebagai petunjuk. Oleh karena itu, jenis predikat harus dijamin. Kueri ini adalah predikat dan dapat digunakan untuk mempredikat perintah penyajian, yang mencegah bingkai yang tidak diinginkan ditampilkan ke aplikasi.

Dalam kasus streaming ke beberapa buffer secara bersamaan, segera setelah salah satu dari mereka meluap, output aliran menulis berhenti untuk semua buffer, dan data untuk STREAMOVERFLOWPREDICATE menjadi TRUE.
D3D11DDI_QUERY_PIPELINESTATS
Didukung di Windows 7 dan versi yang lebih baru.

Data yang dikaitkan driver dengan jenis kueri ini adalah struktur D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS. Struktur ini berisi statistik untuk setiap tahap alur grafis. Jenis kueri ini sama dengan jenis kueri D3D11DDI_QUERY_PIPELINESTATS kecuali D3D11_DDI_QUERY_DATA_PIPELINE_STATISTICS menambahkan anggota HSInvocations dan DSInvocations untuk lambung dan shader domain.
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM0
Didukung di Windows 7 dan versi yang lebih baru.

Data yang dikaitkan driver dengan jenis kueri ini adalah struktur D3D10_DDI_QUERY_DATA_SO_STATISTICS .
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM1
Didukung di Windows 7 dan versi yang lebih baru.

Data yang dikaitkan driver dengan jenis kueri ini adalah struktur D3D10_DDI_QUERY_DATA_SO_STATISTICS .
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM2
Didukung di Windows 7 dan versi yang lebih baru.

Data yang dikaitkan driver dengan jenis kueri ini adalah struktur D3D10_DDI_QUERY_DATA_SO_STATISTICS .
D3D11DDI_QUERY_STREAMOUTPUTSTATS_STREAM3
Didukung di Windows 7 dan versi yang lebih baru.

Data yang dikaitkan driver dengan jenis kueri ini adalah struktur D3D10_DDI_QUERY_DATA_SO_STATISTICS .
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM0
Didukung di Windows 7 dan versi yang lebih baru.

Data yang dikaitkan driver dengan jenis kueri ini adalah BOOL. BOOL ini TRUE jika output stream 0 meluap. Jika dua kueri D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM0 digunakan untuk secara bersamaan memantau rentang bracketed yang sama dengan jenis predikat STREAMOVERFLOWPREDICATE_STREAM0, perbedaan nilai dalam anggota PrimitivesStorageNeeded dari D3D10_DDI_QUERY_DATA_SO_STATISTICS akan menghasilkan perbedaan yang lebih besar daripada perbedaan nilai dalam anggota NumPrimitivesWritten .
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM1
Didukung di Windows 7 dan versi yang lebih baru.

Data yang dikaitkan driver dengan jenis kueri ini adalah BOOL. BOOL ini TRUE jika output stream 1 meluap. Jika dua kueri D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 digunakan untuk secara bersamaan memantau rentang kurung yang sama dengan jenis predikat STREAMOVERFLOWPREDICATE_STREAM1, perbedaan nilai dalam anggota PrimitivesStorageNeeded dari D3D10_DDI_QUERY_DATA_SO_STATISTICS akan menghasilkan perbedaan yang lebih besar daripada perbedaan nilai dalam anggota NumPrimitivesWritten .
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM2
Didukung di Windows 7 dan versi yang lebih baru.

Data yang dikaitkan driver dengan jenis kueri ini adalah BOOL. BOOL ini TRUE jika output aliran 2 meluap. Jika dua kueri D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 digunakan untuk memantau rentang kurung yang sama secara bersamaan sebagai jenis predikat STREAMOVERFLOWPREDICATE_STREAM2, perbedaan nilai dalam anggota PrimitivesStorageNeeded dari D3D10_DDI_QUERY_DATA_SO_STATISTICS akan menghasilkan perbedaan yang lebih besar daripada perbedaan nilai dalam anggota NumPrimitivesWritten .
D3D11DDI_QUERY_STREAMOVERFLOWPREDICATE_STREAM3
Didukung di Windows 7 dan versi yang lebih baru.

Data yang dikaitkan driver dengan jenis kueri ini adalah BOOL. BOOL ini TRUE jika output aliran 3 meluap. Jika dua kueri D3D10DDI_QUERY_STREAMOUTPUTSTATS_STREAM1 digunakan untuk secara bersamaan memantau rentang kurung yang sama dengan jenis predikat STREAMOVERFLOWPREDICATE_STREAM3, perbedaan nilai dalam anggota PrimitivesStorageNeeded dari D3D10_DDI_QUERY_DATA_SO_STATISTICS akan menghasilkan perbedaan yang lebih besar daripada perbedaan nilai dalam anggota NumPrimitivesWritten .
D3D10DDI_COUNTER_GPU_IDLE
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu diam GPU.
D3D10DDI_COUNTER_VERTEX_PROCESSING
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu saat shader puncak sibuk memproses data.
D3D10DDI_COUNTER_GEOMETRY_PROCESSING
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu saat shader geometri sibuk memproses data.
D3D10DDI_COUNTER_PIXEL_PROCESSING
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu saat pemecah piksel sibuk memproses data.
D3D10DDI_COUNTER_OTHER_GPU_PROCESSING
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu operasi GPU, selain operasi vertex, geometri, dan pixel shader, sibuk memproses data.
D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase maksimum teoritis pemanfaatan bandwidth adaptor.
D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase maksimum teoritis pemanfaatan bandwidth memori video.
D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase maksimum teoritis pemanfaatan throughput vertex.
D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase maksimum teoritis pemanfaatan throughput penyiapan segitiga.
D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase maksimum teoritis pemanfaatan throughput tingkat pengisian.
D3D10DDI_COUNTER_VERTEXSHADER_MEMORY_LIMITED
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu saat shader vertex menunggu memori untuk melakukan pembacaan atau penulisan data (versus persentase waktu penghitung vertex menghitung matematika).
D3D10DDI_COUNTER_VERTEXSHADER_COMPUTATION_LIMITED
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu saat shader verteks menghitung matematika (versus persentase waktu yang ditunggu oleh shader vertex untuk memori untuk melakukan pembacaan atau penulisan data).
D3D10DDI_COUNTER_GEOMETRYSHADER_MEMORY_LIMITED
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu yang ditunggu shader geometri hingga memori melakukan pembacaan atau penulisan data (versus persentase waktu penghitung geometri menghitung matematika).
D3D10DDI_COUNTER_GEOMETRYSHADER_COMPUTATION_LIMITED
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu saat shader geometri menghitung matematika (versus persentase waktu yang ditunggu shader geometri untuk memori melakukan pembacaan atau penulisan data).
D3D10DDI_COUNTER_PIXELSHADER_MEMORY_LIMITED
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu yang ditunggu shader piksel hingga memori melakukan pembacaan atau penulisan data (versus persentase waktu penghitung piksel menghitung matematika).
D3D10DDI_COUNTER_PIXELSHADER_COMPUTATION_LIMITED
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase waktu penghitung piksel menghitung matematika (versus persentase waktu yang ditunggu shader piksel hingga memori melakukan pembacaan atau penulisan data).
D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase simpul bahwa shader geometri atau shader piksel yang diambil dari cache simpul yang sudah diubah oleh shader vertex.

Cache simpul yang diubah (yaitu, simpul yang dijalankan oleh shader puncak) ada segera setelah shader puncak. Simpul ini dapat digunakan oleh shader geometri atau shader piksel. Laju hit 100% (hasil kueri D3D10DDI_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE) menunjukkan bahwa setiap puncak yang diperlukan untuk shader geometri atau shader piksel sudah diubah. Sedangkan tingkat temuan 0% menunjukkan bahwa setiap puncak memerlukan pemrosesan oleh shader vertex sebelum dapat digunakan.

Driver dapat merestrukturisasi algoritma dan data untuk meningkatkan tingkat hit cache.
D3D10DDI_COUNTER_TEXTURE_CACHE_HIT_RATE
Data yang dikaitkan driver dengan jenis penghitung kueri ini adalah FLOAT32. Driver mengembalikan persentase texel atau memori tekstur yang diambil shader dari cache texel yang sudah diambil dari memori video.

Cache memori tekstur dapat ada di antara tampilan sumber daya shader atau mungkin buffer dan shader yang konstan. Laju hit 100% menunjukkan bahwa setiap texel yang diperlukan untuk shader sudah tersedia di cache. Sedangkan tingkat kenaikan 0% menunjukkan bahwa setiap texel diperlukan untuk mengambil data dari memori video.

Driver dapat merestrukturisasi algoritma dan data untuk meningkatkan tingkat hit cache.
D3D10DDI_COUNTER_DEVICE_DEPENDENT_0
Penghitung kueri yang bergantung pada perangkat pertama yang tersedia. Vendor perangkat keras dapat menggunakan nilai ini dan nilai 32-bit apa pun di atas 0x40000000 untuk penghitung kueri untuk perangkat mereka.

Keterangan

Nilai untuk D3D10DDI_COUNTER_VERTEX_PROCESSING, D3D10DDI_COUNTER_GEOMETRY_PROCESSING, D3D10DDI_COUNTER_PIXEL_PROCESSING, dan D3D10DDI_COUNTER_OTHER_GPU_PROCESSING dapat menambahkan hingga nilai yang ditentukan driver, yang merupakan jumlah unit paralel yang dapat dideteksi. Nomor ini diterbitkan oleh driver sebagai bagian dari kemampuan adaptor grafis. Jumlah unit paralel yang dapat dideteksi dapat 1, 2, 3, atau 4 tergantung pada detail arsitektur perangkat keras, kemampuan penghitung kinerja untuk membedakan di mana waktu benar-benar dihabiskan, atau atas kebijakan lengkap vendor perangkat keras. Untuk arsitektur yang melaporkan jumlah unit paralel yang dapat dideteksi sama dengan 1 (== 1) di anggota NumDetectableParallelUnits dari struktur D3D10DDI_COUNTER_INFO sebagai respons terhadap panggilan ke fungsi CheckCounterInfo , persamaan berikut berlaku:

(D3D10DDI_COUNTER_VERTEX_PROCESSING + D3D10DDI_COUNTER_GEOMETRY_PROCESSING + D3D10DDI_COUNTER_PIXEL_PROCESSING + D3D10DDI_COUNTER_OTHER_GPU_PROCESSING) / NumDetectableParallelUnits = 1,0 - D3D10DDI_COUNTER_GPU_IDLE

Pemantauan semua pengidentifikasi penghitung ini (bersama dengan D3D10DDI_COUNTER_GPU_IDLE) masih harus mematuhi aturan penghitung yang aktif secara bersamaan.

Untuk arsitektur yang melaporkan jumlah unit paralel yang dapat dideteksi tidak sama dengan 1 (!= 1), interaksi antara setiap metrik sibuk lebih kompleks. Misalnya, dengan jumlah unit paralel yang dapat dideteksi sama dengan 4 (== 4), D3D10DDI_COUNTER_VERTEX_PROCESSING dan D3D10DDI_COUNTER_PIXEL_PROCESSING sama dengan .25 (== .25), sementara metrik sibuk lainnya sama dengan 0 (== 0). D3D10DDI_COUNTER_GPU_IDLE dapat mengakibatkan antara .5 dan .75 tergantung pada seberapa banyak tumpang tindih aktual yang dicapai unit paralel ini.

D3D10DDI_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION, D3D10DDI_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION, D3D10DDI_COUNTER_VERTEX_THROUGHPUT_UTILIZATION, D3D10DDI_COUNTER_TRISETUP_THROUGHPUT_UTILIZATION, dan D3D10DDI_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION semuanya melaporkan persentase hambatan yang dapat digunakan. Aplikasi kemudian dapat menentukan kapan maksimum teoritis tertentu sedang ditekankan sehingga mereka dapat menentukan cara mengatasi penyempitan.

Detail untuk nilai D3D10DDI_QUERY_PIPELINESTATS

Data yang dikaitkan driver dengan jenis kueri ini adalah struktur D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS , yang berisi statistik untuk setiap tahap alur grafik. Untuk setiap tahap, nilai untuk jumlah pemanggilan harus berada di antara cache tak terbatas dan tanpa cache. Clipper akan tampak berperilaku sebagai shader geometri (GS). Clipper akan mengeksekusi untuk setiap segitiga. Untuk setiap pemanggilan, nol primitif akan dihasilkan jika segitiga asli sepenuhnya terpotong, satu primitif akan dihasilkan jika segitiga asli tidak diklip sama sekali (atau hasil kliping hanya dalam satu segitiga), dua primitif akan dihasilkan jika segitiga asli dipotong dan menghasilkan dua segitiga, dan sebagainya. Dalam konfigurasi umum alur, nilai dalam anggota GSPrimitivesD3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS akan sama dengan nilai dalam anggota CInvocations . Jika rasterisasi dinonaktifkan dan alur dikonfigurasi untuk hanya mengirim primitif ke output streaming, nilai dalam GSPrimitives akan menyimpang dari nilai dalam CInvocations karena CInvocations tidak akan meningkat. Statistik kliping akan fleksibel sehubungan dengan implementasi guard band. Oleh karena itu, ketika merender segitiga yang meluas di luar viewport, pengujian akan memastikan kliping berada di antara rentang nilai (angka yang mengasumsikan pita penjaga tak terbatas dan angka yang mengasumsikan persegi panjang kliping ketat di sekitar viewport). Semua nilai berisi jumlah peristiwa sejak pembuatan konteks perangkat. Perhatikan bahwa statistik ini dapat diminta kapan saja, sehingga harus terus dihitung secara akurat.

Hanya perbedaan antara dua permintaan statistik independen yang akan memberikan informasi yang bermakna. Driver harus menghitung perbedaan antara data statistik yang diterimanya ketika panggilan ke fungsi QueryBegin-nya terjadi dan data statistik yang diterimanya ketika panggilan ke fungsi QueryEnd-nya terjadi.

Berikut ini adalah contoh interaksi antara nilai dalam anggota IAVertices, IAPrimitives, dan VSInvocationsD3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS sehubungan dengan penembolokan post vertex shader (VS).

Skenario Nilai IAVertices valid Nilai iaPrimitives valid Nilai valid VSInvocations
Gambar strip segitiga terindeks dari 4 primitif (dengan semua indeks dengan nilai yang sama) 6 4 1--12
Gambar daftar segitiga terindeks dari 4 primitif (dengan semua indeks nilai yang sama) 12 4 1--12
Gambar strip segitiga dari 4 primitif 6 4 6--12
Gambar daftar segitiga dari 4 primitif 12 4 6--12

Primitif parsial akan diizinkan untuk berada dalam rentang nilai, mirip dengan cara penembolokan verteks beraksi. Oleh karena itu, ketika primitif parsial dimungkinkan, statistik harus berada di antara alur yang mengklipnya sesegera mungkin (bahkan sebelum perakitan input (IA) menghitungnya), atau selambat mungkin (post clipper dan shader pra-piksel (PS)). Stream output dan NULL GS fleksibel untuk apakah mereka benar-benar menyebabkan pemanggilan GS terjadi.

Sehubungan dengan nilai dalam anggota PSInvocationsD3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS, pengoptimalan kedalaman awal dan stensil mungkin atau mungkin tidak mencegah pekerjaan dari shader piksel direalisasikan. Oleh karena itu, ketika piksel gagal dalam pengujian kedalaman, nilai dalam PSInvocations mungkin atau mungkin tidak dinaikkan tergantung di mana pengujian kedalaman benar-benar terjadi dalam alur. Jika shader piksel menghasilkan kedalaman, nilai dalam PSInvocations harus bertahap seperti yang diharapkan, bahkan jika kedalaman output gagal. Contoh berikut menunjukkan bagaimana nilai dalam PSInvocations akan diuji.

Pertimbangkan DSP (jumlah piksel yang lulus tes kedalaman dan stensil) dan DSF (jumlah piksel yang gagal dalam atau uji stensil). DSP kira-kira setara dengan kueri OCCLUSION, kecuali bahwa OCCLUSION mengukur multi-sampel (bukan piksel). Dalam semua kasus, DSP <= nilai dalam PSInvocations<= ( DSP + DSF ). Ketika shader piksel menghasilkan kedalaman, nilai dalam PSInvocations adalah jumlah DSP dan DSF. Selain itu, ketika shader piksel NULL terikat ke alur, nilai dalam PSInvocations tidak mengalami kenaikan.

Sehubungan dengan nilai dalam IAVertices dan VSInvocations, pemrosesan vertex yang berdekatan mungkin dioptimalkan jika GS tidak menyatakan simpul yang berdekatan sebagai input ke GS. Oleh karena itu, ketika GS tidak menyatakan simpul yang berdekatan sebagai input, nilai dalam IAVertices dan VSInvocations mungkin atau mungkin tidak mencerminkan pekerjaan yang tersirat oleh simpul yang berdekatan. Jika GS menyatakan simpul yang berdekatan, nilai dalam IAVertices harus menyertakan simpul yang berdekatan (tanpa memperhatikan penembolokan pasca-VS), dan nilai dalam VSInvocations harus menyertakan simpul yang berdekatan (bersama dengan efek penembolokan pasca-VS).

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows.
Header d3d10umddi.h (termasuk D3d10umddi.h)

Lihat juga

CheckCounterInfo

D3D10DDIARG_CREATEQUERY

D3D10DDI_COUNTER_INFO

D3D10_DDI_QUERY_DATA_PIPELINE_STATISTICS

D3D10_DDI_QUERY_DATA_SO_STATISTICS

D3D10_DDI_QUERY_DATA_TIMESTAMP_DISJOINT