This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Basics
Rendering
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Version Control
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Sandworm
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Built-in Node Types
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
VR-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials

Unigine::ResourceFence Class

Header: #include <UnigineResourceFence.h>

This class allows managing the resource fence, an object that allows synchronizing the engine GPU thread and an external GPU thread.

Notice

Fence synchronization is called implicitly by the engine, i.e. ID3D12CommandQueue::Wait/ID3D12CommandQueue::Signal (and similar for Vulkan using timeline semaphores) is called in ID3D12CommandQueue::Wait - ID3D12CommandQueue::ExecuteCommandLists - ID3D12CommandQueue::Signal order.

For DX12, it is called in the Engine's Internal thread, while Vulkan and DX11 implementations call it from Engine's Main thread.

Signal also increments values before signaling on the GPU.

ResourceFence Class

Members


ResourceFence ( ) #

ResourceFence constructor. Resource fence is created as enabled by default. It is created in engine GPU thread and is to be manually imported to the external graphics API.

void setEnabled ( bool enabled ) #

Toggles the resource fence on and off.

Arguments

  • bool enabled - true to enable the resource fence, false to disable it.

bool isEnabled ( ) const#

Returns the value indicating if the resource fence is enabled.

Return value

true if the resource fence is enabled, otherwise false.

void* getWin32Handle ( ) const#

Returns the pointer to a variable that receives the NT HANDLE value to the resource to share. You can use this handle in calls to access the resource.

Return value

Win32 handle. If called under Linux, returns nullptr.

int getFdHandle ( ) const#

Returns the file descriptor referencing the payload of the device memory object.

Return value

Linux handle. If called under Windows, returns -1.

unsigned long long getValue ( ) const#

Returns the fence value (signal and wait value).

Return value

The fence value.

unsigned long long incrementValue ( ) #

Increments the fence value (signal and wait value).

Return value

The fence value.

void waitGPU ( ) #

This method ensures that all processes in the engine GPU thread are completed.

void closeHandle ( ) #

Closes the handle. To avoid memory leaks, use this method when you no longer need the resource handle (for example, as soon as you imported the object to another graphics API).
Last update: 2024-12-13
Build: ()