| 521 | // clang-format on |
| 522 | |
| 523 | void |
| 524 | OSGLContext_mac::getGPUInfos(std::list<OpenGLRendererInfo>& renderers) |
| 525 | { |
| 526 | CGLContextObj curr_ctx = 0; |
| 527 | |
| 528 | curr_ctx = CGLGetCurrentContext (); // get current CGL context |
| 529 | |
| 530 | CGLRendererInfoObj rend; |
| 531 | GLint nrend = 0; |
| 532 | CGLQueryRendererInfo(0xffffffff, &rend, &nrend); |
| 533 | for (GLint i = 0; i < nrend; ++i) { |
| 534 | OpenGLRendererInfo info; |
| 535 | GLint rendererID, haccelerated; |
| 536 | if (CGLDescribeRenderer(rend, i, kCGLRPRendererID, &rendererID) != kCGLNoError) { |
| 537 | qDebug() << "Could not describe OpenGL renderer" << i; |
| 538 | continue; |
| 539 | } |
| 540 | CGLDescribeRenderer(rend, i, kCGLRPAccelerated, &haccelerated); |
| 541 | |
| 542 | // We don't allow renderers that are not hardware accelerated |
| 543 | if (!haccelerated) { |
| 544 | qDebug() << "OpenGL renderer" << RendererIDString(rendererID) << "is not accelerated"; |
| 545 | continue; |
| 546 | } |
| 547 | |
| 548 | info.rendererID.renderID = rendererID; |
| 549 | |
| 550 | #if !defined(MAC_OS_X_VERSION_10_7) || \ |
| 551 | MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 |
| 552 | GLint nBytesMem; |
| 553 | CGLDescribeRenderer(rend, i, kCGLRPVideoMemory, &nBytesMem); |
| 554 | GLint nBytesTexMem; |
| 555 | CGLDescribeRenderer(rend, i, kCGLRPTextureMemory, &nBytesTexMem); |
| 556 | qDebug() << "OpenGL renderer" << RendererIDString(rendererID) << "has" << nBytesMem/(1024.*1024.) << "MB of VRAM and" << nBytesTexMem/(1024.*1024.) << "MB of texture"; |
| 557 | |
| 558 | info.maxMemBytes = (std::size_t)nBytesMem; |
| 559 | #else |
| 560 | //Available in OS X v10.0 and later. |
| 561 | //Deprecated in OS X v10.7. |
| 562 | GLint nMBMem; |
| 563 | CGLDescribeRenderer(rend, i, kCGLRPVideoMemoryMegabytes, &nMBMem); |
| 564 | GLint nMBTexMem; |
| 565 | CGLDescribeRenderer(rend, i, kCGLRPTextureMemoryMegabytes, &nMBTexMem); |
| 566 | |
| 567 | info.maxMemBytes = (std::size_t)nMBMem * 1e6; |
| 568 | qDebug() << "OpenGL renderer" << RendererIDString(rendererID) << "has" << nMBMem << "MB of VRAM and" << nMBTexMem << "MB of texture"; |
| 569 | |
| 570 | // Available in OS X v10.9 |
| 571 | //GLint maxOpenGLMajorVersion; |
| 572 | //CGLDescribeRenderer(rend, i, kCGLRPMajorGLVersion, &maxOpenGLMajorVersion); |
| 573 | |
| 574 | #endif |
| 575 | /*GLint fragCapable, clCapable |
| 576 | CGLDescribeRenderer(rend, i, kCGLRPGPUFragProcCapable, &fragCapable); |
| 577 | CGLDescribeRenderer(rend, i, kCGLRPAcceleratedCompute, &clCapable);*/ |
| 578 | //info.fragCapable = (bool)fragCapable; |
| 579 | //info.clCapable = (bool)clCapable; |
| 580 |
nothing calls this directly
no test coverage detected