Bagikan melalui


enumerasi D3D12DDI_BARRIER_SYNC (d3d12umddi.h)

Nilai D3D12DDI_BARRIER_SYNC adalah bit-bijaksana ATAU dari bidang berikut yang menentukan cakupan sinkronisasi pekerjaan GPU sehubungan dengan hambatan.

Sintaksis

typedef enum D3D12DDI_BARRIER_SYNC {
  D3D12DDI_BARRIER_SYNC_NONE = 0x0,
  D3D12DDI_BARRIER_SYNC_ALL = 0x1,
  D3D12DDI_BARRIER_SYNC_DRAW = 0x2,
  D3D12DDI_BARRIER_SYNC_INPUT_ASSEMBLER = 0x4,
  D3D12DDI_BARRIER_SYNC_INDEX_INPUT = 0x4,
  D3D12DDI_BARRIER_SYNC_VERTEX_SHADING = 0x8,
  D3D12DDI_BARRIER_SYNC_PIXEL_SHADING = 0x10,
  D3D12DDI_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
  D3D12DDI_BARRIER_SYNC_RENDER_TARGET = 0x40,
  D3D12DDI_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
  D3D12DDI_BARRIER_SYNC_RAYTRACING = 0x100,
  D3D12DDI_BARRIER_SYNC_COPY = 0x200,
  D3D12DDI_BARRIER_SYNC_RESOLVE = 0x400,
  D3D12DDI_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
  D3D12DDI_BARRIER_SYNC_PREDICATION = 0x800,
  D3D12DDI_BARRIER_SYNC_ALL_SHADING = 0x1000,
  D3D12DDI_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
  D3D12DDI_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
  D3D12DDI_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
  D3D12DDI_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
  D3D12DDI_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
  D3D12DDI_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
  D3D12DDI_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
  D3D12DDI_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
  D3D12DDI_BARRIER_SYNC_SPLIT = 0x80000000
} ;

Konstanta

 
D3D12DDI_BARRIER_SYNC_NONE
Nilai: 0x0
Sinkronisasi tidak diperlukan baik sebelum atau sesudah hambatan. Saat digunakan, D3D12DDI_BARRIER_SYNC_NONE harus menjadi satu-satunya bit yang ditetapkan.

Nilai SyncBefore D3D12DDI_BARRIER_SYNC_NONE menyiratkan bahwa belum ada hambatan atau akses sebelumnya yang dibuat ke sumber daya dalam cakupan ExecuteCommandLists yang sama.

Nilai SyncAfter D3D12DDI_BARRIER_SYNC_NONE menyiratkan bahwa sub-sumber daya yang sesuai tidak diakses setelah hambatan dalam cakupan
ExecuteCommandLists yang sama.

Dalam kedua kasus, AccessAfter harus D3D12DDI_BARRIER_ACCESS_NO_ACCESS.
D3D12DDI_BARRIER_SYNC_ALL
Nilai: 0x1
Nilai SyncBeforeD3D12DDI_BARRIER_SYNC_ALL menunjukkan semua pekerjaan sebelumnya harus diselesaikan sebelum mengeksekusi hambatan.

Nilai SyncAfterD3D12DDI_BARRIER_SYNC_ALL menunjukkan semua pekerjaan berikutnya harus menunggu penghadang selesai.
D3D12DDI_BARRIER_SYNC_DRAW
Nilai: 0x2
Nilai ini adalah cakupan payung untuk semua tahap alur Draw. Sinkronkan terhadap beban kerja GPU berikut:

DrawInstanced
* DrawIndexedInstanced
* SetGraphicsRootDescriptorTable
* SetGraphicsRootShaderResource
* SetGraphicsRootUnorderedAccessView
* SetGraphicsRootConstantBufferView

Sinkronisasi SetGraphicsRootXxx diperlukan untuk mendukung deskriptor D3D12DDI_DESCRIPTOR_RANGE_FLAG_0013_DATA_STATIC_WHILE_SET_AT_EXECUTE.

Nilai SyncBeforeD3D12DDI_BARRIER_SYNC_DRAW menunjukkan semua pekerjaan Draw sebelumnya harus diselesaikan sebelum mengeksekusi hambatan.

Nilai SyncAfterD3D12DDI_BARRIER_SYNC_DRAW menunjukkan semua pekerjaan Draw berikutnya harus menunggu penghadang selesai.
D3D12DDI_BARRIER_SYNC_INPUT_ASSEMBLER
Nilai: 0x4
Sinkronkan terhadap eksekusi tahap Perakitan Input.
D3D12DDI_BARRIER_SYNC_INDEX_INPUT
Nilai: 0x4
Peta ke D3D12DDI_BARRIER_SYNC_INPUT_ASSEMBLER.
D3D12DDI_BARRIER_SYNC_VERTEX_SHADING
Nilai: 0x8
Sinkronkan terhadap semua tahap bayangan vertex, termasuk vertex, domain, lambung, tessellation, geometri, amplifikasi, dan bayangan jala.
D3D12DDI_BARRIER_SYNC_PIXEL_SHADING
Nilai: 0x10
Sinkronkan terhadap eksekusi piksel shader.
D3D12DDI_BARRIER_SYNC_DEPTH_STENCIL
Nilai: 0x20
Sinkronkan terhadap operasi baca/tulis kedalaman/stensil. Ini termasuk akses tampilan stensil kedalaman (DSV) selama Draw* dan ClearRenderTargetView.
D3D12DDI_BARRIER_SYNC_RENDER_TARGET
Nilai: 0x40
Sinkronkan terhadap operasi baca/tulis target render. Ini termasuk penulisan tampilan target render (RTV) selama Draw* dan ClearRenderTargetView.
D3D12DDI_BARRIER_SYNC_COMPUTE_SHADING
Nilai: 0x80
Sinkronkan terhadap beban kerja GPU berikut:

Pengiriman
* SetComputeRootDescriptorTable
* SetComputeRootShaderResource
* SetComputeRootUnorderedAccessView
* SetComputeRootConstantBufferView

Sinkronisasi
setComputeRootXxx diperlukan untuk mendukung deskriptor D3D12DDI_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTION.
D3D12DDI_BARRIER_SYNC_RAYTRACING
Nilai: 0x100
Sinkronkan terhadap eksekusi raytracing.
D3D12DDI_BARRIER_SYNC_COPY
Nilai: 0x200
Sinkronkan terhadap perintah Salin.
D3D12DDI_BARRIER_SYNC_RESOLVE
Nilai: 0x400
Sinkronkan terhadap perintah Atasi.
D3D12DDI_BARRIER_SYNC_EXECUTE_INDIRECT
Nilai: 0x800
Sinkronkan terhadap eksekusi ExecuteIndirect.
D3D12DDI_BARRIER_SYNC_PREDICATION
Nilai: 0x800
Sinkronkan terhadap perintah Predikasi. Alias dengan D3D12DDI_BARRIER_SYNC_EXECUTE_INDIRECT*.
D3D12DDI_BARRIER_SYNC_ALL_SHADING
Nilai: 0x1000
Sinkronkan terhadap semua eksekusi shader.
D3D12DDI_BARRIER_SYNC_NON_PIXEL_SHADING
Nilai: 0x2000
Sinkronkan terhadap eksekusi shader kecuali bayangan piksel. Ada untuk kompatibilitas dengan RESOURCEBarrier API warisan.
D3D12DDI_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO
Nilai: 0x4000
Sinkronkan terhadap pekerjaan PFND3D12DDI_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_0054.
D3D12DDI_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW
Nilai: 0x8000
Sinkronkan terhadap eksekusi ke UAV.
D3D12DDI_BARRIER_SYNC_VIDEO_DECODE
Nilai: 0x100000
Sinkronkan terhadap eksekusi Dekode Video.
D3D12DDI_BARRIER_SYNC_VIDEO_PROCESS
Nilai: 0x200000
Sinkronkan terhadap eksekusi Proses Video.
D3D12DDI_BARRIER_SYNC_VIDEO_ENCODE
Nilai: 0x400000
Sinkronkan terhadap eksekusi Video Encode.
D3D12DDI_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE
Nilai: 0x800000
Sinkronkan terhadap pekerjaan PFND3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_0054.

Bidang penghalang yang sesuai AccessBefore atau AccessAfter harus memiliki set bit D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE.
D3D12DDI_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE
Nilai: 0x1000000
Sinkronkan terhadap pekerjaan PFND3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_0054.

Bidang penghalang yang sesuai AccessBefore atau AccessAfter harus memiliki set bit D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE.
D3D12DDI_BARRIER_SYNC_SPLIT
Nilai: 0x80000000
Bit sinkronisasi khusus yang menunjukkan hambatan terpisah. Digunakan sebagai nilai SyncAfter untuk menunjukkan awal penghadang terpisah. Aplikasi harus menyediakan penghalang yang cocok dengan SyncBefore diatur ke D3D12DDI_BARRIER_SYNC_SPLIT. Lihat Komentar.

Komentar

Penghalang terpisah adalah petunjuk bagi driver bahwa transisi status harus terjadi antara dua titik dalam aliran perintah, bahkan lintas batas ExecuteCommandLists. Driver dapat menyelesaikan transisi tata letak dan cache yang diperlukan setiap saat antara awal dan akhir pembatas terpisah.

API Hambatan yang Ditingkatkan memungkinkan sinkronisasi SPLIT. Hambatan terpisah diwakili oleh sepasang penghalang di mana penghalang awal menggunakan nilai D3D12DDI_BARRIER_SYNC_SPLITSyncAfter, dan penghalang akhir menggunakan nilai D3D12DDI_BARRIER_SYNC_SPLITSyncBefore.

Pasangan penghalang terpisah harus menggunakan LayoutBefore, LayoutAfter, AccessBefore, dan AccessAfter nilai untuk penghalang awal dan akhir. Pasangan penghalang terpisah harus berurutan tanpa hambatan intervensi lain pada sumber daya yang sama. Cuplikan kode berikut adalah contoh tingkat aplikasi.

// BEGIN split from compute shader UAV to pixel shader SRV
splitBarrierBegin.SyncBefore = D3D12_BARRIER_SYNC_COMPUTE
splitBarrierBegin.SyncAfter = D3D12_BARRIER_SYNC_SPLIT
splitBarrierBegin.AccessBefore = D3D12_BARRIER_ACCESS_UNORDERED_ACCESS
splitBarrierBegin.AccessAfter = D3D12_BARRIER_ACCESS_DIRECT_QUEUE_SHADER_RESOURCE
splitBarrierBegin.LayoutBefore = D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS
splitBarrierBegin.LayoutAfter = D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE

// END split from compute shader UAV to pixel shader SRV
splitBarrierEnd.SyncBefore = D3D12_BARRIER_SYNC_SPLIT
splitBarrierEnd.SyncAfter = D3D12_BARRIER_SYNC_PIXEL_SHADING
splitBarrierEnd.AccessBefore = D3D12_BARRIER_ACCESS_UNORDERED_ACCESS
splitBarrierEnd.AccessAfter = D3D12_BARRIER_ACCESS_DIRECT_QUEUE_SHADER_RESOURCE
splitBarrierEnd.LayoutBefore = D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS
splitBarrierEnd.LayoutAfter = D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE

Penghalang terpisah di seluruh batas ExecuteCommandLists diizinkan. Dalam hal ini semua nilai AccessBefore dan AccessAfter secara efektif diabaikan karena batas ExecuteCommandLists mengurus pembilasan cache apa pun. Pada dasarnya, penghalang pemisahan cross-ExecuteCommandLists adalah penghalang khusus tata letak. Oleh karena itu, memisahkan hambatan buffer atau hambatan tekstur akses simultan di seluruh batas ExecuteCommandLists tidak memiliki tujuan. Hambatan pemisahan BEGIN atau END yang tidak cocok pada tekstur buffer atau akses simultan dalam cakupan ExecuteCommandLists tertentu secara efektif tidak digunakan dan Lapisan Debug menghasilkan peringatan.

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows 11 (WDDM 3.0)
Header d3d12umddi.h

Lihat juga

D3D12DDI_BARRIER_ACCESS

D3D12DDI_BUFFER_BARRIER_0088

D3D12DDI_GLOBAL_BARRIER_0088

D3D12DDI_RANGED_BARRIER_0088

D3D12DDI_TEXTURE_BARRIER_0088