mesa_glinterop.h revision bcf9e476532f12544d1831300dbb2caa1e7c0bdf
16eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/* 26eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Mesa 3-D graphics library 36eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 46eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Copyright 2016 Advanced Micro Devices, Inc. 56eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 66eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Permission is hereby granted, free of charge, to any person obtaining a 76eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * copy of this software and associated documentation files (the "Software"), 86eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * to deal in the Software without restriction, including without limitation 96eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * the rights to use, copy, modify, merge, publish, distribute, sublicense, 106eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * and/or sell copies of the Software, and to permit persons to whom the 116eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Software is furnished to do so, subject to the following conditions: 126eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 136eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * The above copyright notice and this permission notice shall be included 146eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * in all copies or substantial portions of the Software. 156eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 166eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 176eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 186eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 196eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 206eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 216eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 226eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * OTHER DEALINGS IN THE SOFTWARE. 236eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 246eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 256eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/* Mesa OpenGL inter-driver interoperability interface designed for but not 266eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * limited to OpenCL. 276eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 286eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * This is a driver-agnostic, backward-compatible interface. The structures 296eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * are only allowed to grow. They can never shrink and their members can 306eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * never be removed, renamed, or redefined. 316eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 326eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * The interface doesn't return a lot of static texture parameters like 336eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * width, height, etc. It mainly returns mutable buffer and texture view 346eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * parameters that can't be part of the texture allocation (because they are 356eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * mutable). If drivers want to return more data or want to return static 366eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * allocation parameters, they can do it in one of these two ways: 376eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - attaching the data to the DMABUF handle in a driver-specific way 386eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - passing the data via "out_driver_data" in the "in" structure. 396eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 406eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Mesa is expected to do a lot of error checking on behalf of OpenCL, such 416eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * as checking the target, miplevel, and texture completeness. 426eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 436eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * OpenCL, on the other hand, needs to check if the display+context combo 446eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * is compatible with the OpenCL driver by querying the device information. 456eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * It also needs to check if the texture internal format and channel ordering 466eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * (returned in a driver-specific way) is supported by OpenCL, among other 476eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * things. 486eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 496eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 506eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#ifndef MESA_GLINTEROP_H 516eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#define MESA_GLINTEROP_H 526eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 53bcf9e476532f12544d1831300dbb2caa1e7c0bdfEmil Velikov#include <stddef.h> 546eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#include <GL/glx.h> 556eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#include <EGL/egl.h> 566eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 576eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#ifdef __cplusplus 586eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšákextern "C" { 596eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#endif 606eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 616eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/** Returned error codes. */ 626eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšákenum { 636eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_SUCCESS = 0, 646eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_OUT_OF_RESOURCES, 656eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_OUT_OF_HOST_MEMORY, 666eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_INVALID_OPERATION, 676eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_INVALID_VALUE, 686eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_INVALID_DISPLAY, 696eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_INVALID_CONTEXT, 706eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_INVALID_TARGET, 716eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_INVALID_OBJECT, 726eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_INVALID_MIP_LEVEL, 736eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_UNSUPPORTED 746eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák}; 756eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 766eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/** Access flags. */ 776eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšákenum { 786eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_ACCESS_READ_WRITE = 0, 796eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_ACCESS_READ_ONLY, 806eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák MESA_GLINTEROP_ACCESS_WRITE_ONLY 816eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák}; 826eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 836eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#define MESA_GLINTEROP_DEVICE_INFO_VERSION 1 846eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 856eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/** 866eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Device information returned by Mesa. 876eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 886eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšáktypedef struct _mesa_glinterop_device_info { 896eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* The caller should set this to: MESA_GLINTEROP_DEVICE_INFO_VERSION */ 906eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t struct_version; 916eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 926eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* PCI location */ 936eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t pci_segment_group; 946eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t pci_bus; 956eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t pci_device; 966eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t pci_function; 976eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 986eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* Device identification */ 996eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t vendor_id; 1006eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t device_id; 1016eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1026eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* The interop version determines what behavior the caller should expect 1036eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * out of all functions. 1046eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 1056eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Interop version 1: 1066eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - mesa_glinterop_export_in is not read beyond "out_driver_data" 1076eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - mesa_glinterop_export_out is not written beyond "out_driver_data_written" 1086eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - mesa_glinterop_device_info is not written beyond "interop_version" 1096eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 1106eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t interop_version; 1116eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* Structure version 1 ends here. */ 1126eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák} mesa_glinterop_device_info; 1136eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1146eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#define MESA_GLINTEROP_EXPORT_IN_VERSION 1 1156eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1166eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/** 1176eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Input parameters to Mesa interop export functions. 1186eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 1196eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšáktypedef struct _mesa_glinterop_export_in { 1206eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* The caller should set this to: MESA_GLINTEROP_EXPORT_IN_VERSION */ 1216eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t struct_version; 1226eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1236eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* One of the following: 1246eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_BUFFER 1256eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_1D 1266eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_2D 1276eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_3D 1286eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_RECTANGLE 1296eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_1D_ARRAY 1306eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_2D_ARRAY 1316eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_CUBE_MAP_ARRAY 1326eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_CUBE_MAP 1336eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_CUBE_MAP_POSITIVE_X 1346eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_CUBE_MAP_NEGATIVE_X 1356eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_CUBE_MAP_POSITIVE_Y 1366eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 1376eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_CUBE_MAP_POSITIVE_Z 1386eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 1396eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_2D_MULTISAMPLE 1406eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_2D_MULTISAMPLE_ARRAY 1416eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_TEXTURE_EXTERNAL_OES 1426eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_RENDERBUFFER 1436eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * - GL_ARRAY_BUFFER 1446eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 1452e726144f9158b8acd4487d9a1beceaa1be85614Emil Velikov unsigned target; 1466eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1476eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* If target is GL_ARRAY_BUFFER, it's a buffer object. 1486eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * If target is GL_RENDERBUFFER, it's a renderbuffer object. 1496eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * If target is GL_TEXTURE_*, it's a texture object. 1506eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 1512e726144f9158b8acd4487d9a1beceaa1be85614Emil Velikov unsigned obj; 1526eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1536eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* Mipmap level. Ignored for non-texture objects. */ 1542e726144f9158b8acd4487d9a1beceaa1be85614Emil Velikov unsigned miplevel; 1556eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1566eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* One of MESA_GLINTEROP_ACCESS_* flags. This describes how the exported 1576eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * object is going to be used. 1586eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 1596eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t access; 1606eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1616eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* Size of memory pointed to by out_driver_data. */ 1626eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t out_driver_data_size; 1636eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1646eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* If the caller wants to query driver-specific data about the OpenGL 1656eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * object, this should point to the memory where that data will be stored. 1666eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * This is expected to be a temporary staging memory. The pointer is not 1676eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * allowed to be saved for later use by Mesa. 1686eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 1696eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák void *out_driver_data; 1706eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* Structure version 1 ends here. */ 1716eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák} mesa_glinterop_export_in; 1726eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1736eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#define MESA_GLINTEROP_EXPORT_OUT_VERSION 1 1746eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1756eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/** 1766eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Outputs of Mesa interop export functions. 1776eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 1786eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšáktypedef struct _mesa_glinterop_export_out { 1796eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* The caller should set this to: MESA_GLINTEROP_EXPORT_OUT_VERSION */ 1806eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t struct_version; 1816eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1826eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* The DMABUF handle. It must be closed by the caller using the POSIX 1836eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * close() function when it's not needed anymore. Mesa is not responsible 1846eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * for closing the handle. 1856eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 1866eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Not closing the handle by the caller will lead to a resource leak, 1876eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * will prevent releasing the GPU buffer, and may prevent creating new 1886eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * DMABUF handles within the process. 1896eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 1906eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák int dmabuf_fd; 1916eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1926eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* The mutable OpenGL internal format specified by glTextureView or 1936eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * glTexBuffer. If the object is not one of those, the original internal 1946eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * format specified by glTexStorage, glTexImage, or glRenderbufferStorage 1956eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * will be returned. 1966eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 1972e726144f9158b8acd4487d9a1beceaa1be85614Emil Velikov unsigned internal_format; 1986eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 1996eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* Buffer offset and size for GL_ARRAY_BUFFER and GL_TEXTURE_BUFFER. 2006eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * This allows interop with suballocations (a buffer allocated within 2016eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * a larger buffer). 2026eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 2036eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Parameters specified by glTexBufferRange for GL_TEXTURE_BUFFER are 2046eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * applied to these and can shrink the range further. 2056eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 206bcf9e476532f12544d1831300dbb2caa1e7c0bdfEmil Velikov ptrdiff_t buf_offset; 207bcf9e476532f12544d1831300dbb2caa1e7c0bdfEmil Velikov ptrdiff_t buf_size; 2086eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2096eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* Parameters specified by glTextureView. If the object is not a texture 2106eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * view, default parameters covering the whole texture will be returned. 2116eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 2122e726144f9158b8acd4487d9a1beceaa1be85614Emil Velikov unsigned view_minlevel; 2132e726144f9158b8acd4487d9a1beceaa1be85614Emil Velikov unsigned view_numlevels; 2142e726144f9158b8acd4487d9a1beceaa1be85614Emil Velikov unsigned view_minlayer; 2152e726144f9158b8acd4487d9a1beceaa1be85614Emil Velikov unsigned view_numlayers; 2166eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2176eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* The number of bytes written to out_driver_data. */ 2186eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák uint32_t out_driver_data_written; 2196eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák /* Structure version 1 ends here. */ 2206eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák} mesa_glinterop_export_out; 2216eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2226eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2236eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/** 2246eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Query device information. 2256eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 2266eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * \param dpy GLX display 2276eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * \param context GLX context 2286eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * \param out where to return the information 2296eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 2306eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * \return MESA_GLINTEROP_SUCCESS or MESA_GLINTEROP_* != 0 on error 2316eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 2326eeb729490a7880f8dc17de855d205a7cce5f28cMarek OlšákGLAPI int GLAPIENTRY 2336eeb729490a7880f8dc17de855d205a7cce5f28cMarek OlšákMesaGLInteropGLXQueryDeviceInfo(Display *dpy, GLXContext context, 2346eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák mesa_glinterop_device_info *out); 2356eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2366eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2376eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/** 2386eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Same as MesaGLInteropGLXQueryDeviceInfo except that it accepts EGLDisplay 2396eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * and EGLContext. 2406eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 2416eeb729490a7880f8dc17de855d205a7cce5f28cMarek OlšákGLAPI int GLAPIENTRY 2426eeb729490a7880f8dc17de855d205a7cce5f28cMarek OlšákMesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context, 2436eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák mesa_glinterop_device_info *out); 2446eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2456eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2466eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/** 2476eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Create and return a DMABUF handle corresponding to the given OpenGL 2486eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * object, and return other parameters about the OpenGL object. 2496eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 2506eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * \param dpy GLX display 2516eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * \param context GLX context 2526eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * \param in input parameters 2536eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * \param out return values 2546eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * 2556eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * \return MESA_GLINTEROP_SUCCESS or MESA_GLINTEROP_* != 0 on error 2566eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 2576eeb729490a7880f8dc17de855d205a7cce5f28cMarek OlšákGLAPI int GLAPIENTRY 2586eeb729490a7880f8dc17de855d205a7cce5f28cMarek OlšákMesaGLInteropGLXExportObject(Display *dpy, GLXContext context, 2596eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák const mesa_glinterop_export_in *in, 2606eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák mesa_glinterop_export_out *out); 2616eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2626eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2636eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák/** 2646eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * Same as MesaGLInteropGLXExportObject except that it accepts 2656eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák * EGLDisplay and EGLContext. 2666eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák */ 2676eeb729490a7880f8dc17de855d205a7cce5f28cMarek OlšákGLAPI int GLAPIENTRY 2686eeb729490a7880f8dc17de855d205a7cce5f28cMarek OlšákMesaGLInteropEGLExportObject(EGLDisplay dpy, EGLContext context, 2696eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák const mesa_glinterop_export_in *in, 2706eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák mesa_glinterop_export_out *out); 2716eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2720d31bfd71aa44aa34f3cfa8711c4070c3fb1e26aEmil Velikov 2736eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšáktypedef int (APIENTRYP PFNMESAGLINTEROPGLXQUERYDEVICEINFOPROC)(Display *dpy, GLXContext context, 2746eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák mesa_glinterop_device_info *out); 2756eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšáktypedef int (APIENTRYP PFNMESAGLINTEROPEGLQUERYDEVICEINFOPROC)(EGLDisplay dpy, EGLContext context, 2766eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák mesa_glinterop_device_info *out); 2776eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšáktypedef int (APIENTRYP PFNMESAGLINTEROPGLXEXPORTOBJECTPROC)(Display *dpy, GLXContext context, 2786eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák const mesa_glinterop_export_in *in, 2796eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák mesa_glinterop_export_out *out); 2806eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšáktypedef int (APIENTRYP PFNMESAGLINTEROPEGLEXPORTOBJECTPROC)(EGLDisplay dpy, EGLContext context, 2816eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák const mesa_glinterop_export_in *in, 2826eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák mesa_glinterop_export_out *out); 2836eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2846eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#ifdef __cplusplus 2856eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák} 2866eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#endif 2876eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák 2886eeb729490a7880f8dc17de855d205a7cce5f28cMarek Olšák#endif /* MESA_GLINTEROP_H */ 289