|
1 | 1 | /* |
2 | | - * Copyright (C) 2023-2024 Intel Corporation |
| 2 | + * Copyright (C) 2023-2025 Intel Corporation |
3 | 3 | * |
4 | 4 | * SPDX-License-Identifier: MIT |
5 | 5 | * |
@@ -37,6 +37,9 @@ bool GLSharingFunctionsLinux::isOpenGlExtensionSupported(const unsigned char *pE |
37 | 37 | } |
38 | 38 |
|
39 | 39 | bool GLSharingFunctionsLinux::isOpenGlSharingSupported() { |
| 40 | + if (glGetString == nullptr) { |
| 41 | + return false; |
| 42 | + } |
40 | 43 |
|
41 | 44 | std::basic_string<unsigned char> vendor = glGetString(GL_VENDOR); |
42 | 45 | const unsigned char intelVendor[] = "Intel"; |
@@ -72,6 +75,20 @@ bool GLSharingFunctionsLinux::isOpenGlSharingSupported() { |
72 | 75 | } |
73 | 76 | } |
74 | 77 |
|
| 78 | + switch (glHDCType) { |
| 79 | + case CL_GLX_DISPLAY_KHR: |
| 80 | + if (!glXLoaded) |
| 81 | + return false; |
| 82 | + break; |
| 83 | + case CL_EGL_DISPLAY_KHR: |
| 84 | + if (!eglLoaded) |
| 85 | + return false; |
| 86 | + break; |
| 87 | + default: |
| 88 | + if (!glXLoaded && !eglLoaded) |
| 89 | + return false; |
| 90 | + } |
| 91 | + |
75 | 92 | return true; |
76 | 93 | } |
77 | 94 |
|
@@ -102,13 +119,19 @@ GLboolean GLSharingFunctionsLinux::initGLFunctions() { |
102 | 119 | glXGLInteropQueryDeviceInfo = glXGetProc["glXGLInteropQueryDeviceInfoMESA"]; |
103 | 120 | glXGLInteropExportObject = glXGetProc["glXGLInteropExportObjectMESA"]; |
104 | 121 | glXGLInteropFlushObjects = glXGetProc["glXGLInteropFlushObjectsMESA"]; |
| 122 | + glXLoaded = ((glXGLInteropQueryDeviceInfo != nullptr) && |
| 123 | + (glXGLInteropExportObject != nullptr) && |
| 124 | + (glXGLInteropFlushObjects != nullptr)); |
105 | 125 | } |
106 | 126 |
|
107 | 127 | GlFunctionHelper eglGetProc(dynLibrary.get(), "eglGetProcAddress"); |
108 | 128 | if (eglGetProc.ready()) { |
109 | 129 | eglGLInteropQueryDeviceInfo = eglGetProc["eglGLInteropQueryDeviceInfoMESA"]; |
110 | 130 | eglGLInteropExportObject = eglGetProc["eglGLInteropExportObjectMESA"]; |
111 | 131 | eglGLInteropFlushObjects = eglGetProc["eglGLInteropFlushObjectsMESA"]; |
| 132 | + eglLoaded = ((eglGLInteropQueryDeviceInfo != nullptr) && |
| 133 | + (eglGLInteropExportObject != nullptr) && |
| 134 | + (eglGLInteropFlushObjects != nullptr)); |
112 | 135 | } |
113 | 136 |
|
114 | 137 | glGetString = (*dynLibrary)["glGetString"]; |
|
0 commit comments