API Reference
This file contains a reference for headers that weren’t documented elsewhere.
BasicTypes.h
-
namespace Fwog
Enums
-
enum ImageType
Values:
-
enumerator TEX_1D
-
enumerator TEX_2D
-
enumerator TEX_3D
-
enumerator TEX_1D_ARRAY
-
enumerator TEX_2D_ARRAY
-
enumerator TEX_CUBEMAP
-
enumerator TEX_CUBEMAP_ARRAY
-
enumerator TEX_2D_MULTISAMPLE
-
enumerator TEX_2D_MULTISAMPLE_ARRAY
-
enumerator TEX_1D
-
enum ComponentSwizzle
Specifies how a component is swizzled.
Values:
-
enumerator ZERO
-
enumerator ONE
-
enumerator R
-
enumerator G
-
enumerator B
-
enumerator A
-
enumerator ZERO
-
enum Format
Values:
-
enumerator UNDEFINED
-
enumerator R8_UNORM
-
enumerator R8_SNORM
-
enumerator R16_UNORM
-
enumerator R16_SNORM
-
enumerator R8G8_UNORM
-
enumerator R8G8_SNORM
-
enumerator R16G16_UNORM
-
enumerator R16G16_SNORM
-
enumerator R3G3B2_UNORM
-
enumerator R4G4B4_UNORM
-
enumerator R5G5B5_UNORM
-
enumerator R8G8B8_UNORM
-
enumerator R8G8B8_SNORM
-
enumerator R10G10B10_UNORM
-
enumerator R12G12B12_UNORM
-
enumerator R16G16B16_SNORM
-
enumerator R2G2B2A2_UNORM
-
enumerator R4G4B4A4_UNORM
-
enumerator R5G5B5A1_UNORM
-
enumerator R8G8B8A8_UNORM
-
enumerator R8G8B8A8_SNORM
-
enumerator R10G10B10A2_UNORM
-
enumerator R10G10B10A2_UINT
-
enumerator R12G12B12A12_UNORM
-
enumerator R16G16B16A16_UNORM
-
enumerator R16G16B16A16_SNORM
-
enumerator R8G8B8_SRGB
-
enumerator R8G8B8A8_SRGB
-
enumerator R16_FLOAT
-
enumerator R16G16_FLOAT
-
enumerator R16G16B16_FLOAT
-
enumerator R16G16B16A16_FLOAT
-
enumerator R32_FLOAT
-
enumerator R32G32_FLOAT
-
enumerator R32G32B32_FLOAT
-
enumerator R32G32B32A32_FLOAT
-
enumerator R11G11B10_FLOAT
-
enumerator R9G9B9_E5
-
enumerator R8_SINT
-
enumerator R8_UINT
-
enumerator R16_SINT
-
enumerator R16_UINT
-
enumerator R32_SINT
-
enumerator R32_UINT
-
enumerator R8G8_SINT
-
enumerator R8G8_UINT
-
enumerator R16G16_SINT
-
enumerator R16G16_UINT
-
enumerator R32G32_SINT
-
enumerator R32G32_UINT
-
enumerator R8G8B8_SINT
-
enumerator R8G8B8_UINT
-
enumerator R16G16B16_SINT
-
enumerator R16G16B16_UINT
-
enumerator R32G32B32_SINT
-
enumerator R32G32B32_UINT
-
enumerator R8G8B8A8_SINT
-
enumerator R8G8B8A8_UINT
-
enumerator R16G16B16A16_SINT
-
enumerator R16G16B16A16_UINT
-
enumerator R32G32B32A32_SINT
-
enumerator R32G32B32A32_UINT
-
enumerator D32_FLOAT
-
enumerator D32_UNORM
-
enumerator D24_UNORM
-
enumerator D16_UNORM
-
enumerator D32_FLOAT_S8_UINT
-
enumerator D24_UNORM_S8_UINT
-
enumerator BC1_RGB_UNORM
-
enumerator BC1_RGB_SRGB
-
enumerator BC1_RGBA_UNORM
-
enumerator BC1_RGBA_SRGB
-
enumerator BC2_RGBA_UNORM
-
enumerator BC2_RGBA_SRGB
-
enumerator BC3_RGBA_UNORM
-
enumerator BC3_RGBA_SRGB
-
enumerator BC4_R_UNORM
-
enumerator BC4_R_SNORM
-
enumerator BC5_RG_UNORM
-
enumerator BC5_RG_SNORM
-
enumerator BC6H_RGB_UFLOAT
-
enumerator BC6H_RGB_SFLOAT
-
enumerator BC7_RGBA_UNORM
-
enumerator BC7_RGBA_SRGB
-
enumerator UNDEFINED
-
enum SampleCount
Values:
-
enumerator SAMPLES_1
-
enumerator SAMPLES_2
-
enumerator SAMPLES_4
-
enumerator SAMPLES_8
-
enumerator SAMPLES_16
-
enumerator SAMPLES_32
-
enumerator SAMPLES_1
-
enum UploadFormat
Values:
-
enumerator UNDEFINED
-
enumerator R
-
enumerator RG
-
enumerator RGB
-
enumerator BGR
-
enumerator RGBA
-
enumerator BGRA
-
enumerator R_INTEGER
-
enumerator RG_INTEGER
-
enumerator RGB_INTEGER
-
enumerator BGR_INTEGER
-
enumerator RGBA_INTEGER
-
enumerator BGRA_INTEGER
-
enumerator DEPTH_COMPONENT
-
enumerator STENCIL_INDEX
-
enumerator DEPTH_STENCIL
-
enumerator INFER_FORMAT
For CopyTextureToBuffer and CopyBufferToTexture.
-
enumerator UNDEFINED
-
enum UploadType
Values:
-
enumerator UNDEFINED
-
enumerator UBYTE
-
enumerator SBYTE
-
enumerator USHORT
-
enumerator SSHORT
-
enumerator UINT
-
enumerator SINT
-
enumerator FLOAT
-
enumerator UBYTE_3_3_2
-
enumerator UBYTE_2_3_3_REV
-
enumerator USHORT_5_6_5
-
enumerator USHORT_5_6_5_REV
-
enumerator USHORT_4_4_4_4
-
enumerator USHORT_4_4_4_4_REV
-
enumerator USHORT_5_5_5_1
-
enumerator USHORT_1_5_5_5_REV
-
enumerator UINT_8_8_8_8
-
enumerator UINT_8_8_8_8_REV
-
enumerator UINT_10_10_10_2
-
enumerator UINT_2_10_10_10_REV
-
enumerator INFER_TYPE
For CopyTextureToBuffer and CopyBufferToTexture.
-
enumerator UNDEFINED
-
enum AddressMode
Values:
-
enumerator REPEAT
-
enumerator MIRRORED_REPEAT
-
enumerator CLAMP_TO_EDGE
-
enumerator CLAMP_TO_BORDER
-
enumerator MIRROR_CLAMP_TO_EDGE
-
enumerator REPEAT
-
enum BorderColor
Values:
-
enumerator FLOAT_TRANSPARENT_BLACK
-
enumerator INT_TRANSPARENT_BLACK
-
enumerator FLOAT_OPAQUE_BLACK
-
enumerator INT_OPAQUE_BLACK
-
enumerator FLOAT_OPAQUE_WHITE
-
enumerator INT_OPAQUE_WHITE
-
enumerator FLOAT_TRANSPARENT_BLACK
-
enum AspectMaskBit
Values:
-
enumerator COLOR_BUFFER_BIT
-
enumerator DEPTH_BUFFER_BIT
-
enumerator STENCIL_BUFFER_BIT
-
enumerator COLOR_BUFFER_BIT
-
enum PrimitiveTopology
Values:
-
enumerator POINT_LIST
-
enumerator LINE_LIST
-
enumerator LINE_STRIP
-
enumerator TRIANGLE_LIST
-
enumerator TRIANGLE_STRIP
-
enumerator TRIANGLE_FAN
-
enumerator PATCH_LIST
Note
Available only in pipelines with tessellation shaders
-
enumerator POINT_LIST
-
enum CullMode
Values:
-
enumerator NONE
-
enumerator FRONT
-
enumerator BACK
-
enumerator FRONT_AND_BACK
-
enumerator NONE
-
enum CompareOp
Values:
-
enumerator NEVER
-
enumerator LESS
-
enumerator EQUAL
-
enumerator LESS_OR_EQUAL
-
enumerator GREATER
-
enumerator NOT_EQUAL
-
enumerator GREATER_OR_EQUAL
-
enumerator ALWAYS
-
enumerator NEVER
-
enum LogicOp
Values:
-
enumerator CLEAR
-
enumerator SET
-
enumerator COPY
-
enumerator COPY_INVERTED
-
enumerator NO_OP
-
enumerator INVERT
-
enumerator AND
-
enumerator NAND
-
enumerator OR
-
enumerator NOR
-
enumerator XOR
-
enumerator EQUIVALENT
-
enumerator AND_REVERSE
-
enumerator OR_REVERSE
-
enumerator AND_INVERTED
-
enumerator OR_INVERTED
-
enumerator CLEAR
-
enum BlendFactor
Values:
-
enumerator ZERO
-
enumerator ONE
-
enumerator SRC_COLOR
-
enumerator ONE_MINUS_SRC_COLOR
-
enumerator DST_COLOR
-
enumerator ONE_MINUS_DST_COLOR
-
enumerator SRC_ALPHA
-
enumerator ONE_MINUS_SRC_ALPHA
-
enumerator DST_ALPHA
-
enumerator ONE_MINUS_DST_ALPHA
-
enumerator CONSTANT_COLOR
-
enumerator ONE_MINUS_CONSTANT_COLOR
-
enumerator CONSTANT_ALPHA
-
enumerator ONE_MINUS_CONSTANT_ALPHA
-
enumerator SRC_ALPHA_SATURATE
-
enumerator SRC1_COLOR
-
enumerator ONE_MINUS_SRC1_COLOR
-
enumerator SRC1_ALPHA
-
enumerator ONE_MINUS_SRC1_ALPHA
-
enumerator ZERO
-
enum BlendOp
Values:
-
enumerator ADD
-
enumerator SUBTRACT
-
enumerator REVERSE_SUBTRACT
-
enumerator MIN
-
enumerator MAX
-
enumerator ADD
-
enum ColorComponentFlag
Values:
-
enumerator NONE
-
enumerator R_BIT
-
enumerator G_BIT
-
enumerator B_BIT
-
enumerator A_BIT
-
enumerator RGBA_BITS
-
enumerator NONE
-
enum IndexType
Values:
-
enumerator UNSIGNED_BYTE
-
enumerator UNSIGNED_SHORT
-
enumerator UNSIGNED_INT
-
enumerator UNSIGNED_BYTE
-
enum MemoryBarrierBit
Values:
-
enumerator NONE
-
enumerator VERTEX_BUFFER_BIT
-
enumerator INDEX_BUFFER_BIT
-
enumerator UNIFORM_BUFFER_BIT
-
enumerator TEXTURE_FETCH_BIT
-
enumerator IMAGE_ACCESS_BIT
-
enumerator COMMAND_BUFFER_BIT
-
enumerator TEXTURE_UPDATE_BIT
-
enumerator BUFFER_UPDATE_BIT
-
enumerator MAPPED_BUFFER_BIT
-
enumerator FRAMEBUFFER_BIT
-
enumerator SHADER_STORAGE_BIT
-
enumerator QUERY_COUNTER_BIT
-
enumerator ALL_BITS
-
enumerator NONE
Functions
Variables
-
constexpr uint64_t WHOLE_BUFFER = static_cast<uint64_t>(-1)
Convenience constant to allow binding the whole buffer in Cmd::BindUniformBuffer and Cmd::BindStorageBuffer.
If an offset is provided with this constant, then the range [offset, buffer.Size()) will be bound.
-
struct DispatchIndirectCommand
-
struct DrawIndexedIndirectCommand
-
struct DrawIndirectCommand
-
struct Extent2D
Public Functions
-
struct Extent3D
Public Functions
-
struct Offset2D
Public Functions
-
struct Offset3D
Public Functions
-
struct Rect2D
-
enum ImageType
Buffer.h
-
namespace Fwog
Enums
-
enum BufferStorageFlag
Values:
-
enumerator NONE
-
enumerator DYNAMIC_STORAGE
Allows the user to update the buffer’s contents with Buffer::UpdateData.
-
enumerator CLIENT_STORAGE
Hints to the implementation to place the buffer storage in host memory.
-
enumerator MAP_MEMORY
Maps the buffer (persistently and coherently) upon creation.
-
enumerator NONE
-
class Buffer
- #include <Buffer.h>
Encapsulates an OpenGL buffer.
Public Functions
-
explicit Buffer(size_t size, BufferStorageFlags storageFlags = BufferStorageFlag::NONE, std::string_view name = "")
-
explicit Buffer(TriviallyCopyableByteSpan data, BufferStorageFlags storageFlags = BufferStorageFlag::NONE, std::string_view name = "")
-
~Buffer()
-
void UpdateData(TriviallyCopyableByteSpan data, size_t destOffsetBytes = 0)
-
void FillData(const BufferFillInfo &clear = {})
-
inline void *GetMappedPointer() noexcept
Gets a pointer that is mapped to the buffer’s data store.
- Returns:
A pointer to mapped memory if the buffer was created with BufferStorageFlag::MAP_MEMORY, otherwise nullptr
-
inline const void *GetMappedPointer() const noexcept
-
inline auto Handle() const noexcept
-
inline auto Size() const noexcept
-
inline bool IsMapped() const noexcept
-
void Invalidate()
Invalidates the content of the buffer’s data store.
This call can be used to optimize driver synchronization in certain cases.
-
explicit Buffer(size_t size, BufferStorageFlags storageFlags = BufferStorageFlag::NONE, std::string_view name = "")
-
struct BufferFillInfo
- #include <Buffer.h>
Parameters for Buffer::FillData.
-
class TriviallyCopyableByteSpan : public std::span<const std::byte>
- #include <Buffer.h>
Used to constrain the types accpeted by Buffer.
Public Functions
- template<typename T> inline requires std::is_trivially_copyable_v< T > TriviallyCopyableByteSpan (const T &t)
- template<typename T> inline requires std::is_trivially_copyable_v< T > TriviallyCopyableByteSpan (std::span< const T > t)
- template<typename T> inline requires std::is_trivially_copyable_v< T > TriviallyCopyableByteSpan (std::span< T > t)
-
enum BufferStorageFlag
DebugMarker.h
-
namespace Fwog
-
class ScopedDebugMarker
- #include <DebugMarker.h>
Use to demarcate a scope for viewing in a graphics debugger.
Public Functions
-
ScopedDebugMarker(const char *message)
-
~ScopedDebugMarker()
-
ScopedDebugMarker(const ScopedDebugMarker&) = delete
-
ScopedDebugMarker(const char *message)
-
class ScopedDebugMarker
Fence.h
-
namespace Fwog
-
class Fence
- #include <Fence.h>
An object used for CPU-GPU synchronization.
Public Functions
-
explicit Fence()
-
~Fence()
-
void Signal()
Inserts a fence into the command stream.
-
uint64_t Wait()
Waits for the fence to be signaled and returns.
- Todo:
Add timeout parameter
- Returns:
How long (in nanoseconds) the fence blocked
Private Functions
-
void DeleteSync()
Private Members
-
void *sync_ = {}
-
explicit Fence()
-
class Fence
Shader.h
-
namespace Fwog
Enums
-
class Shader
- #include <Shader.h>
A shader object to be used in one or more GraphicsPipeline or ComputePipeline objects.
Public Functions
-
explicit Shader(PipelineStage stage, std::string_view source, std::string_view name = "")
Constructs the shader.
- Parameters:
stage – A pipeline stage
source – A GLSL source string
- Throws:
ShaderCompilationException – if the shader is malformed
-
~Shader()
-
inline uint32_t Handle() const
Gets the handle of the underlying OpenGL shader object.
- Returns:
The shader
Private Members
-
uint32_t id_ = {}
-
explicit Shader(PipelineStage stage, std::string_view source, std::string_view name = "")
-
class Shader
Texture.h
-
namespace Fwog
Functions
-
struct ComponentMapping
- #include <Texture.h>
Specifies a color component mapping.
Public Members
-
struct CompressedTextureUpdateInfo
- #include <Texture.h>
Parameters for Texture::UpdateCompressedImage.
-
class Sampler
- #include <Texture.h>
Encapsulates an OpenGL sampler.
Public Functions
-
explicit Sampler(const SamplerState &samplerState)
-
inline uint32_t Handle() const
Gets the handle of the underlying OpenGL sampler object.
- Returns:
The sampler
Private Members
-
uint32_t id_ = {}
Friends
- friend class detail::SamplerCache
-
explicit Sampler(const SamplerState &samplerState)
-
struct SamplerState
- #include <Texture.h>
Parameters for the constructor of Sampler.
Public Functions
-
bool operator==(const SamplerState &rhs) const noexcept = default
Public Members
-
float lodBias = {0}
-
float minLod = {-1000}
-
float maxLod = {1000}
-
AddressMode addressModeU = AddressMode::CLAMP_TO_EDGE
-
AddressMode addressModeV = AddressMode::CLAMP_TO_EDGE
-
AddressMode addressModeW = AddressMode::CLAMP_TO_EDGE
-
BorderColor borderColor = BorderColor::FLOAT_OPAQUE_WHITE
-
SampleCount anisotropy = SampleCount::SAMPLES_1
-
bool compareEnable = false
-
bool operator==(const SamplerState &rhs) const noexcept = default
-
class Texture
- #include <Texture.h>
Encapsulates an immutable OpenGL texture.
Subclassed by Fwog::TextureView
Public Functions
-
explicit Texture(const TextureCreateInfo &createInfo, std::string_view name = "")
Constructs the texture.
- Parameters:
createInfo – Parameters to construct the texture
name – An optional name for viewing the resource in a graphics debugger
-
virtual ~Texture()
-
void UpdateImage(const TextureUpdateInfo &info)
Updates a subresource of the image.
Note
info.format must not be a compressed image format
- Parameters:
info – The subresource and data to upload
-
void UpdateCompressedImage(const CompressedTextureUpdateInfo &info)
Updates a subresource of the image.
Note
Image must be in a compressed image format
Note
info.data must be in a compatible compressed image format
- Parameters:
info – The subresource and data to upload
-
void ClearImage(const TextureClearInfo &info)
Clears a subresource of the image to a specified value.
- Parameters:
info – The subresource and value to clear it with
-
void GenMipmaps()
Automatically generates LoDs of the image. All mip levels beyond 0 are filled with the generated LoDs.
-
TextureView CreateSingleMipView(uint32_t level)
Creates a view of a single mip level of the image.
-
TextureView CreateSingleLayerView(uint32_t layer)
Creates a view of a single array layer of the image.
-
TextureView CreateFormatView(Format newFormat)
Reinterpret the data of this texture.
- Parameters:
newFormat – The format to reinterpret the data as
- Returns:
A new texture view
-
TextureView CreateSwizzleView(ComponentMapping components)
Creates a view of the texture with a new component mapping.
- Parameters:
components – The swizzled components
- Returns:
A new texture view
-
uint64_t GetBindlessHandle(Sampler sampler)
Generates and makes resident a bindless handle from the image and a sampler. Only available if GL_ARB_bindless_texture is supported.
- Todo:
Improve this
- Parameters:
sampler – The sampler to bind to the texture
- Returns:
A bindless texture handle that can be placed in a buffer and used to construct a combined texture sampler in a shader
-
inline const TextureCreateInfo &GetCreateInfo() const noexcept
-
inline uint32_t Handle() noexcept
Gets the handle of the underlying OpenGL texture object.
- Returns:
The texture
Protected Functions
-
void subImageInternal(const TextureUpdateInfo &info)
-
void subCompressedImageInternal(const CompressedTextureUpdateInfo &info)
-
Texture() = default
Protected Attributes
-
uint32_t id_ = {}
-
TextureCreateInfo createInfo_ = {}
-
uint64_t bindlessHandle_ = 0
Friends
-
friend void CopyBufferToTexture(const CopyBufferToTextureInfo ©)
Copies buffer data into a texture.
-
explicit Texture(const TextureCreateInfo &createInfo, std::string_view name = "")
-
struct TextureClearInfo
- #include <Texture.h>
Parameters for Texture::ClearImage.
Public Members
-
uint32_t level = 0
-
UploadFormat format = UploadFormat::INFER_FORMAT
-
UploadType type = UploadType::INFER_TYPE
-
const void *data = nullptr
If null, then the subresource will be cleared with zeroes.
-
uint32_t level = 0
-
struct TextureCreateInfo
- #include <Texture.h>
Parameters for the constructor of Texture.
Public Functions
-
bool operator==(const TextureCreateInfo&) const noexcept = default
-
bool operator==(const TextureCreateInfo&) const noexcept = default
-
struct TextureUpdateInfo
- #include <Texture.h>
Parameters for Texture::UpdateImage.
Public Members
-
uint32_t level = 0
-
UploadFormat format = UploadFormat::INFER_FORMAT
-
UploadType type = UploadType::INFER_TYPE
-
const void *pixels = nullptr
-
uint32_t rowLength = 0
Specifies, in texels, the size of rows in the array (for 2D and 3D images). If zero, it is assumed to be tightly packed according to size.
-
uint32_t imageHeight = 0
Specifies, in texels, the number of rows in the array (for 3D images. If zero, it is assumed to be tightly packed according to size.
-
uint32_t level = 0
-
class TextureView : public Fwog::Texture
- #include <Texture.h>
Encapsulates an OpenGL texture view.
Public Functions
-
explicit TextureView(const TextureViewCreateInfo &viewInfo, Texture &texture, std::string_view name = "")
Constructs the texture view with explicit parameters.
- Parameters:
viewInfo – Parameters to construct the texture
texture – A texture of which to construct a view
name – An optional name for viewing the resource in a graphics debugger
-
explicit TextureView(const TextureViewCreateInfo &viewInfo, TextureView &textureView, std::string_view name = "")
-
TextureView(TextureView &&old) noexcept
-
TextureView &operator=(TextureView &&old) noexcept
-
TextureView(const TextureView &other) = delete
-
TextureView &operator=(const TextureView &other) = delete
-
~TextureView()
-
inline TextureViewCreateInfo GetViewInfo() const noexcept
Private Functions
-
TextureView()
Private Members
-
TextureViewCreateInfo viewInfo_ = {}
-
explicit TextureView(const TextureViewCreateInfo &viewInfo, Texture &texture, std::string_view name = "")
-
struct TextureViewCreateInfo
- #include <Texture.h>
Parameters for the constructor of TextureView.
Public Members
-
ImageType viewType = {}
Note
Must be an image type compatible with the base texture as defined by table 8.21 in the OpenGL spec
-
Format format = {}
Note
Must be a format compatible with the base texture as defined by table 8.22 in the OpenGL spec
-
ComponentMapping components = {}
-
uint32_t minLevel = 0
-
uint32_t numLevels = 0
-
uint32_t minLayer = 0
-
uint32_t numLayers = 0
-
ImageType viewType = {}
-
namespace detail
-
struct ComponentMapping
Timer.h
-
namespace Fwog
-
class TimerQuery
- #include <Timer.h>
Synchronous single-buffered GPU-timeline timer. Querying the timer will result in a stall as commands are flushed and waited on to complete.
Use sparingly, and only if detailed perf data is needed for a particular draw.
- Todo:
This class is in desparate need of an update
Public Functions
-
TimerQuery()
-
~TimerQuery()
-
TimerQuery(const TimerQuery&) = delete
-
TimerQuery(TimerQuery&&) = delete
-
TimerQuery &operator=(const TimerQuery&) = delete
-
TimerQuery &operator=(TimerQuery&&) = delete
-
uint64_t GetTimestamp()
Private Members
-
uint32_t queries[2]
-
class TimerQueryAsync
- #include <Timer.h>
Async N-buffered timer query that does not induce pipeline stalls.
Useful for measuring performance of passes every frame without causing stalls. However, the results returned may be from multiple frames ago, and results are not guaranteed to be available. In practice, setting N to 5 should allow at least one query to be available every frame.
Public Functions
-
TimerQueryAsync(uint32_t N)
-
~TimerQueryAsync()
-
TimerQueryAsync(const TimerQueryAsync&) = delete
-
TimerQueryAsync(TimerQueryAsync&&) = delete
-
TimerQueryAsync &operator=(const TimerQueryAsync&) = delete
-
TimerQueryAsync &operator=(TimerQueryAsync&&) = delete
-
void BeginZone()
Begins a query zone.
Note
EndZone must be called before another zone can begin
-
void EndZone()
Ends a query zone.
Note
BeginZone must be called before a zone can end
-
std::optional<uint64_t> PopTimestamp()
Gets the latest available query.
- Returns:
The latest query, if available. Otherwise, std::nullopt is returned
-
TimerQueryAsync(uint32_t N)
-
template<typename T>
class TimerScoped - #include <Timer.h>
RAII wrapper for TimerQueryAsync.
-
class TimerQuery