* cameraview: Scale the glViewPort by devicePixelRatio()
This fixes an issue seen in Cabana on a "hidpi" system with Wayland where
devicePixelRatio() != 1 and the video doesn't take up the full widget area.
On the recommended Ubuntu 20.04 install I wasn't able to reproduce, because
devicePixelRatio() was always equal to 1 even with scaling to 200% or 300%. It
might be different if "Fractional Scaling" is enabled in GNOME (I couldn't make
that option work in mv WM.)
Was going to enable just for Linux, but it appears to also be recommended for
Retina MacOS:
https://doc.qt.io/qt-5/scalability.html#high-dpi-scaling-on-macos-and-ios
... so have worked from the assumption that glViewport() always takes dimensions
in device pixels, never the "device independent pixels" of Qt.
* Update selfdrive/ui/qt/widgets/cameraview.cc
* Update selfdrive/ui/qt/widgets/cameraview.cc
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* auto detect available streams
* no switch if wide cam not available
* clear frames before getAvailableStreams
* warning
* clear at same time
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* reduce frame dropping
* This mode will not draw the same frame twice
* cleanup comment
* use previous texture if update is not triggered by vipc thread and without new frame
* compute x and y offsets using calibration
* fix default calibration
* clamp to max values
* only use when valid
* not while calibrating
* less diff
* cleanup zoom
* ui_blit working
* simpler and working
* more believable that it's real
* working on device
* build on pc
* use hardware pc
* reduce cpu usage
* yuv conversion to EGL
* move everything to cameraview
* some cleanup
* more cleanup
* init array
* init images with std::map
* dont destroy images
* do destroy images
Co-authored-by: Comma Device <device@comma.ai>
* rgb to nv12
* nv12 works (w memcpy)
* correct now
* no copy
* fix nv12 with fast debayer
* reverts of unused stuff
* ui use nv12
* comment out thumbnails for now
* rebase fix
* dm read nv12
* model read nv12
* fix ffmpeg encoder
* thumbnails from nv12
* replay to nv12
* python framereader support nv12
* remove hardcoded frame/buffer sizes
* fix build
* ffmpeg encoder fix buffers
* small cleanup
* reduce power usage test
* fix cpu usage test
* fix snapshot
* fix loggerd test
* bump cereal
Co-authored-by: Comma Device <device@comma.ai>
Co-authored-by: Joost Wooning <jwooning@gmail.com>
* draw camera on same frame from modelV2
* fix reversing
* optimze
* sleep shorter
* heavy debugging
* clean up
* fix ui hang
* try this
* more generic implementation
* add unused flag back
* draw latest frames when camerad is coming up with no modeld
* only get modelV2 once
* fix drawing
* conflate, reduce buffer, and remove special case when starting
* make tests pass
* remove comments
* frame_id is a uint32_t
* not sure why passing to cameraview causes overflow
* ternary, not too complicated
* change to size
* rename to frame
* use unique_ptr
* Revert "use unique_ptr"
This reverts commit 955842d951.
* Assert buffer size
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* use one deque with pairs and uint32_t
* formatting
* frame offset
* Revert "frame offset"
This reverts commit a2cff8a2d5.
* use array
* add prints
* Revert "add prints"
This reverts commit d6978746e5.
* clean up
* this handles all cases
* we want to clip
* fixes going backwards when replay or modeld lags multiple frames, then skips multiple frames
fixes going backwards when replay or modeld lags multiple frames, then skips multiple frames
* fix rare case where camera is behind model
simpler comment
* draw latest frames if we start with no model, then hang on current frame until model catches up
fix
* store if it's updated
* accurate comment
* reset to latest on connect and showevent
* better order
* use quint32 for sending signal function
* use empty
* draft
* kinda works
* works
* one line
* debug
* clean up
* revert this
* to preserve behavior, think we need to poll these
* revert
* no timeout when modeld is not alive
* Update selfdrive/ui/qt/onroad.cc
* changes from other PR
* see if we're drawing dup model or camera frames
* looks good, just need to clean up
* debug
* clean up
* clean up
* revert these changes
* fix
* pretty simple, test on device
* clean up
* revert this
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* CameraView: sync pbo with glFence instead of calling glFinish (#23293)
* Sync pbo with fence
* use std::unique_ptr
* cameraview.cc: call glFlush after creating fence
Co-authored-by: Dean Lee <deanlee3@gmail.com>
* move ui_draw_world to qt
* draw world if world_objects_visible is true
* cleanup
* cleanup includes
* continue
* cleanup
* cleanup
* enable multisampling on all devices
* navd: render simple map
* render route
* offscreen rendering
* cleanup
* more cleanup
* render into visionIPC
* rename class
* split position update from route update
* stop broadcast if not active
* gate vipc server behind flag
* add python library
* faster
* no vipc from python
* put behind extras
* only send when loaded
* add glFlush just to be sure
* cleanup settings into helper function
* function ordering
* broadcast thumbnails
* put behind param
* adjust zoom level
* add route to python bindings
* revert that freq change
* add logging if map rendering is enabled
* use rlogs if available
* bump cereal
* move vipc to thread
* use invokeMethod
* cleanup
* latest_frame = nullptr
* space
* safe quit
* running_-> exit_
* recv timeout 1000
* cleanup
* run in loop
* requestInterruption
* block queue on vipcConnected for thread safety
* cleanup
* remove unused signal updateFrame
* make signals public
* dont emit signal in update
* apply reviews
* cleanup
* little more cleanup
* fix
* use glTexSubImage2D
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* use CameraViewWidget
* no timer, updateFrame after frameSwapped
* use QOpenGLShaderProgram
* merge master
* remove that
* new function setStreamType
* continue
* remove showEvent
* cleanup
* cleanup
* little more
* fix black screen on startup
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>