Merge lp:~stellarium/stellarium/gz-opengl-init into lp:stellarium
- gz-opengl-init
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 7042 |
Proposed branch: | lp:~stellarium/stellarium/gz-opengl-init |
Merge into: | lp:stellarium |
Diff against target: |
276 lines (+128/-49) 4 files modified
src/CLIProcessor.cpp (+4/-1) src/StelMainView.cpp (+119/-48) src/StelMainView.hpp (+3/-0) src/core/StelOpenGL.hpp (+2/-0) |
To merge this branch: | bzr merge lp:~stellarium/stellarium/gz-opengl-init |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alexander Wolf | Approve | ||
gzotti | Needs Resubmitting | ||
Fabien Chéreau | Needs Fixing | ||
Review via email: mp+234455@code.launchpad.net |
Commit message
Added optional more startup diagnostics for tracking down OpenGL-related issues.
Description of the change
Alexander Wolf (alexwolf) wrote : | # |
Alexander Wolf (alexwolf) wrote : | # |
Hm... Maybe it should be short --debug?
Fabien Chéreau (xalioth) wrote : | # |
Please fix whitespaces
gzotti (georg-zotti) wrote : | # |
We may consider a more global --debug option, this could give OpenGL and other extended messages. I saw this qApp->property() trick to check...
@ Fabien: sorry, I don't see which? Or do you mean those double-spaces that are formed from assembling the strings? If this is an issue, how do I elegantly prevent "NOT" becoming " NOT " in the "<<" concatenation?
gzotti (georg-zotti) wrote : | # |
@ Fabien sorry, I just saw the detailed comments in the mail. I did not touch that, must have happened during merge.
Fabien Chéreau (xalioth) wrote : | # |
No I mean the chnages in bool StelSkyItem:
There is no visible changes here, so it must be line ending or white spaces..
gzotti (georg-zotti) wrote : | # |
@ Fabien: I can only guess it's the usual Linux/Windows line-ending thing where BZR (or QtCreator?) apparently injects a CRLF on (my) Windows and diff marks those lines changed. These lines are new functions that came in during latest merge with trunk.
Fabien Chéreau (xalioth) wrote : | # |
OK, then the culprit is in the other patch..
On Fri, Sep 12, 2014 at 2:04 PM, gzotti <email address hidden> wrote:
> @ Fabien: I can only guess it's the usual Linux/Windows line-ending thing
> where BZR (or QtCreator?) apparently injects a CRLF on (my) Windows and
> diff marks those lines changed. These lines are new functions that came in
> during latest merge with trunk.
> --
>
> https:/
> You are reviewing the proposed merge of
> lp:~stellarium/stellarium/gz-opengl-init into lp:stellarium.
>
gzotti (georg-zotti) wrote : | # |
Any other objections, then?
Alexander Wolf (alexwolf) wrote : | # |
It's OK for me
Preview Diff
1 | === modified file 'src/CLIProcessor.cpp' | |||
2 | --- src/CLIProcessor.cpp 2014-06-12 13:47:38 +0000 | |||
3 | +++ src/CLIProcessor.cpp 2014-09-12 11:42:18 +0000 | |||
4 | @@ -54,7 +54,8 @@ | |||
5 | 54 | << "--config-file (or -c) : Use an alternative name for the config file\n" | 54 | << "--config-file (or -c) : Use an alternative name for the config file\n" |
6 | 55 | << "--user-dir (or -u) : Use an alternative user data directory\n" | 55 | << "--user-dir (or -u) : Use an alternative user data directory\n" |
7 | 56 | //<< "--safe-mode (or -s) : Disable GL shaders and use older GL engine\n" | 56 | //<< "--safe-mode (or -s) : Disable GL shaders and use older GL engine\n" |
9 | 57 | //<< " Try this is you have graphics problems\n" | 57 | << "--dump-opengl-details (or -d) : dump information about OpenGL support to logfile\n" |
10 | 58 | << " Try this is you have graphics problems\n" | ||
11 | 58 | << "--full-screen (or -f) : With argument \"yes\" or \"no\" over-rides\n" | 59 | << "--full-screen (or -f) : With argument \"yes\" or \"no\" over-rides\n" |
12 | 59 | << " the full screen setting in the config file\n" | 60 | << " the full screen setting in the config file\n" |
13 | 60 | << "--screenshot-dir : Specify directory to save screenshots\n" | 61 | << "--screenshot-dir : Specify directory to save screenshots\n" |
14 | @@ -120,6 +121,8 @@ | |||
15 | 120 | QString projectionType, screenshotDir, multiresImage, startupScript; | 121 | QString projectionType, screenshotDir, multiresImage, startupScript; |
16 | 121 | try | 122 | try |
17 | 122 | { | 123 | { |
18 | 124 | bool dumpOpenGLDetails = argsGetOption(argList, "-d", "--dump-opengl-details"); | ||
19 | 125 | qApp->setProperty("dump_OpenGL_details", dumpOpenGLDetails); | ||
20 | 123 | fullScreen = argsGetYesNoOption(argList, "-f", "--full-screen", -1); | 126 | fullScreen = argsGetYesNoOption(argList, "-f", "--full-screen", -1); |
21 | 124 | landscapeId = argsGetOptionWithArg(argList, "", "--landscape", "").toString(); | 127 | landscapeId = argsGetOptionWithArg(argList, "", "--landscape", "").toString(); |
22 | 125 | homePlanet = argsGetOptionWithArg(argList, "", "--home-planet", "").toString(); | 128 | homePlanet = argsGetOptionWithArg(argList, "", "--home-planet", "").toString(); |
23 | 126 | 129 | ||
24 | === modified file 'src/StelMainView.cpp' | |||
25 | --- src/StelMainView.cpp 2014-08-25 06:42:05 +0000 | |||
26 | +++ src/StelMainView.cpp 2014-09-12 11:42:18 +0000 | |||
27 | @@ -48,6 +48,8 @@ | |||
28 | 48 | #include <QWindow> | 48 | #include <QWindow> |
29 | 49 | #include <QDeclarativeContext> | 49 | #include <QDeclarativeContext> |
30 | 50 | #include <QPinchGesture> | 50 | #include <QPinchGesture> |
31 | 51 | #include <QOpenGLShader> | ||
32 | 52 | #include <QOpenGLShaderProgram> | ||
33 | 51 | 53 | ||
34 | 52 | #include <clocale> | 54 | #include <clocale> |
35 | 53 | 55 | ||
36 | @@ -71,7 +73,7 @@ | |||
37 | 71 | private: | 73 | private: |
38 | 72 | double previousPaintTime; | 74 | double previousPaintTime; |
39 | 73 | void onSizeChanged(); | 75 | void onSizeChanged(); |
41 | 74 | void pinchTriggered(QPinchGesture *gesture); | 76 | void pinchTriggered(QPinchGesture *gesture); |
42 | 75 | bool gestureEvent(QGestureEvent *event); | 77 | bool gestureEvent(QGestureEvent *event); |
43 | 76 | }; | 78 | }; |
44 | 77 | 79 | ||
45 | @@ -91,7 +93,7 @@ | |||
46 | 91 | setObjectName("SkyItem"); | 93 | setObjectName("SkyItem"); |
47 | 92 | setFlag(QGraphicsItem::ItemHasNoContents, false); | 94 | setFlag(QGraphicsItem::ItemHasNoContents, false); |
48 | 93 | setAcceptHoverEvents(true); | 95 | setAcceptHoverEvents(true); |
50 | 94 | setAcceptTouchEvents(true); | 96 | setAcceptTouchEvents(true); |
51 | 95 | grabGesture(Qt::PinchGesture); | 97 | grabGesture(Qt::PinchGesture); |
52 | 96 | setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton | Qt::MiddleButton); | 98 | setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton | Qt::MiddleButton); |
53 | 97 | connect(this, &StelSkyItem::widthChanged, this, &StelSkyItem::onSizeChanged); | 99 | connect(this, &StelSkyItem::widthChanged, this, &StelSkyItem::onSizeChanged); |
54 | @@ -165,51 +167,51 @@ | |||
55 | 165 | StelApp::getInstance().handleWheel(&newEvent); | 167 | StelApp::getInstance().handleWheel(&newEvent); |
56 | 166 | } | 168 | } |
57 | 167 | 169 | ||
103 | 168 | bool StelSkyItem::event(QEvent * e) | 170 | bool StelSkyItem::event(QEvent * e) |
104 | 169 | { | 171 | { |
105 | 170 | switch (e->type()){ | 172 | switch (e->type()){ |
106 | 171 | case QEvent::TouchBegin: | 173 | case QEvent::TouchBegin: |
107 | 172 | case QEvent::TouchUpdate: | 174 | case QEvent::TouchUpdate: |
108 | 173 | case QEvent::TouchEnd: | 175 | case QEvent::TouchEnd: |
109 | 174 | { | 176 | { |
110 | 175 | QTouchEvent *touchEvent = static_cast<QTouchEvent *>(e); | 177 | QTouchEvent *touchEvent = static_cast<QTouchEvent *>(e); |
111 | 176 | QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints(); | 178 | QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints(); |
112 | 177 | 179 | ||
113 | 178 | if (touchPoints.count() == 1) | 180 | if (touchPoints.count() == 1) |
114 | 179 | setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton | Qt::MiddleButton); | 181 | setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton | Qt::MiddleButton); |
115 | 180 | 182 | ||
116 | 181 | return true; | 183 | return true; |
117 | 182 | } | 184 | } |
118 | 183 | break; | 185 | break; |
119 | 184 | 186 | ||
120 | 185 | case QEvent::Gesture: | 187 | case QEvent::Gesture: |
121 | 186 | setAcceptedMouseButtons(0); | 188 | setAcceptedMouseButtons(0); |
122 | 187 | return gestureEvent(static_cast<QGestureEvent*>(e)); | 189 | return gestureEvent(static_cast<QGestureEvent*>(e)); |
123 | 188 | break; | 190 | break; |
124 | 189 | 191 | ||
125 | 190 | default: | 192 | default: |
126 | 191 | return false; | 193 | return false; |
127 | 192 | } | 194 | } |
128 | 193 | } | 195 | } |
129 | 194 | 196 | ||
130 | 195 | bool StelSkyItem::gestureEvent(QGestureEvent *event) | 197 | bool StelSkyItem::gestureEvent(QGestureEvent *event) |
131 | 196 | { | 198 | { |
132 | 197 | if (QGesture *pinch = event->gesture(Qt::PinchGesture)) | 199 | if (QGesture *pinch = event->gesture(Qt::PinchGesture)) |
133 | 198 | pinchTriggered(static_cast<QPinchGesture *>(pinch)); | 200 | pinchTriggered(static_cast<QPinchGesture *>(pinch)); |
134 | 199 | 201 | ||
135 | 200 | return true; | 202 | return true; |
136 | 201 | } | 203 | } |
137 | 202 | 204 | ||
138 | 203 | void StelSkyItem::pinchTriggered(QPinchGesture *gesture) | 205 | void StelSkyItem::pinchTriggered(QPinchGesture *gesture) |
139 | 204 | { | 206 | { |
140 | 205 | QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags(); | 207 | QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags(); |
141 | 206 | if (changeFlags & QPinchGesture::ScaleFactorChanged) { | 208 | if (changeFlags & QPinchGesture::ScaleFactorChanged) { |
142 | 207 | qreal zoom = gesture->scaleFactor(); | 209 | qreal zoom = gesture->scaleFactor(); |
143 | 208 | 210 | ||
144 | 209 | if (zoom < 2 && zoom > 0.5){ | 211 | if (zoom < 2 && zoom > 0.5){ |
145 | 210 | StelApp::getInstance().handlePinch(zoom, true); | 212 | StelApp::getInstance().handlePinch(zoom, true); |
146 | 211 | } | 213 | } |
147 | 212 | } | 214 | } |
148 | 213 | } | 215 | } |
149 | 214 | 216 | ||
150 | 215 | void StelSkyItem::keyPressEvent(QKeyEvent* event) | 217 | void StelSkyItem::keyPressEvent(QKeyEvent* event) |
151 | @@ -347,6 +349,10 @@ | |||
152 | 347 | qDebug() << "GL renderer is" << QString(reinterpret_cast<const char*>(glGetString(GL_RENDERER))); | 349 | qDebug() << "GL renderer is" << QString(reinterpret_cast<const char*>(glGetString(GL_RENDERER))); |
153 | 348 | qDebug() << "GL Shading Language version is" << QString(reinterpret_cast<const char*>(glGetString(GL_SHADING_LANGUAGE_VERSION))); | 350 | qDebug() << "GL Shading Language version is" << QString(reinterpret_cast<const char*>(glGetString(GL_SHADING_LANGUAGE_VERSION))); |
154 | 349 | 351 | ||
155 | 352 | // Only give extended info if called on command line, for diagnostic. | ||
156 | 353 | if (qApp->property("dump_OpenGL_details").toBool()) | ||
157 | 354 | dumpOpenGLdiagnostics(); | ||
158 | 355 | |||
159 | 350 | stelApp= new StelApp(); | 356 | stelApp= new StelApp(); |
160 | 351 | stelApp->setGui(gui); | 357 | stelApp->setGui(gui); |
161 | 352 | stelApp->init(conf); | 358 | stelApp->init(conf); |
162 | @@ -354,7 +360,6 @@ | |||
163 | 354 | actionMgr->addAction("actionSave_Screenshot_Global", N_("Miscellaneous"), N_("Save screenshot"), this, "saveScreenShot()", "Ctrl+S"); | 360 | actionMgr->addAction("actionSave_Screenshot_Global", N_("Miscellaneous"), N_("Save screenshot"), this, "saveScreenShot()", "Ctrl+S"); |
164 | 355 | actionMgr->addAction("actionSet_Full_Screen_Global", N_("Display Options"), N_("Full-screen mode"), this, "fullScreen", "F11"); | 361 | actionMgr->addAction("actionSet_Full_Screen_Global", N_("Display Options"), N_("Full-screen mode"), this, "fullScreen", "F11"); |
165 | 356 | 362 | ||
166 | 357 | |||
167 | 358 | StelPainter::initGLShaders(); | 363 | StelPainter::initGLShaders(); |
168 | 359 | 364 | ||
169 | 360 | setResizeMode(QDeclarativeView::SizeRootObjectToView); | 365 | setResizeMode(QDeclarativeView::SizeRootObjectToView); |
170 | @@ -448,6 +453,72 @@ | |||
171 | 448 | return ver.join(", "); | 453 | return ver.join(", "); |
172 | 449 | } | 454 | } |
173 | 450 | 455 | ||
174 | 456 | void StelMainView::dumpOpenGLdiagnostics() const | ||
175 | 457 | { | ||
176 | 458 | // GZ: Debug info about OpenGL capabilities. | ||
177 | 459 | QOpenGLContext *context = QOpenGLContext::currentContext(); | ||
178 | 460 | if (context) | ||
179 | 461 | { | ||
180 | 462 | context->functions()->initializeOpenGLFunctions(); | ||
181 | 463 | qDebug() << "initializeOpenGLFunctions()..."; | ||
182 | 464 | } | ||
183 | 465 | else | ||
184 | 466 | qDebug() << "No OpenGL context"; | ||
185 | 467 | |||
186 | 468 | QOpenGLFunctions::OpenGLFeatures oglFeatures=context->functions()->openGLFeatures(); | ||
187 | 469 | qDebug() << "OpenGL Features:"; | ||
188 | 470 | qDebug() << " - glActiveTexture() function is" << (oglFeatures&QOpenGLFunctions::Multitexture ? "" : "NOT") << "available."; | ||
189 | 471 | qDebug() << " - Shader functions are" << (oglFeatures&QOpenGLFunctions::Shaders ? "" : "NOT ") << "available."; | ||
190 | 472 | qDebug() << " - Vertex and index buffer functions are" << (oglFeatures&QOpenGLFunctions::Buffers ? "" : "NOT") << "available."; | ||
191 | 473 | qDebug() << " - Framebuffer object functions are" << (oglFeatures&QOpenGLFunctions::Framebuffers ? "" : "NOT") << "available."; | ||
192 | 474 | qDebug() << " - glBlendColor() is" << (oglFeatures&QOpenGLFunctions::BlendColor ? "" : "NOT") << "available."; | ||
193 | 475 | qDebug() << " - glBlendEquation() is" << (oglFeatures&QOpenGLFunctions::BlendEquation ? "" : "NOT") << "available."; | ||
194 | 476 | qDebug() << " - glBlendEquationSeparate() is" << (oglFeatures&QOpenGLFunctions::BlendEquationSeparate ? "" : "NOT") << "available."; | ||
195 | 477 | qDebug() << " - glBlendFuncSeparate() is" << (oglFeatures&QOpenGLFunctions::BlendFuncSeparate ? "" : "NOT") << "available."; | ||
196 | 478 | qDebug() << " - Blend subtract mode is" << (oglFeatures&QOpenGLFunctions::BlendSubtract ? "" : "NOT") << "available."; | ||
197 | 479 | qDebug() << " - Compressed texture functions are" << (oglFeatures&QOpenGLFunctions::CompressedTextures ? "" : "NOT") << "available."; | ||
198 | 480 | qDebug() << " - glSampleCoverage() function is" << (oglFeatures&QOpenGLFunctions::Multisample ? "" : "NOT") << "available."; | ||
199 | 481 | qDebug() << " - Separate stencil functions are" << (oglFeatures&QOpenGLFunctions::StencilSeparate ? "" : "NOT") << "available."; | ||
200 | 482 | qDebug() << " - Non power of two textures are" << (oglFeatures&QOpenGLFunctions::NPOTTextures ? "" : "NOT") << "available."; | ||
201 | 483 | qDebug() << " - Non power of two textures can" << (oglFeatures&QOpenGLFunctions::NPOTTextureRepeat ? "" : "NOT") << "use GL_REPEAT as wrap parameter."; | ||
202 | 484 | qDebug() << " - The fixed function pipeline is" << (oglFeatures&QOpenGLFunctions::FixedFunctionPipeline ? "" : "NOT") << "available."; | ||
203 | 485 | |||
204 | 486 | qDebug() << "OpenGL shader capabilities and details:"; | ||
205 | 487 | qDebug() << " - Vertex Shader:" << (QOpenGLShader::hasOpenGLShaders(QOpenGLShader::Vertex, context) ? "YES" : "NO"); | ||
206 | 488 | qDebug() << " - Fragment Shader:" << (QOpenGLShader::hasOpenGLShaders(QOpenGLShader::Fragment, context) ? "YES" : "NO"); | ||
207 | 489 | qDebug() << " - Geometry Shader:" << (QOpenGLShader::hasOpenGLShaders(QOpenGLShader::Geometry, context) ? "YES" : "NO"); | ||
208 | 490 | qDebug() << " - TessellationControl Shader:" << (QOpenGLShader::hasOpenGLShaders(QOpenGLShader::TessellationControl, context) ? "YES" : "NO"); | ||
209 | 491 | qDebug() << " - TessellationEvaluation Shader:" << (QOpenGLShader::hasOpenGLShaders(QOpenGLShader::TessellationEvaluation, context) ? "YES" : "NO"); | ||
210 | 492 | qDebug() << " - Compute Shader:" << (QOpenGLShader::hasOpenGLShaders(QOpenGLShader::Compute, context) ? "YES" : "NO"); | ||
211 | 493 | |||
212 | 494 | // GZ: List available extensions. Not sure if this is in any way useful? | ||
213 | 495 | QSet<QByteArray> extensionSet=context->extensions(); | ||
214 | 496 | qDebug() << "We have" << extensionSet.count() << "OpenGL extensions:"; | ||
215 | 497 | QMap<QString, QString> extensionMap; | ||
216 | 498 | QSetIterator<QByteArray> iter(extensionSet); | ||
217 | 499 | while (iter.hasNext()) | ||
218 | 500 | { | ||
219 | 501 | extensionMap.insert(QString(iter.peekNext()), QString(iter.peekNext())); | ||
220 | 502 | iter.next(); | ||
221 | 503 | } | ||
222 | 504 | QMapIterator<QString, QString> iter2(extensionMap); | ||
223 | 505 | while (iter2.hasNext()) | ||
224 | 506 | qDebug() << " - " << iter2.next().key(); | ||
225 | 507 | |||
226 | 508 | QFunctionPointer programParameterPtr =context->getProcAddress("glProgramParameteri"); | ||
227 | 509 | if (programParameterPtr == 0) | ||
228 | 510 | qDebug() << "glProgramParameteri cannot be resolved here. BAD!"; | ||
229 | 511 | //else | ||
230 | 512 | // qDebug() << "glProgramParameteri can be resolved. GOOD!"; | ||
231 | 513 | programParameterPtr =context->getProcAddress("glProgramParameteriEXT"); | ||
232 | 514 | if (programParameterPtr == 0) | ||
233 | 515 | qDebug() << "glProgramParameteriEXT cannot be resolved here. BAD!"; | ||
234 | 516 | //else | ||
235 | 517 | // qDebug() << "glProgramParameteriEXT can be resolved here. GOOD!"; | ||
236 | 518 | |||
237 | 519 | } | ||
238 | 520 | |||
239 | 521 | |||
240 | 451 | void StelMainView::deinit() | 522 | void StelMainView::deinit() |
241 | 452 | { | 523 | { |
242 | 453 | deinitGL(); | 524 | deinitGL(); |
243 | 454 | 525 | ||
244 | === modified file 'src/StelMainView.hpp' | |||
245 | --- src/StelMainView.hpp 2014-06-09 01:02:28 +0000 | |||
246 | +++ src/StelMainView.hpp 2014-09-12 11:42:18 +0000 | |||
247 | @@ -25,6 +25,7 @@ | |||
248 | 25 | #include <QDeclarativeView> | 25 | #include <QDeclarativeView> |
249 | 26 | #include <QCoreApplication> | 26 | #include <QCoreApplication> |
250 | 27 | #include <QEventLoop> | 27 | #include <QEventLoop> |
251 | 28 | #include <QOpenGLContext> | ||
252 | 28 | 29 | ||
253 | 29 | class QDeclarativeItem; | 30 | class QDeclarativeItem; |
254 | 30 | class QGLWidget; | 31 | class QGLWidget; |
255 | @@ -147,6 +148,8 @@ | |||
256 | 147 | void startMainLoop(); | 148 | void startMainLoop(); |
257 | 148 | 149 | ||
258 | 149 | QString getSupportedOpenGLVersion() const; | 150 | QString getSupportedOpenGLVersion() const; |
259 | 151 | //! provide extensive OpenGL dignostics in logfile. | ||
260 | 152 | void dumpOpenGLdiagnostics() const; | ||
261 | 150 | 153 | ||
262 | 151 | //! The StelMainView singleton | 154 | //! The StelMainView singleton |
263 | 152 | static StelMainView* singleton; | 155 | static StelMainView* singleton; |
264 | 153 | 156 | ||
265 | === modified file 'src/core/StelOpenGL.hpp' | |||
266 | --- src/core/StelOpenGL.hpp 2014-07-02 16:31:14 +0000 | |||
267 | +++ src/core/StelOpenGL.hpp 2014-09-12 11:42:18 +0000 | |||
268 | @@ -98,6 +98,8 @@ | |||
269 | 98 | #define glIsRenderbuffer(...) GLFUNC_(glIsRenderbuffer(__VA_ARGS__)) | 98 | #define glIsRenderbuffer(...) GLFUNC_(glIsRenderbuffer(__VA_ARGS__)) |
270 | 99 | #define glIsShader(...) GLFUNC_(glIsShader(__VA_ARGS__)) | 99 | #define glIsShader(...) GLFUNC_(glIsShader(__VA_ARGS__)) |
271 | 100 | #define glLinkProgram(...) GLFUNC_(glLinkProgram(__VA_ARGS__)) | 100 | #define glLinkProgram(...) GLFUNC_(glLinkProgram(__VA_ARGS__)) |
272 | 101 | #define glProgramParameteri(...) GLFUNC_(glProgramParameteri(__VA_ARGS__)) // GZ TRIAL | ||
273 | 102 | #define glProgramParameteriEXT(...) GLFUNC_(glProgramParameteriEXT(__VA_ARGS__)) // GZ TRIAL | ||
274 | 101 | #define glReleaseShaderCompiler(...) GLFUNC_(glReleaseShaderCompiler(__VA_ARGS__)) | 103 | #define glReleaseShaderCompiler(...) GLFUNC_(glReleaseShaderCompiler(__VA_ARGS__)) |
275 | 102 | #define glRenderbufferStorage(...) GLFUNC_(glRenderbufferStorage(__VA_ARGS__)) | 104 | #define glRenderbufferStorage(...) GLFUNC_(glRenderbufferStorage(__VA_ARGS__)) |
276 | 103 | #define glSampleCoverage(...) GLFUNC_(glSampleCoverage(__VA_ARGS__)) | 105 | #define glSampleCoverage(...) GLFUNC_(glSampleCoverage(__VA_ARGS__)) |
I think CLI option should be --dump- opengl- details instead --opengldetails