Loading...
Searching...
No Matches
CaptureStrategyCommon.hpp File Reference

Backend-neutral plumbing shared by GPU-direct video CAPTURE strategies (no graphics-API headers). More...

Detailed Description

Backend-neutral plumbing shared by GPU-direct video CAPTURE strategies (no graphics-API headers).

These pieces are common to every capture strategy regardless of backend: the lock-free slot handoff between the vendor capture thread and the render thread, and the output-texture byte-size sanity check. They carry no GL / Vulkan / D3D dependency, so a Vulkan strategy can use them without dragging in OpenGL private headers (which GLCaptureUpload.hpp does). GL-specific upload helpers live in GLCaptureUpload.hpp, which includes this file.

Go to the source code of this file.

Classes

struct  score::gfx::interop::CaptureSlotPublisher
 Lock-free single-producer/single-consumer slot handoff. More...
 
struct  score::gfx::interop::BorrowedSlotTracker
 Ownership bookkeeping for capture strategies that sample the producer's own buffers instead of copying out of them. More...
 

Namespaces

namespace  score
 Base toolkit upon which the software is built.
 
namespace  score::gfx
 Graphics rendering pipeline for ossia score.
 

Functions

bool score::gfx::interop::validateCaptureTextureBytes (const QRhiTexture *tex, std::uint32_t frameByteSize, const char *tag) noexcept
 Validate that an RGBA8-typed output texture's byte footprint matches the captured frame size (width * 4 * height == frameByteSize).
 

Function Documentation

◆ validateCaptureTextureBytes()

bool score::gfx::interop::validateCaptureTextureBytes ( const QRhiTexture *  tex,
std::uint32_t  frameByteSize,
const char *  tag 
)
inlinenoexcept

Validate that an RGBA8-typed output texture's byte footprint matches the captured frame size (width * 4 * height == frameByteSize).

Logs and returns false on mismatch so a strategy can bail before DMAing into a wrongly-sized texture. tag is a per-strategy prefix for the warning.