Bagikan melalui


struktur D3DDDI_SYNCHRONIZATIONOBJECTINFO2 (d3dukmdt.h)

Struktur D3DDDI_SYNCHRONIZATIONOBJECTINFO2 berisi informasi tentang objek sinkronisasi generasi kedua.

Sintaks

typedef struct _D3DDDI_SYNCHRONIZATIONOBJECTINFO2 {
  D3DDDI_SYNCHRONIZATIONOBJECT_TYPE  Type;
  D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags;
  union {
    struct {
      BOOL InitialState;
    } SynchronizationMutex;
    struct {
      UINT MaxCount;
      UINT InitialCount;
    } Semaphore;
    struct {
      D3DKMT_ALIGN64 UINT64 FenceValue;
    } Fence;
    struct {
      void D3DKMT_PTR(
    HANDLE unnamedParam1,
    Event  unnamedParam2
  );
    } CPUNotification;
    struct {
      D3DKMT_ALIGN64 UINT64                 InitialFenceValue;
      void                                  D3DKMT_PTR(
    VOID                        *unnamedParam1,
    FenceValueCPUVirtualAddress unnamedParam2
  );
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
      UINT                                  EngineAffinity;
      UINT                                  Padding;
    } MonitoredFence;
    struct {
      D3DKMT_HANDLE                         hAdapter;
      D3DDDI_VIDEO_PRESENT_TARGET_ID        VidPnTargetId;
      D3DKMT_ALIGN64 UINT64                 Time;
      void                                  D3DKMT_PTR(
    VOID                        *unnamedParam1,
    FenceValueCPUVirtualAddress unnamedParam2
  );
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
      UINT                                  EngineAffinity;
      UINT                                  Padding;
    } PeriodicMonitoredFence;
    struct {
      D3DKMT_ALIGN64 UINT64 Reserved[8];
    } Reserved;
  };
  D3DKMT_HANDLE                      SharedHandle;
} D3DDDI_SYNCHRONIZATIONOBJECTINFO2;

Anggota

Type

[in] Nilai jenis D3DDDI_SYNCHRONIZATIONOBJECT_TYPE yang menunjukkan jenis objek sinkronisasi.

Flags

[in] Struktur D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS yang menentukan, dalam bendera bidang bit, atribut objek sinkronisasi.

SynchronizationMutex

Struktur yang berisi informasi tentang mutex sinkronisasi. Jika anggota Jenis sama dengan D3DDDI_SYNCHRONIZATION_MUTEX, penyatuan di D3DDDI_SYNCHRONIZATIONOBJECTINFO2 menyimpan struktur SynchronizationMutex .

SynchronizationMutex.InitialState

Nilai Boolean yang menunjukkan apakah mutex sinkronisasi awalnya dimiliki oleh objek. Nilai TRUE menunjukkan bahwa mutex dimiliki; FALSE menunjukkan bahwa mutex tidak dimiliki.

Semaphore

Struktur yang berisi informasi tentang semaphore. Jika anggota Jenis sama dengan D3DDDI_SEMAPHORE, serikat di D3DDDI_SYNCHRONIZATIONOBJECTINFO2 memegang struktur Semaphore .

Semaphore.MaxCount

Jumlah maksimum peristiwa yang dapat dinanti objek.

Semaphore.InitialCount

Jumlah awal peristiwa yang dinanti objek.

Fence

Struktur yang berisi informasi tentang pagar. Jika anggota Jenis sama dengan D3DDDI_FENCE, serikat di D3DDDI_SYNCHRONIZATIONOBJECTINFO2 memegang struktur Pagar .

Fence.FenceValue

Nilai 64-bit yang menentukan nilai pagar awal.

CPUNotification

Struktur yang berisi informasi tentang pemberitahuan CPU. Jika anggota Jenis sama dengan D3DDDI_CPU_NOTIFICATION, gabungan di D3DDDI_SYNCHRONIZATIONOBJECTINFO2 memegang struktur CPUNotification .

void D3DKMT_PTR( HANDLE unnamedParam1, Event unnamedParam2)

MonitoredFence

Struktur yang berisi informasi tentang pagar yang dipantau. Jika anggota Jenis sama dengan D3DDDI_MONITORED_FENCE, union di D3DDDI_SYNCHRONIZATIONOBJECTINFO2 memegang struktur MonitoredFence .

Pagar yang dipantau hanya dapat dibagikan dengan menggunakan handel NT karena alasan keamanan, sehingga bendera NtSecuritySharing harus diatur saat menggunakan pagar yang dipantau.

Didukung dimulai dengan Windows 10.

MonitoredFence.InitialFenceValue

[in] Nilai 64-bit yang menentukan nilai pagar awal.

Didukung dimulai dengan Windows 10.

void D3DKMT_PTR( VOID *unnamedParam1, FenceValueCPUVirtualAddress unnamedParam2)

MonitoredFence.FenceValueGPUVirtualAddress

[out] Pemetaan baca-tulis dari nilai pagar untuk GPU. Driver dapat memberi sinyal nilai pagar baru dengan memasukkan perintah tulis GPU untuk alamat ini ke dalam buffer perintah, dan Dxgkrnl akan membuka blokir pelayan untuk nilai objek pagar ini. Bergantung pada nilai batas No64BitAtomics , alamat ini menunjuk ke nilai yang mendasar 32 bit atau 64 bit. Jika perangkat tidak mendukung koherensi cache dengan CPU, perangkat tidak boleh menulis ke nilai pagar menggunakan alamat virtual GPU. Akses ke nilai pagar harus dilakukan hanya oleh CPU.

Didukung dimulai dengan Windows 10.

MonitoredFence.EngineAffinity

[in] Bidang bit, di mana setiap posisi bit (mulai dari nol) mendefinisikan indeks adaptor fisik dalam tautan adaptor tampilan tautan (LDA) tempat alamat virtual GPU akan diterapkan. Nol berarti bahwa alamat virtual GPU akan berkomitmen untuk semua adaptor fisik.

Didukung dimulai dengan Windows 10.

MonitoredFence.Padding

PeriodicMonitoredFence

Struktur yang berisi informasi tentang pagar yang dipantau secara berkala. Jika anggota Jenis sama dengan D3DDDI_PERIODIC_MONITORED_FENCE, union di D3DDDI_SYNCHRONIZATIONOBJECTINFO2 memegang struktur MonitoredFence .

Didukung dimulai dengan Windows 10.

VidPnTargetID

[out] ID output yang ingin diterima oleh komppositori.

PeriodicMonitoredFence.hAdapter

[in] Handel ke adaptor yang terkait dengan VidPnSourceID

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

[out] Mewakili offset sebelum VSync (waktu VSync – Parameter waktu). Nilai Waktu mungkin tidak lebih panjang dari interval VSync (1 / DisplayModeRefresh). Waktu ditentukan dalam satuan 100ns.

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[in] Pemetaan baca-saja dari nilai pagar untuk GPU

PeriodicMonitoredFence.EngineAffinity

[in] Menentukan adaptor fisik tempat VA GPU akan dipetakan

PeriodicMonitoredFence.Padding

Reserved

Struktur yang dicadangkan untuk digunakan di masa mendatang. Struktur ini berisi anggota berikut:

Reserved.Reserved[8]

SharedHandle

[out] Handel ke objek sinkronisasi bersama jika handel bersama saat ini ada. Driver harus berbagi objek sinkronisasi menggunakan handel NT. Ini harus mengatur D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing untuk menunjukkan bahwa objek akan dibagikan menggunakan handel NT dan memanggil D3DKMTShareObjects untuk mendapatkan handel NT. Menggunakan handel global tidak aman. Proses apa pun dapat menebak handel global dan membuka objek bersama. Handel global hanya didukung untuk alasan kompatibilitas dengan runtime D3D lama.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7
Header d3dukmdt.h (termasuk D3dumddi.h, D3dkmddi.h)

Lihat juga

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2