Bagikan melalui


enumerasi D3D12_RESOURCE_STATES (d3d12.h)

Menentukan konstanta yang menentukan status sumber daya mengenai bagaimana sumber daya digunakan.

Sintaks

typedef enum D3D12_RESOURCE_STATES {
  D3D12_RESOURCE_STATE_COMMON = 0,
  D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
  D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
  D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
  D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
  D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
  D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
  D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
  D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
  D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
  D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
  D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
  D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
  D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
  D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
  D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
  D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000,
  D3D12_RESOURCE_STATE_GENERIC_READ,
  D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE,
  D3D12_RESOURCE_STATE_PRESENT = 0,
  D3D12_RESOURCE_STATE_PREDICATION = 0x200,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
} ;

Konstanta

 
D3D12_RESOURCE_STATE_COMMON
Nilai: 0
Aplikasi Anda harus beralih ke status ini hanya untuk mengakses sumber daya di berbagai jenis mesin grafis.

Secara khusus, sumber daya harus dalam status COMMON sebelum digunakan pada antrean COPY (ketika sebelumnya digunakan pada DIRECT/COMPUTE), dan sebelum digunakan pada DIRECT/COMPUTE (ketika sebelumnya digunakan pada COPY). Pembatasan ini tidak ada saat mengakses data antara antrean DIRECT dan COMPUTE.

Status COMMON dapat digunakan untuk semua penggunaan pada antrean Salin menggunakan transisi status implisit. Untuk informasi selengkapnya, dalam Sinkronisasi multi-mesin, temukan "umum".

Selain itu, tekstur harus dalam status COMMON agar akses CPU menjadi legal, dengan asumsi tekstur dibuat dalam tumpukan yang terlihat CPU di tempat pertama.
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
Nilai: 0x1
Subsumber daya harus dalam keadaan ini ketika diakses oleh GPU sebagai buffer vertex atau buffer konstanta. Ini adalah status baca-saja.
D3D12_RESOURCE_STATE_INDEX_BUFFER
Nilai: 0x2
Sub sumber daya harus dalam status ini ketika diakses oleh alur 3D sebagai buffer indeks. Ini adalah status baca-saja.
D3D12_RESOURCE_STATE_RENDER_TARGET
Nilai: 0x4
Sumber daya digunakan sebagai target render. Subsumber daya harus dalam status ini saat dirender, atau ketika dibersihkan dengan ID3D12GraphicsCommandList::ClearRenderTargetView.

Ini adalah status tulis-saja. Untuk membaca dari target render sebagai sumber daya shader, sumber daya harus berada di D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE atau D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
Nilai: 0x8
Sumber daya digunakan untuk akses yang tidak berurut. Subsumber daya harus dalam status ini ketika diakses oleh GPU melalui tampilan akses yang tidak diurutkan. Subsumber daya juga harus dalam keadaan ini ketika dibersihkan dengan ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt atau ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat. Ini adalah status baca/tulis.
D3D12_RESOURCE_STATE_DEPTH_WRITE
Nilai: 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE adalah keadaan yang saling eksklusif dengan negara bagian lain. Anda harus menggunakannya untuk ID3D12GraphicsCommandList::ClearDepthStencilView saat bendera (lihat D3D12_CLEAR_FLAGS) menunjukkan subsumber daya tertentu harus dibersihkan (jika tidak, status subsumber daya tidak masalah), atau saat menggunakannya dalam tampilan stensil kedalaman yang dapat ditulis (lihat D3D12_DSV_FLAGS) ketika PSO mengaktifkan penulisan kedalaman (lihat D3D12_DEPTH_STENCIL_DESC).
D3D12_RESOURCE_STATE_DEPTH_READ
Nilai: 0x20
DEPTH_READ adalah status yang dapat dikombinasikan dengan status lain. Ini harus digunakan ketika subsumber daya berada dalam tampilan stensil kedalaman baca-saja, atau ketika penulisan mendalam D3D12_DEPTH_STENCIL_DESC dinonaktifkan. Ini dapat dikombinasikan dengan status baca lainnya (misalnya, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE), sehingga sumber daya dapat digunakan untuk pengujian kedalaman atau stensil, dan diakses oleh shader dalam panggilan gambar yang sama. Menggunakannya ketika kedalaman akan ditulis oleh panggilan gambar atau perintah yang jelas tidak valid.
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
Nilai: 0x40
Sumber daya digunakan dengan shader selain shader piksel. Subsumber daya harus dalam status ini sebelum dibaca oleh tahap apa pun (kecuali untuk tahap shader piksel) melalui tampilan sumber daya shader. Anda masih dapat menggunakan sumber daya dalam shader piksel dengan bendera ini selama juga memiliki bendera D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE diatur. Ini adalah status baca-saja.
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
Nilai: 0x80
Sumber daya digunakan dengan shader piksel. Sub sumber daya harus dalam status ini sebelum dibaca oleh shader piksel melalui tampilan sumber daya shader. Ini adalah status baca-saja.
D3D12_RESOURCE_STATE_STREAM_OUT
Nilai: 0x100
Sumber daya digunakan dengan output aliran. Subsumber daya harus dalam status ini ketika diakses oleh alur 3D sebagai target stream-out. Ini adalah status tulis-saja.
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
Nilai: 0x200
Sumber daya digunakan sebagai argumen tidak langsung.
Sub-sumber daya harus dalam status ini ketika digunakan sebagai buffer argumen yang diteruskan ke metode gambar tidak langsung ID3D12GraphicsCommandList::ExecuteIndirect.
Ini adalah status baca-saja.
D3D12_RESOURCE_STATE_COPY_DEST
Nilai: 0x400
Sumber daya digunakan sebagai tujuan dalam operasi salin.
Subsumber daya harus dalam keadaan ini ketika digunakan sebagai tujuan operasi salin, atau operasi blt.
Ini adalah status tulis-saja.
D3D12_RESOURCE_STATE_COPY_SOURCE
Nilai: 0x800
Sumber daya digunakan sebagai sumber dalam operasi salin.
Subsumber daya harus dalam keadaan ini ketika digunakan sebagai sumber operasi salin, atau operasi blt.
Ini adalah status baca-saja.
D3D12_RESOURCE_STATE_RESOLVE_DEST
Nilai: 0x1000
Sumber daya digunakan sebagai tujuan dalam operasi penyelesaian.
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
Nilai: 0x2000
Sumber daya digunakan sebagai sumber dalam operasi penyelesaian.
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
Nilai: 0x400000
Ketika buffer dibuat dengan ini sebagai status awalnya, ini menunjukkan bahwa sumber daya adalah struktur akselerasi raytracing, untuk digunakan dalam ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure, ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure, atau ID3D12Device::CreateShaderResourceView untuk dimensi D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE .

CATATAN

Sumber daya yang akan digunakan untuk status D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE harus dibuat dalam status tersebut, dan kemudian tidak pernah bertransisi darinya. Atau mungkin sumber daya yang dibuat tidak dalam status tersebut akan ditransisikan ke dalamnya. Untuk informasi selengkapnya, lihat Pembatasan memori struktur akselerasi dalam spesifikasi fungsional DirectX raytracing (DXR) di GitHub.

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
Nilai: 0x1000000
Dimulai dengan Windows 10, versi 1903 (10.0; Build 18362), menunjukkan bahwa sumber daya adalah gambar laju bayangan ruang layar untuk bayangan laju variabel (VRS). Untuk informasi selengkapnya, lihat Bayangan laju variabel (VRS).
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READ adalah kombinasi logis OR dari bit status baca lainnya. Ini adalah status awal yang diperlukan untuk heap unggahan. Aplikasi Anda umumnya harus menghindari transisi ke D3D12_RESOURCE_STATE_GENERIC_READ jika memungkinkan, karena itu dapat mengakibatkan flush cache prematur, atau perubahan tata letak sumber daya (misalnya, kompres/dekompresi), menyebabkan kios alur yang tidak perlu. Sebagai gantinya, Anda harus transisi sumber daya hanya ke status yang benar-benar digunakan.
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE
Setara dengan D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_PRESENT
Nilai: 0
Identik dengan D3D12_RESOURCE_STATE_COMMON.
D3D12_RESOURCE_STATE_PREDICATION
Nilai: 0x200
Sumber daya digunakan untuk Predikasi.
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
Nilai: 0x10000
Sumber daya digunakan sebagai sumber dalam operasi dekode. Contohnya termasuk membaca bitstream terkompresi dan membaca dari referensi dekode,
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
Nilai: 0x20000
Sumber daya digunakan sebagai tujuan dalam operasi dekode. Status ini digunakan untuk mendekode output dan histogram.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
Nilai: 0x40000
Sumber daya digunakan untuk membaca data video selama pemrosesan video; artinya, sumber daya digunakan sebagai sumber dalam operasi pemrosesan seperti pengodean video (kompresi).
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
Nilai: 0x80000
Sumber daya digunakan untuk menulis data video selama pemrosesan video; artinya, sumber daya digunakan sebagai tujuan dalam operasi pemrosesan seperti pengodean video (kompresi).
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
Nilai: 0x200000
Sumber daya digunakan sebagai sumber dalam operasi pengodean. Status ini digunakan untuk input dan referensi estimasi gerakan.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
Nilai: 0x800000
Sumber daya ini digunakan sebagai tujuan dalam operasi pengodean. Status ini digunakan untuk tekstur tujuan operasi tumpukan vektor gerakan penyelesaian.

Keterangan

Enum ini digunakan oleh metode berikut:

Persyaratan

   
Header d3d12.h

Lihat juga