Comments (4)
I had the very same thing happen to me, under (probably) different circumstances.
Switching to the capture tab initializes OpenGL for the 1st time.
I'm running Orbit on a Windows Laptop (Dell XPS 13, with an Intel HD 520 graphics card) over a kind of "docking station" (Displaylink D3100), which allows me to extend the desktop, or clones the display, over to a larger screen. If I launch Orbit when using this device, I would get a failure, where a call to glGetString(GL_VERSION)
was returning "1.1" (I think), an ancient version with no capabilities.
The failure occurs here:
> glew32d.dll!glewContextInit(...) Line 16177 C Symbols loaded.
glew32d.dll!glewInit() Line 20866 C Symbols loaded.
OrbitQt.exe!GlCanvas::Initialize() Line 109 C++ Symbols loaded.
OrbitQt.exe!OrbitGLWidget::initializeGL() Line 81 C++ Symbols loaded.
Qt5Widgetsd.dll!QOpenGLWidgetPrivate::initialize() Line 804 C++ Symbols loaded.
Qt5Widgetsd.dll!QOpenGLWidget::resizeEvent(QResizeEvent * e) Line 1178 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidget::event(QEvent * event) Line 8942 C++ Symbols loaded.
Qt5Widgetsd.dll!QOpenGLWidget::event(QEvent * e) Line 1351 C++ Symbols loaded.
Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3745 C++ Symbols loaded.
Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3708 C++ Symbols loaded.
Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 988 C++ Symbols loaded.
Qt5Cored.dll!QCoreApplication::sendEvent(QObject * receiver, QEvent * event) Line 231 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidgetPrivate::sendPendingMoveAndResizeEvents(bool recursive, bool disableUpdates) Line 7809 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidgetPrivate::show_helper() Line 7862 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidget::setVisible(bool visible) Line 8216 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidget::show() Line 7767 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidgetPrivate::showChildren(bool spontaneous) Line 8299 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidgetPrivate::show_helper() Line 7869 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidget::setVisible(bool visible) Line 8216 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidget::show() Line 7767 C++ Symbols loaded.
Qt5Widgetsd.dll!QStackedLayout::setCurrentIndex(int index) Line 326 C++ Symbols loaded.
Qt5Widgetsd.dll!QStackedWidget::setCurrentIndex(int index) Line 217 C++ Symbols loaded.
Qt5Widgetsd.dll!QTabWidgetPrivate::_q_showTab(int index) Line 745 C++ Symbols loaded.
Qt5Widgetsd.dll!QTabWidget::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 176 C++ Symbols loaded.
Qt5Cored.dll!QMetaObject::activate(QObject * sender, int signalOffset, int local_signal_index, void * * argv) Line 3742 C++ Symbols loaded.
Qt5Cored.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3603 C++ Symbols loaded.
Qt5Widgetsd.dll!QTabBar::currentChanged(int _t1) Line 335 C++ Symbols loaded.
Qt5Widgetsd.dll!QTabBar::setCurrentIndex(int index) Line 1348 C++ Symbols loaded.
Qt5Widgetsd.dll!QTabBar::mousePressEvent(QMouseEvent * event) Line 1939 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidget::event(QEvent * event) Line 8777 C++ Symbols loaded.
Qt5Widgetsd.dll!QTabBar::event(QEvent * event) Line 1664 C++ Symbols loaded.
Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3745 C++ Symbols loaded.
Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3219 C++ Symbols loaded.
Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 988 C++ Symbols loaded.
Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Line 234 C++ Symbols loaded.
Qt5Widgetsd.dll!QApplicationPrivate::sendMouseEvent(QWidget * receiver, QMouseEvent * event, QWidget * alienWidget, QWidget * nativeWidget, QWidget * * buttonDown, QPointer<QWidget> & lastMouseReceiver, bool spontaneous) Line 2713 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidgetWindow::handleMouseEvent(QMouseEvent * event) Line 618 C++ Symbols loaded.
Qt5Widgetsd.dll!QWidgetWindow::event(QEvent * event) Line 240 C++ Symbols loaded.
Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3745 C++ Symbols loaded.
Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3105 C++ Symbols loaded.
Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 988 C++ Symbols loaded.
Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Line 234 C++ Symbols loaded.
Qt5Guid.dll!QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent * e) Line 1928 C++ Symbols loaded.
Qt5Guid.dll!QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent * e) Line 1712 C++ Symbols loaded.
Qt5Guid.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 716 C++ Symbols loaded.
qwindowsd.dll!QWindowsGuiEventDispatcher::sendPostedEvents() Line 83 C++ Symbols loaded.
Qt5Cored.dll!qt_internal_proc(HWND__ * hwnd, unsigned int message, unsigned __int64 wp, __int64 lp) Line 223 C++ Symbols loaded.
[External Code] Annotated Frame
Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 613 C++ Symbols loaded.
qwindowsd.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 74 C++ Symbols loaded.
Qt5Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 135 C++ Symbols loaded.
Qt5Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 212 C++ Symbols loaded.
Qt5Cored.dll!QCoreApplication::exec() Line 1261 C++ Symbols loaded.
Qt5Guid.dll!QGuiApplication::exec() Line 1658 C++ Symbols loaded.
Qt5Widgetsd.dll!QApplication::exec() Line 2922 C++ Symbols loaded.
OrbitQt.exe!main(int argc, char * * argv) Line 49 C++ Symbols loaded.
[External Code] Annotated Frame
So it turns out that the Dell version of Intel drivers lag behind the Intel versions, and upgrading them yielded better results. The call to getString now returns "4.5.0 - Build 22.20.16.4815", but unfortunately, this doesn't entirely resolve my problem (but that is another matter).
Check your display drivers, and try to run the glew utilities (glewinfo and visualinfo).
from orbit.
I can confirm that the VM's OpenGL capabilities are limited to OpenGL 1.1. Does Qt provide a software renderer that can be used in these circumstances?
from orbit.
From the docs:
The Qt OpenGL module is implemented as a platform-independent Qt/C++ wrapper around the platform-dependent GLX (version 1.3 or later), WGL, or AGL C APIs. Although the basic functionality provided is very similar to Mark Kilgard's GLUT library, applications using the Qt OpenGL module can take advantage of the whole Qt API for non-OpenGL-specific GUI functionality.
So it's just a wrapper.
Glew will not initialize (within your virtualized environment) without greater capabilities.
It looks like RemoteFX vGPU would be required, and that might require a Windows Server (not just Professional)... though I'm going out on a limb here...
from orbit.
As a workaround, you could consider the following: Orbit can be used to profile a process running on another machine. (I have never tried it in a VM but it should work). The matching .pdb files need to be accessible from the Host machine for Orbit to run properly. Make sure you add the proper directories in OrbitProfiler\config\Symbols.txt so that Orbit knows where to find symbols. Orbit will make sure that the symbols on the host match the modules on the target machine.
On the target side, inject Orbit.dll in the target application from a temporary instance of Orbit.exe running on the target machine (Orbit needs to be installed on both machines). The host machine will run the UI version of Orbit while the target machine will use the command line version of Orbit to inject the dll into the target process. Orbit.exe will then terminate on the target machine.
On the target machine’s command line, run:
"Orbit.exe inject:MyProcess host:192.168.0.1" (with the ip of the host machine...)
Orbit will find the first process matching the name “MyProcess” and inject Orbit.dll.
Another option is to control the loading of Orbit.dll from your code. Include "Orbit.h" in your project and call OrbitAPI::Connect with the IP of the machine running the Orbit UI (a_Host) and the port to connect to (a_Port). Note that the Orbit API is header-only, simply add Orbit.h to your project, no lib required.
From Orbit.h:
//-----------------------------------------------------------------------------
struct OrbitAPI
{
static inline bool Connect( const char* a_Host, int a_Port = 1789 );
static inline bool IsConnected();
…
};
Sampling profiling is disabled when remote debugging, it has not yet been implemented. It's on my todo list.
from orbit.
Related Issues (20)
- Orbit's messages appear in user's app stdout/stderr HOT 2
- Orbit crashed when trying to connect to QT application HOT 4
- Doesn't build with Boost outcome HOT 1
- Orbit client crashes when unhook all the functions HOT 1
- Callstack selection is confusing HOT 3
- build.sh error HOT 11
- Out of memory in case of very frequent hooked function HOT 3
- Compile error on Ubuntu 22.04 HOT 1
- Support split debug symbols without build-id (gentoo-style) HOT 2
- Build failing on Ubuntu 23.10 HOT 1
- U888
- orbit: paly_lift.py collison issue HOT 1
- compile failed on Ubuntu20.04.1 HOT 10
- Build is broken due to Orbit not having Conan lock files anymore HOT 5
- Modifying conanfile.py does not trigger build on CI HOT 1
- "Report a bug "and "Request feature" are broken links HOT 2
- Show numa nodes in scheduler track
- Kernel tracepoints memory layout should be set at runtime by reading sysfs entry
- ERROR: googleapis/cci.20221108: Cannot load recipe. Conan version (1.58.0) does not satisfy the defined one HOT 1
- conan profile: error: argument subcommand: invalid choice: 'new' HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from orbit.