#pragma once #include "types.h" #include "binder.h" #include "../nvidia/fence.h" typedef struct { s32 left; s32 top; s32 right; s32 bottom; } BqRect; typedef struct { struct { s64 timestamp; } PACKED; s32 isAutoTimestamp; BqRect crop; s32 scalingMode; u32 transform; // See the NATIVE_WINDOW_TRANSFORM_* enums. u32 stickyTransform; u32 unk; u32 swapInterval; NvMultiFence fence; } BqBufferInput; typedef struct { u32 width; u32 height; u32 transformHint; u32 numPendingBuffers; } BqBufferOutput; typedef struct { u32 width; u32 height; u32 stride; u32 format; u32 usage; NativeHandle* native_handle; } BqGraphicBuffer; Result bqRequestBuffer(Binder *b, s32 bufferIdx, BqGraphicBuffer *buf); Result bqDequeueBuffer(Binder *b, bool async, u32 width, u32 height, s32 format, u32 usage, s32 *buf, NvMultiFence *fence); Result bqDetachBuffer(Binder *b, s32 slot); Result bqQueueBuffer(Binder *b, s32 buf, const BqBufferInput *input, BqBufferOutput *output); Result bqCancelBuffer(Binder *b, s32 buf, const NvMultiFence *fence); Result bqQuery(Binder *b, s32 what, s32* value); Result bqConnect(Binder *b, s32 api, bool producerControlledByApp, BqBufferOutput *output); Result bqDisconnect(Binder *b, s32 api); Result bqSetPreallocatedBuffer(Binder *b, s32 buf, const BqGraphicBuffer *input);