diff --git a/WF/wfd.h b/WF/wfd.h new file mode 100644 index 0000000..ecc2f10 --- /dev/null +++ b/WF/wfd.h @@ -0,0 +1,645 @@ +/* Copyright (c) 2009 The Khronos Group Inc. + * Copyright (c) 2020-2022, NVIDIA CORPORATION. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and/or associated documentation files (the + * "Materials"), to deal in the Materials without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Materials, and to + * permit persons to whom the Materials are furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + */ + +/*! \defgroup wfd OpenWF Display SI + * @{ + */ + +/*! \file wfd.h + * + * \brief OpenWF Display public API, type definitions and function prototypes + * + * This is one of the three header files defined by the specification. + * This file contains the portable definitions of data types + * and function prototypes. + + * Refer to OpenWF Display specification for the + * additional documentation. + * + */ + +/*! @} */ + +#ifndef WFD_H +#define WFD_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OPENWFD_VERSION_1_0 (1) + +#define WFD_NONE (0) + +#define WFD_INVALID_PORT_ID (0) +#define WFD_INVALID_PIPELINE_ID (0) +#define WFD_INVALID_PIPELINE_LAYER (0) + +#define WFD_DEFAULT_DEVICE_ID (0) + +typedef enum +{ WFD_FALSE = KHRONOS_FALSE, + WFD_TRUE = KHRONOS_TRUE +} WFDboolean; + +typedef char char_t; + +#define WFD_MAX_INT ((WFDint)16777216) +#define WFD_MAX_FLOAT ((WFDfloat)16777216) + +#define WFD_INVALID_HANDLE ((WFDHandle)0) + +typedef WFDHandle WFDDevice; +typedef WFDHandle WFDPort; +typedef WFDHandle WFDPortMode; +typedef WFDHandle WFDPipeline; +typedef WFDHandle WFDSource; + +#ifndef NV_SAFETY_BUILD +typedef WFDHandle WFDEvent; +typedef WFDHandle WFDMask; +#endif + +typedef enum +{ WFD_VENDOR = 0x7500, + WFD_RENDERER = 0x7501, + WFD_VERSION = 0x7502, + WFD_EXTENSIONS = 0x7503, + WFD_STRING_ID_FORCE_32BIT = 0x7FFFFFFF +} WFDStringID; + +typedef enum +{ WFD_ERROR_NONE = 0, + WFD_ERROR_OUT_OF_MEMORY = 0x7510, + WFD_ERROR_ILLEGAL_ARGUMENT = 0x7511, + WFD_ERROR_NOT_SUPPORTED = 0x7512, + WFD_ERROR_BAD_ATTRIBUTE = 0x7513, + WFD_ERROR_IN_USE = 0x7514, + WFD_ERROR_BUSY = 0x7515, + WFD_ERROR_BAD_DEVICE = 0x7516, + WFD_ERROR_BAD_HANDLE = 0x7517, + WFD_ERROR_INCONSISTENCY = 0x7518, + WFD_ERROR_FORCE_32BIT = 0x7FFFFFFF +} WFDErrorCode; + +typedef enum +{ WFD_DEVICE_FILTER_PORT_ID = 0x7530, + WFD_DEVICE_FILTER_FORCE_32BIT = 0x7FFFFFFF +} WFDDeviceFilter; + +typedef enum +{ WFD_COMMIT_ENTIRE_DEVICE = 0x7550, + WFD_COMMIT_ENTIRE_PORT = 0x7551, + WFD_COMMIT_PIPELINE = 0x7552, + WFD_COMMIT_FORCE_32BIT = 0x7FFFFFFF +} WFDCommitType; + +#ifndef NV_SAFETY_BUILD + +typedef enum +{ WFD_DEVICE_ID = 0x7560, + WFD_DEVICE_ATTRIB_FORCE_32BIT = 0x7FFFFFFF +} WFDDeviceAttrib; + +typedef enum +{ WFD_EVENT_INVALID = 0x7580, + WFD_EVENT_NONE = 0x7581, + WFD_EVENT_DESTROYED = 0x7582, + WFD_EVENT_PORT_ATTACH_DETACH = 0x7583, + WFD_EVENT_PORT_PROTECTION_FAILURE = 0x7584, + WFD_EVENT_PIPELINE_BIND_SOURCE_COMPLETE = 0x7585, + WFD_EVENT_PIPELINE_BIND_MASK_COMPLETE = 0x7586, + WFD_EVENT_FORCE_32BIT = 0x7FFFFFFF +} WFDEventType; + +typedef enum +{ /* Configuration Attributes */ + WFD_EVENT_PIPELINE_BIND_QUEUE_SIZE = 0x75C0, + + /* Generic Event Attributes */ + WFD_EVENT_TYPE = 0x75C1, + + /* Port Attach Event Attributes */ + WFD_EVENT_PORT_ATTACH_PORT_ID = 0x75C2, + WFD_EVENT_PORT_ATTACH_STATE = 0x75C3, + + /* Port Protection Event Attributes */ + WFD_EVENT_PORT_PROTECTION_PORT_ID = 0x75C4, + + /* Pipeline Bind Complete Event Attributes */ + WFD_EVENT_PIPELINE_BIND_PIPELINE_ID = 0x75C5, + WFD_EVENT_PIPELINE_BIND_SOURCE = 0x75C6, + WFD_EVENT_PIPELINE_BIND_MASK = 0x75C7, + WFD_EVENT_PIPELINE_BIND_QUEUE_OVERFLOW = 0x75C8, + + WFD_EVENT_ATTRIB_FORCE_32BIT = 0x7FFFFFFF +} WFDEventAttrib; + +typedef enum +{ WFD_POWER_MODE_OFF = 0x7680, + WFD_POWER_MODE_SUSPEND = 0x7681, + WFD_POWER_MODE_LIMITED_USE = 0x7682, + WFD_POWER_MODE_ON = 0x7683, + WFD_POWER_MODE_FORCE_32BIT = 0x7FFFFFFF +} WFDPowerMode; + +typedef enum +{ WFD_DISPLAY_DATA_FORMAT_NONE = 0x76A0, + WFD_DISPLAY_DATA_FORMAT_EDID_V1 = 0x76A1, + WFD_DISPLAY_DATA_FORMAT_EDID_V2 = 0x76A2, + WFD_DISPLAY_DATA_FORMAT_DISPLAYID = 0x76A3, + WFD_DISPLAY_DATA_FORMAT_FORCE_32BIT = 0x7FFFFFFF +} WFDDisplayDataFormat; + +#endif // !NV_SAFETY_BUILD + +typedef enum +{ WFD_PORT_MODE_WIDTH = 0x7600, + WFD_PORT_MODE_HEIGHT = 0x7601, + WFD_PORT_MODE_REFRESH_RATE = 0x7602, + WFD_PORT_MODE_FLIP_MIRROR_SUPPORT = 0x7603, + WFD_PORT_MODE_ROTATION_SUPPORT = 0x7604, + WFD_PORT_MODE_INTERLACED = 0x7605, + WFD_PORT_MODE_ATTRIB_FORCE_32BIT = 0x7FFFFFFF +} WFDPortModeAttrib; + +typedef enum +{ WFD_PORT_ID = 0x7620, + WFD_PORT_TYPE = 0x7621, + WFD_PORT_DETACHABLE = 0x7622, + WFD_PORT_ATTACHED = 0x7623, + WFD_PORT_NATIVE_RESOLUTION = 0x7624, + WFD_PORT_PHYSICAL_SIZE = 0x7625, + WFD_PORT_FILL_PORT_AREA = 0x7626, + WFD_PORT_BACKGROUND_COLOR = 0x7627, + WFD_PORT_FLIP = 0x7628, + WFD_PORT_MIRROR = 0x7629, + WFD_PORT_ROTATION = 0x762A, + WFD_PORT_POWER_MODE = 0x762B, + WFD_PORT_GAMMA_RANGE = 0x762C, + WFD_PORT_GAMMA = 0x762D, + WFD_PORT_PARTIAL_REFRESH_SUPPORT = 0x762E, + WFD_PORT_PARTIAL_REFRESH_MAXIMUM = 0x762F, + WFD_PORT_PARTIAL_REFRESH_ENABLE = 0x7630, + WFD_PORT_PARTIAL_REFRESH_RECTANGLE = 0x7631, + WFD_PORT_PIPELINE_ID_COUNT = 0x7632, + WFD_PORT_BINDABLE_PIPELINE_IDS = 0x7633, + WFD_PORT_PROTECTION_ENABLE = 0x7634, + WFD_PORT_ATTRIB_FORCE_32BIT = 0x7FFFFFFF +} WFDPortConfigAttrib; + +typedef enum +{ WFD_PORT_TYPE_INTERNAL = 0x7660, + WFD_PORT_TYPE_COMPOSITE = 0x7661, + WFD_PORT_TYPE_SVIDEO = 0x7662, + WFD_PORT_TYPE_COMPONENT_YPbPr = 0x7663, + WFD_PORT_TYPE_COMPONENT_RGB = 0x7664, + WFD_PORT_TYPE_COMPONENT_RGBHV = 0x7665, + WFD_PORT_TYPE_DVI = 0x7666, + WFD_PORT_TYPE_HDMI = 0x7667, + WFD_PORT_TYPE_DISPLAYPORT = 0x7668, + WFD_PORT_TYPE_OTHER = 0x7669, + WFD_PORT_TYPE_FORCE_32BIT = 0x7FFFFFFF +} WFDPortType; + +typedef enum +{ WFD_PARTIAL_REFRESH_NONE = 0x7690, + WFD_PARTIAL_REFRESH_VERTICAL = 0x7691, + WFD_PARTIAL_REFRESH_HORIZONTAL = 0x7692, + WFD_PARTIAL_REFRESH_BOTH = 0x7693, + WFD_PARTIAL_REFRESH_FORCE_32BIT = 0x7FFFFFFF +} WFDPartialRefresh; + +typedef enum +{ WFD_ROTATION_SUPPORT_NONE = 0x76D0, + WFD_ROTATION_SUPPORT_LIMITED = 0x76D1, + WFD_ROTATION_SUPPORT_FORMAT_FORCE_32BIT = 0x7FFFFFFF +} WFDRotationSupport; + +typedef enum +{ WFD_PIPELINE_ID = 0x7720, + WFD_PIPELINE_PORTID = 0x7721, + WFD_PIPELINE_LAYER = 0x7722, + WFD_PIPELINE_SHAREABLE = 0x7723, + WFD_PIPELINE_DIRECT_REFRESH = 0x7724, + WFD_PIPELINE_MAX_SOURCE_SIZE = 0x7725, + WFD_PIPELINE_SOURCE_RECTANGLE = 0x7726, + WFD_PIPELINE_FLIP = 0x7727, + WFD_PIPELINE_MIRROR = 0x7728, + WFD_PIPELINE_ROTATION_SUPPORT = 0x7729, + WFD_PIPELINE_ROTATION = 0x772A, + WFD_PIPELINE_SCALE_RANGE = 0x772B, + WFD_PIPELINE_SCALE_FILTER = 0x772C, + WFD_PIPELINE_DESTINATION_RECTANGLE = 0x772D, + WFD_PIPELINE_TRANSPARENCY_ENABLE = 0x772E, + WFD_PIPELINE_GLOBAL_ALPHA = 0x772F, + WFD_PIPELINE_ATTRIB_FORCE_32BIT = 0x7FFFFFFF +} WFDPipelineConfigAttrib; + +typedef enum +{ WFD_SCALE_FILTER_NONE = 0x7760, + WFD_SCALE_FILTER_FASTER = 0x7761, + WFD_SCALE_FILTER_BETTER = 0x7762, + WFD_SCALE_FILTER_FORCE_32BIT = 0x7FFFFFFF +} WFDScaleFilter; + +typedef enum +{ WFD_TRANSPARENCY_NONE = 0, + WFD_TRANSPARENCY_SOURCE_COLOR = (1 << 0), + WFD_TRANSPARENCY_GLOBAL_ALPHA = (1 << 1), + WFD_TRANSPARENCY_SOURCE_ALPHA = (1 << 2), + WFD_TRANSPARENCY_MASK = (1 << 3), + WFD_TRANSPARENCY_FORCE_32BIT = 0x7FFFFFFF +} WFDTransparency; + +#ifndef NV_SAFETY_BUILD +typedef enum +{ WFD_TSC_FORMAT_UINT8_RGB_8_8_8_LINEAR = 0x7790, + WFD_TSC_FORMAT_UINT8_RGB_5_6_5_LINEAR = 0x7791, + WFD_TSC_FORMAT_FORCE_32BIT = 0x7FFFFFFF +} WFDTSColorFormat; +#endif // NV_SAFETY_BUILD + +typedef enum +{ WFD_TRANSITION_INVALID = 0x77E0, + WFD_TRANSITION_IMMEDIATE = 0x77E1, + WFD_TRANSITION_AT_VSYNC = 0x77E2, + WFD_TRANSITION_FORCE_32BIT = 0x7FFFFFFF +} WFDTransition; + +typedef struct +{ WFDint offsetX; + WFDint offsetY; + WFDint width; + WFDint height; +} WFDRect; + +/* Function Prototypes */ + +/* Implementation Information */ + +#ifndef NV_SAFETY_BUILD + +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetStrings(const WFDDevice device, + const WFDStringID name, + const char_t **const strings, + const WFDint stringsCount) WFD_APIEXIT; + +WFD_API_CALL WFDboolean WFD_APIENTRY + wfdIsExtensionSupported(const WFDDevice device, + const char_t *const extensionString) WFD_APIEXIT; + +#endif // NV_SAFETY_BUILD + +/* Error */ + +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdGetError(const WFDDevice device) WFD_APIEXIT; + +/* Device */ + +#ifndef NV_SAFETY_BUILD + +WFD_API_CALL WFDint WFD_APIENTRY + wfdEnumerateDevices(WFDint *const deviceIds, + const WFDint deviceIdsCount, + const WFDint *const filterList) WFD_APIEXIT; +#endif // NV_SAFETY_BUILD + +WFD_API_CALL WFDDevice WFD_APIENTRY + wfdCreateDevice(const WFDint deviceId, + const WFDint *const attribList) WFD_APIEXIT; + +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdDestroyDevice(const WFDDevice device) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdDeviceCommit(const WFDDevice device, + const WFDCommitType type, + const WFDHandle handle) WFD_APIEXIT; + +#ifndef NV_SAFETY_BUILD +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetDeviceAttribi(const WFDDevice device, + const WFDDeviceAttrib attrib) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdSetDeviceAttribi(const WFDDevice device, + const WFDDeviceAttrib attrib, + const WFDint value) WFD_APIEXIT; + +WFD_API_CALL WFDEvent WFD_APIENTRY + wfdCreateEvent(const WFDDevice device, + const WFDint *const attribList) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdDestroyEvent(const WFDDevice device, + const WFDEvent event) WFD_APIEXIT; + +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetEventAttribi(const WFDDevice device, + const WFDEvent event, + const WFDEventAttrib attrib) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdDeviceEventAsync(const WFDDevice device, + const WFDEvent event, + const WFDEGLDisplay display, + const WFDEGLSync sync) WFD_APIEXIT; + +WFD_API_CALL WFDEventType WFD_APIENTRY + wfdDeviceEventWait(const WFDDevice device, + const WFDEvent event, + const WFDtime timeout) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdDeviceEventFilter(const WFDDevice device, + const WFDEvent event, + const WFDEventType *const filter) WFD_APIEXIT; +#endif // NV_SAFETY_BUILD + +/* Port */ + +WFD_API_CALL WFDint WFD_APIENTRY + wfdEnumeratePorts(const WFDDevice device, + WFDint *const portIds, + const WFDint portIdsCount, + const WFDint *const filterList) WFD_APIEXIT; + +WFD_API_CALL WFDPort WFD_APIENTRY + wfdCreatePort(const WFDDevice device, + const WFDint portId, + const WFDint *const attribList) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdDestroyPort(const WFDDevice device, const WFDPort port) WFD_APIEXIT; + +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetPortModes(const WFDDevice device, + const WFDPort port, + WFDPortMode *const modes, + const WFDint modesCount) WFD_APIEXIT; + +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetPortModeAttribi(const WFDDevice device, + const WFDPort port, + const WFDPortMode mode, + const WFDPortModeAttrib attrib) WFD_APIEXIT; + +WFD_API_CALL WFDfloat WFD_APIENTRY + wfdGetPortModeAttribf(const WFDDevice device, + const WFDPort port, + const WFDPortMode mode, + const WFDPortModeAttrib attrib) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdSetPortMode(const WFDDevice device, + const WFDPort port, + const WFDPortMode mode) WFD_APIEXIT; + +WFD_API_CALL WFDPortMode WFD_APIENTRY + wfdGetCurrentPortMode(const WFDDevice device, const WFDPort port) WFD_APIEXIT; + +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetPortAttribi(const WFDDevice device, + const WFDPort port, + const WFDPortConfigAttrib attrib) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdSetPortAttribi(const WFDDevice device, + const WFDPort port, + const WFDPortConfigAttrib attrib, + const WFDint value) WFD_APIEXIT; + +#ifndef NV_SAFETY_BUILD +WFD_API_CALL WFDfloat WFD_APIENTRY + wfdGetPortAttribf(const WFDDevice device, + const WFDPort port, + const WFDPortConfigAttrib attrib) WFD_APIEXIT; +#endif // NV_SAFETY_BUILD + +WFD_API_CALL void WFD_APIENTRY + wfdGetPortAttribiv(const WFDDevice device, + const WFDPort port, + const WFDPortConfigAttrib attrib, + const WFDint count, + WFDint *const value) WFD_APIEXIT; + +#ifndef NV_SAFETY_BUILD +WFD_API_CALL void WFD_APIENTRY + wfdGetPortAttribfv(const WFDDevice device, + const WFDPort port, + const WFDPortConfigAttrib attrib, + const WFDint count, + WFDfloat *const value) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdSetPortAttribf(const WFDDevice device, + const WFDPort port, + const WFDPortConfigAttrib attrib, + const WFDfloat value) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdSetPortAttribiv(const WFDDevice device, + const WFDPort port, + const WFDPortConfigAttrib attrib, + const WFDint count, + const WFDint *const value) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdSetPortAttribfv(const WFDDevice device, + const WFDPort port, + const WFDPortConfigAttrib attrib, + const WFDint count, + const WFDfloat *const value) WFD_APIEXIT; + +#endif // NV_SAFETY_BUILD + +WFD_API_CALL void WFD_APIENTRY + wfdBindPipelineToPort(const WFDDevice device, + const WFDPort port, + const WFDPipeline pipeline) WFD_APIEXIT; + +#ifndef NV_SAFETY_BUILD +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetDisplayDataFormats(const WFDDevice device, + const WFDPort port, + const WFDDisplayDataFormat *const format, + const WFDint formatCount) WFD_APIEXIT; + +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetDisplayData(const WFDDevice device, + const WFDPort port, + const WFDDisplayDataFormat format, + const WFDuint8 *const data, + const WFDint dataCount) WFD_APIEXIT; +#endif + +/* Pipeline */ + +WFD_API_CALL WFDint WFD_APIENTRY + wfdEnumeratePipelines(const WFDDevice device, + WFDint *const pipelineIds, + const WFDint pipelineIdsCount, + const WFDint *const filterList) WFD_APIEXIT; + +WFD_API_CALL WFDPipeline WFD_APIENTRY + wfdCreatePipeline(const WFDDevice device, + const WFDint pipelineId, + const WFDint *const attribList) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdDestroyPipeline(const WFDDevice device, + const WFDPipeline pipeline) WFD_APIEXIT; + +#ifndef NV_SAFETY_BUILD +WFD_API_CALL WFDSource WFD_APIENTRY + wfdCreateSourceFromImage(const WFDDevice device, + const WFDPipeline pipeline, + const WFDEGLImage image, + const WFDint *const attribList) WFD_APIEXIT; + +WFD_API_CALL WFDSource WFD_APIENTRY + wfdCreateSourceFromStream(const WFDDevice device, + const WFDPipeline pipeline, + const WFDNativeStreamType stream, + const WFDint *const attribList) WFD_APIEXIT; +#endif + +WFD_API_CALL void WFD_APIENTRY + wfdDestroySource(const WFDDevice device, + const WFDSource source) WFD_APIEXIT; + +#ifndef NV_SAFETY_BUILD +WFD_API_CALL WFDMask WFD_APIENTRY + wfdCreateMaskFromImage(const WFDDevice device, + const WFDPipeline pipeline, + const WFDEGLImage image, + const WFDint *const attribList) WFD_APIEXIT; + +WFD_API_CALL WFDMask WFD_APIENTRY + wfdCreateMaskFromStream(const WFDDevice device, + const WFDPipeline pipeline, + const WFDNativeStreamType stream, + const WFDint *const attribList) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdDestroyMask(const WFDDevice device, + const WFDMask mask) WFD_APIEXIT; +#endif + +WFD_API_CALL void WFD_APIENTRY + wfdBindSourceToPipeline(const WFDDevice device, + const WFDPipeline pipeline, + const WFDSource source, + const WFDTransition transition, + const WFDRect *const region) WFD_APIEXIT; +#ifndef NV_SAFETY_BUILD +WFD_API_CALL void WFD_APIENTRY + wfdBindMaskToPipeline(const WFDDevice device, + const WFDPipeline pipeline, + const WFDMask mask, + const WFDTransition transition) WFD_APIEXIT; +#endif + +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetPipelineAttribi(const WFDDevice device, + const WFDPipeline pipeline, + const WFDPipelineConfigAttrib attrib) WFD_APIEXIT; + +WFD_API_CALL WFDfloat WFD_APIENTRY + wfdGetPipelineAttribf(const WFDDevice device, + const WFDPipeline pipeline, + const WFDPipelineConfigAttrib attrib) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdGetPipelineAttribiv(const WFDDevice device, + const WFDPipeline pipeline, + const WFDPipelineConfigAttrib attrib, + const WFDint count, + WFDint *const value) WFD_APIEXIT; + +#ifndef NV_SAFETY_BUILD +WFD_API_CALL void WFD_APIENTRY + wfdGetPipelineAttribfv(const WFDDevice device, + const WFDPipeline pipeline, + const WFDPipelineConfigAttrib attrib, + const WFDint count, + WFDfloat *const value) WFD_APIEXIT; +#endif // NV_SAFETY_BUILD + +WFD_API_CALL void WFD_APIENTRY + wfdSetPipelineAttribi(const WFDDevice device, + const WFDPipeline pipeline, + const WFDPipelineConfigAttrib attrib, + const WFDint value) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdSetPipelineAttribf(const WFDDevice device, + const WFDPipeline pipeline, + const WFDPipelineConfigAttrib attrib, + const WFDfloat value) WFD_APIEXIT; + +WFD_API_CALL void WFD_APIENTRY + wfdSetPipelineAttribiv(const WFDDevice device, + const WFDPipeline pipeline, + const WFDPipelineConfigAttrib attrib, + const WFDint count, + const WFDint *const value) WFD_APIEXIT; + +#ifndef NV_SAFETY_BUILD +WFD_API_CALL void WFD_APIENTRY + wfdSetPipelineAttribfv(const WFDDevice device, + const WFDPipeline pipeline, + const WFDPipelineConfigAttrib attrib, + const WFDint count, + const WFDfloat *const value) WFD_APIEXIT; +#endif // NV_SAFETY_BUILD + +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetPipelineTransparency(const WFDDevice device, + const WFDPipeline pipeline, + WFDbitfield *const trans, + const WFDint transCount) WFD_APIEXIT; +#ifndef NV_SAFETY_BUILD +WFD_API_CALL void WFD_APIENTRY + wfdSetPipelineTSColor(const WFDDevice device, + const WFDPipeline pipeline, + const WFDTSColorFormat colorFormat, + const WFDint count, + const void *const color) WFD_APIEXIT; +#endif // NV_SAFETY_BUILD + +WFD_API_CALL WFDint WFD_APIENTRY + wfdGetPipelineLayerOrder(const WFDDevice device, + const WFDPort port, + const WFDPipeline pipeline) WFD_APIEXIT; + +#ifdef __cplusplus +} +#endif + +#endif /* WFD_H */ diff --git a/WF/wfdext.h b/WF/wfdext.h new file mode 100644 index 0000000..df68a68 --- /dev/null +++ b/WF/wfdext.h @@ -0,0 +1,304 @@ +/* Copyright (c) 2009 The Khronos Group Inc. + * Copyright (c) 2020-2023, NVIDIA CORPORATION. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and/or associated documentation files (the + * "Materials"), to deal in the Materials without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Materials, and to + * permit persons to whom the Materials are furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + */ + +/*! \ingroup wfd + * \file wfdext.h + * + * \brief Header file for defining available extension on a platform + * + * See OpenWF specification for usage of this header file. + */ + +#ifndef WFDEXT_H_ +#define WFDEXT_H_ + +#ifdef __cplusplus +extern "C" { +#endif + + +#define WFD_VENDOR_INDEX (0) +#define WFD_RENDERER_INDEX (1) +#define WFD_VERSION_INDEX (2) + +/* Extensions */ + +#ifdef WFD_NVX_create_source_from_nvrmsurface + +struct NvRmSurfaceRec; +typedef struct NvRmSurfaceRec NvRmSurface; + +#ifdef WFD_WFDEXT_PROTOTYPES +WFD_API_CALL WFDSource WFD_APIENTRY + wfdCreateSourceFromNvRmSurfaceNVX(const WFDDevice device, const WFDPipeline pipeline, + const WFDint numSurfaces, const NvRmSurface *const surfaces); +#endif /* WFD_WFDEXT_PROTOTYPES */ + +typedef WFDSource (WFD_APIENTRY PFNWFDCREATESOURCEFROMNVRMSURFACENVX) (const WFDDevice device, + const WFDPipeline pipeline, const WFDint numSurfaces, const NvRmSurface *const surfaces); + +#endif /* WFD_NVX_create_source_from_nvrmsurface */ + +#ifdef WFD_NVX_nvrmfence + +struct NvRmFenceRec; +typedef struct NvRmFenceRec NvRmFence; + +#ifdef WFD_WFDEXT_PROTOTYPES +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdBindNvRmFenceToSourceNVX(const WFDDevice device, const WFDSource source, + const NvRmFence *const fence); + +WFD_API_CALL void WFD_APIENTRY + wfdDeviceCommitWithNvRmFenceNVX(const WFDDevice device, + const WFDCommitType type, + const WFDHandle handle, + NvRmFence *const fence); +#endif /* WFD_WFDEXT_PROTOTYPES */ + +typedef WFDErrorCode (WFD_APIENTRY PFNWFDBINDNVRMFENCETOSOURCENVX) (const WFDDevice device, + const WFDSource source, const NvRmFence *const fence); +typedef void (WFD_APIENTRY PFNWFDDEVICECOMMITWITHNVRMFENCENVX) (const WFDDevice device, + const WFDCommitType type, const WFDHandle handle, NvRmFence *const fence); + +#endif /* WFD_NVX_nvrmfence */ + +#ifndef WFD_NV_permissible_latency +#define WFD_NV_permissible_latency 1 + +#define WFD_PORT_PERMISSIBLE_LATENCY_MS_NV 0x7635 + +#ifdef WFD_WFDEXT_PROTOTYPES +WFD_API_CALL void WFD_APIENTRY + wfdBindSourceToPipelineWithTimestampNV(const WFDDevice device, + const WFDPipeline pipeline, + const WFDSource source, + const WFDTransition transition, + const WFDRect *const region, + const WFDuint64 timestamp); +#endif /* WFD_WFDEXT_PROTOTYPES */ + +typedef void (WFD_APIENTRY PFNWFDBINDSOURCETOPIPELINEWITHTIMESTAMPNV) (const WFDDevice device, + const WFDPipeline pipeline, + const WFDSource source, + const WFDTransition transition, + const WFDRect *const region, + const WFDuint64 timestamp); +#endif /* WFD_NV_permissible_latency */ + +#ifndef WFD_NV_safe_state +#define WFD_NV_safe_state 1 + +#ifdef WFD_WFDEXT_PROTOTYPES +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdDeviceSetSafeStateNV(const WFDDevice device); +#endif /* WFD_WFDEXT_PROTOTYPES */ + +typedef void (WFD_APIENTRY PFNWFDDEVICESETSAFESTATENV) (const WFDDevice device); + +#endif /* WFD_NV_safe_state */ + +#ifdef WFD_NVX_create_source_from_nvscibuf +struct NvSciBufObjRefRec; +typedef struct NvSciBufObjRefRec* NvSciBufObj; +struct NvSciBufAttrListRec; +typedef struct NvSciBufAttrListRec* NvSciBufAttrList; +#ifdef WFD_WFDEXT_PROTOTYPES +WFD_API_CALL WFDSource WFD_APIENTRY + wfdCreateSourceFromNvSciBufNVX(const WFDDevice device, const WFDPipeline pipeline, + NvSciBufObj *const bufObj); +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdNvSciBufSetDisplayAttributesNVX(NvSciBufAttrList *const attrList); +#endif /* WFD_WFDEXT_PROTOTYPES */ +typedef WFDSource (WFD_APIENTRY PFNWFDCREATESOURCEFROMNVSCIBUFNVX) (const WFDDevice device, + const WFDPipeline pipeline, NvSciBufObj *const bufObj); +typedef WFDErrorCode (WFD_APIENTRY PFNWFDNVSCIBUFSETDISPLAYATTRIBUTESNVX) (NvSciBufAttrList *const attrList); +#endif /* WFD_NVX_create_source_from_nvscibuf */ + +#ifndef WFD_NVX_nvscisync +#define WFD_NVX_nvscisync 1 +struct NvSciSyncObjRec; +typedef struct NvSciSyncObjRec* NvSciSyncObj; +struct NvSciSyncAttrListRec; +typedef struct NvSciSyncAttrListRec* NvSciSyncAttrList; +typedef struct NvSciSyncFence NvSciSyncFence; +#ifdef WFD_WFDEXT_PROTOTYPES +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdNvSciSyncSetWaiterAttributesNVX(NvSciSyncAttrList *const attrList); + +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdNvSciSyncSetSignalerAttributesNVX(NvSciSyncAttrList *const attrList); + +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdBindNvSciSyncFenceToSourceNVX(const WFDDevice device, const WFDSource source, + const NvSciSyncFence *const fence); + +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdRegisterPostFlipNvSciSyncObjNVX(const WFDDevice device, const NvSciSyncObj *const obj); + +WFD_API_CALL void WFD_APIENTRY + wfdDeviceCommitWithNvSciSyncFenceNVX(const WFDDevice device, + const WFDCommitType type, + const WFDHandle handle, + NvSciSyncFence *const fence); +#endif /* WFD_WFDEXT_PROTOTYPES */ +typedef WFDErrorCode (WFD_APIENTRY PFNWFDNVSCISYNCSETSIGNALERATTRIBUTESNVX) + (NvSciSyncAttrList *const attrList); + +typedef WFDErrorCode (WFD_APIENTRY PFNWFDNVSCISYNCSETWAITERATTRIBUTESNVX) + (NvSciSyncAttrList *const attrList); + +typedef WFDErrorCode (WFD_APIENTRY PFNWFDBINDNVSCISYNCFENCETOSOURCENVX) + (const WFDDevice device, const WFDSource source, const NvSciSyncFence *const fence); + +typedef WFDErrorCode (WFD_APIENTRY PFNWFDREGISTERPOSTFLIPNVSCISYNCOBJNVX) + (const WFDDevice device, const NvSciSyncObj *const obj); + +typedef void (WFD_APIENTRY PFNWFDDEVICECOMMITWITHNVSCISYNCFENCENVX) + (const WFDDevice device, const WFDCommitType type, + const WFDHandle handle, NvSciSyncFence *const fence); + +#define WFD_PIPELINE_POSTFENCE_SCANOUT_BEGIN_NVX 0x7731 + +#endif /* WFD_NVX_nvscisync */ + +#ifndef WFD_NVX_commit_non_blocking +#define WFD_NVX_commit_non_blocking 1 +#define WFD_PIPELINE_COMMIT_NON_BLOCKING_NVX 0x7730 +#endif + +#ifndef WFD_NVX_port_mode_timings +#define WFD_NVX_port_mode_timings 1 +#define WFD_PORT_MODE_H_TOTAL_NVX 0x7608 +#define WFD_PORT_MODE_V_TOTAL_NVX 0x7609 +#endif + +#ifndef WFD_NV_frozen_frame_detection +#define WFD_NV_frozen_frame_detection 1 +#define WFD_PORT_DETECT_FROZEN_FRAME_NV 0x7636 +#endif + +#if defined(__QNX__) + + + +#ifndef NV_SAFETY_BUILD +#ifndef WFD_QNX_cbabc +#define WFD_QNX_cbabc 1 +#define WFD_PORT_CBABC_MODE_QNX 0x7670 +typedef enum +{ WFD_PORT_CBABC_MODE_NONE_QNX = 0x7671, + WFD_PORT_CBABC_MODE_VIDEO_QNX = 0x7672, + WFD_PORT_CBABC_MODE_UI_QNX = 0x7673, + WFD_PORT_CBABC_MODE_PHOTO_QNX = 0x7674, + WFD_PORT_CBABC_MODE_32BIT_QNX = 0x7FFFFFFF +} WFDPortCBABCModeQNX; +#endif + +#ifndef WFD_QNX_bchs_filter +#define WFD_QNX_bchs_filter 1 +#define WFD_PIPELINE_BRIGHTNESS_QNX 0x7750 +#define WFD_PIPELINE_CONTRAST_QNX 0x7751 +#define WFD_PIPELINE_HUE_QNX 0x7752 +#define WFD_PIPELINE_SATURATION_QNX 0x7753 +#endif + +#ifndef WFD_QNX_port_mode_info +#define WFD_QNX_port_mode_info 1 +#define WFD_PORT_MODE_ASPECT_RATIO_QNX 0x7606 +#define WFD_PORT_MODE_PREFERRED_QNX 0x7607 +#endif +#ifndef WFD_QNX_vsync +#define WFD_QNX_vsync 1 +#ifdef WFD_WFDEXT_PROTOTYPES +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdWaitForVSyncQNX(WFDDevice device, WFDPort port) WFD_APIEXIT; +#endif /* WFD_WFDEXT_PROTOTYPES */ +typedef WFDErrorCode (WFD_APIENTRY PFNWFDWAITFORVSYNCQNX) (WFDDevice device, WFDPort port); +#endif + +#ifndef WFD_QNX_read_pixels_from_source +#define WFD_QNX_read_pixels_from_source 1 +#ifdef WFD_WFDEXT_PROTOTYPES +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdReadPixelsFromSourceQNX(WFDDevice device, WFDSource source, WFDint x, WFDint y, + WFDint width, WFDint height, WFDint format, void *data); +#endif /* WFD_WFDEXT_PROTOTYPES */ +typedef WFDErrorCode (WFD_APIENTRY PFNWFDREADPIXELSFROMSOURCEQNX) (WFDDevice device, WFDSource source, + WFDint x, WFDint y, WFDint width, + WFDint height, WFDint format, void *data); +#endif + +#ifndef WFD_QNX_egl_images +#define WFD_QNX_egl_images 1 +#define WFD_USAGE_DISPLAY_QNX (1 << 0) +#define WFD_USAGE_READ_QNX (1 << 1) +#define WFD_USAGE_WRITE_QNX (1 << 2) +#define WFD_USAGE_NATIVE_QNX (1 << 3) +#define WFD_USAGE_OPENGL_ES1_QNX (1 << 4) +#define WFD_USAGE_OPENGL_ES2_QNX (1 << 5) +#define WFD_USAGE_OPENGL_ES3_QNX (1 << 11) +#define WFD_USAGE_OPENVG_QNX (1 << 6) +#define WFD_USAGE_VIDEO_QNX (1 << 7) +#define WFD_USAGE_CAPTURE_QNX (1 << 8) +#define WFD_USAGE_ROTATION_QNX (1 << 9) +#define WFD_USAGE_OVERLAY_QNX (1 << 10) +#define WFD_USAGE_WRITEBACK_QNX (1 << 31) +#define WFD_FORMAT_BYTE_QNX 1 +#define WFD_FORMAT_RGBA4444_QNX 2 +#define WFD_FORMAT_RGBX4444_QNX 3 +#define WFD_FORMAT_RGBA5551_QNX 4 +#define WFD_FORMAT_RGBX5551_QNX 5 +#define WFD_FORMAT_RGB565_QNX 6 +#define WFD_FORMAT_RGB888_QNX 7 +#define WFD_FORMAT_RGBA8888_QNX 8 +#define WFD_FORMAT_RGBX8888_QNX 9 +#define WFD_FORMAT_YVU9_QNX 10 +#define WFD_FORMAT_YUV420_QNX 11 +#define WFD_FORMAT_NV12_QNX 12 +#define WFD_FORMAT_YV12_QNX 13 +#define WFD_FORMAT_UYVY_QNX 14 +#define WFD_FORMAT_YUY2_QNX 15 +#define WFD_FORMAT_YVYU_QNX 16 +#define WFD_FORMAT_V422_QNX 17 +#define WFD_FORMAT_AYUV_QNX 18 +#define WFD_FORMAT_NV12_QC_SUPERTILE ((1 << 16) | WFD_FORMAT_NV12_QNX) +#define WFD_FORMAT_NV12_QC_32M4KA ((2 << 16) | WFD_FORMAT_NV12_QNX) +#ifdef WFD_WFDEXT_PROTOTYPES +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdCreateWFDEGLImagesQNX(WFDDevice device, WFDint width, WFDint height, WFDint format, WFDint usage, WFDint count, WFDEGLImage *images); +WFD_API_CALL WFDErrorCode WFD_APIENTRY + wfdDestroyWFDEGLImagesQNX(WFDDevice device, WFDint count, WFDEGLImage *images); +#endif /* WFD_WFDEXT_PROTOTYPES */ +typedef WFDErrorCode (WFD_APIENTRY PFNWFDCREATEWFDEGLIMAGESQNX) (WFDDevice device, WFDint width, WFDint height, WFDint usage, WFDint count, WFDEGLImage *images); +typedef WFDErrorCode (WFD_APIENTRY PFNWFDDESTROYWFDEGLIMAGESQNX) (WFDDevice device, WFDint count, WFDEGLImage *images); +#endif +#endif /* !NV_SAFETY_BUILD */ +#endif // defined(__QNX__) + +#ifdef __cplusplus +} +#endif + + +#endif /* WFDEXT_H_ */ diff --git a/WF/wfdplatform.h b/WF/wfdplatform.h new file mode 100644 index 0000000..063f032 --- /dev/null +++ b/WF/wfdplatform.h @@ -0,0 +1,79 @@ +/* Copyright (c) 2009 The Khronos Group Inc. + * Copyright (c) 2020-2021, NVIDIA CORPORATION. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and/or associated documentation files (the + * "Materials"), to deal in the Materials without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Materials, and to + * permit persons to whom the Materials are furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + */ + +/*! \ingroup wfd + * \file wfdplatform.h + * + * \brief Platform specific type definitions + */ + + +#ifndef WFDPLATFORM_H +#define WFDPLATFORM_H +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +#ifndef WFD_API_CALL +#define WFD_API_CALL KHRONOS_APICALL +#endif + +#ifndef WFD_APIENTRY +#define WFD_APIENTRY KHRONOS_APIENTRY +#endif + +#ifndef WFD_APIEXIT +#define WFD_APIEXIT KHRONOS_APIATTRIBUTES +#endif + +typedef khronos_int32_t WFDint; +typedef khronos_float_t WFDfloat; +typedef khronos_uint32_t WFDbitfield; +typedef khronos_uint32_t WFDHandle; +typedef khronos_uint32_t WFDuint32; +typedef khronos_uint64_t WFDuint64; + +#define WFD_FOREVER (0xFFFFFFFFFFFFFFFF) + +#ifndef NV_SAFETY_BUILD + +typedef khronos_uint8_t WFDuint8; +typedef khronos_utime_nanoseconds_t WFDtime; + +typedef void* WFDEGLDisplay; /* An opaque handle to an EGLDisplay */ +typedef void* WFDEGLSync; /* An opaque handle to an EGLSyncKHR */ +typedef void* WFDEGLImage; /* An opaque handle to an EGLImage */ +typedef WFDHandle WFDNativeStreamType; + +#define WFD_INVALID_SYNC ((WFDEGLSync)0) + +#endif // !NV_SAFETY_BUILD + +#ifdef __cplusplus +} +#endif +#endif /* WFDPLATFORM_H */ + diff --git a/commitFile.txt b/commitFile.txt new file mode 100644 index 0000000..e2ecfe1 --- /dev/null +++ b/commitFile.txt @@ -0,0 +1,5 @@ +Updating prebuilts and/or headers + +dbd4f936a8aa1443e2fc31fb619267b33d2f1127 - WF/wfdplatform.h +d3925649a315b1d45ecaf1a06a5e41a8bdc5b583 - WF/wfd.h +62a080557194f175550e5abe18cf344aa18ee084 - WF/wfdext.h diff --git a/openwfd_headers_README.txt b/openwfd_headers_README.txt new file mode 100644 index 0000000..5ffaeea --- /dev/null +++ b/openwfd_headers_README.txt @@ -0,0 +1,13 @@ +# +# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. + +* openwfd_headers.tbz2 contains OpenWFD headers required for inclusion by + OpenWFD applications. diff --git a/push_info.txt b/push_info.txt new file mode 100644 index 0000000..a3e9379 --- /dev/null +++ b/push_info.txt @@ -0,0 +1 @@ +jetson_36.4