summaryrefslogtreecommitdiffstats
path: root/src/render/renderers/opengl/renderer/renderer_p.h
Commit message (Collapse)AuthorAgeFilesLines
* Make sure right screen is set on QOpenGLContext and QOffscreenSurfaceAndy Shaw2019-10-141-0/+4
| | | | | | | | | | | When the Qt3D window is on a specific screen, then it needs to ensure that any supporting QOpenGLContexts and QOffscreenSurfaces are set to be using that same screen or it will fail to render the content. Change-Id: Ief4f3e88bf6f71862bc5dace0cb0bddcdf3a98b5 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Paul Lemire <paul.lemire@kdab.com> (cherry picked from commit 93aa379ae5cf624f024aa9173ce42e90b5c58002)
* Fix Entity parenting hierarchyJim Albamont2019-04-041-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the initial Entity backend node hierarchy is created it skips over any non-entity nodes to ensure that Entities are only parented to other Entities. Calling QNode::setParent breaks this when reparenting Entities to non-entity nodes. Fix by sending a new "parentEntityUpdated" property update that backend Entity nodes listen for. They keep the id of their new parent and flag the need to rebuild the entity hierarchy. This triggers a new job to clear the children and parents of every backend Entity, then rebuilds the hierarchy using the stored parent ID in each Entity. This is much more forgiving of creation/parenting ordering issues and shouldn't be less performant because any Entity reparent was previously marking everything dirty anyway. Add a new test from QTBUG-73905 that creates 4 cylinders and manipulates the parents in different ways. Add a new test to tst_nodes to reparent a QEntity to a QNode and ensure the entity finds it's correct QEntity parent. Add a new test to tst_entity to ensure backend nodes correctly handle the new parenting events. Task-number: QTBUG-73905 Change-Id: Iab0203947d89bbed2868b3629fbde879675fe568 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Fix: rebuild material and layer caches when FrameGraph tree is dirtyPaul Lemire2019-02-191-0/+1
| | | | | | | | | | This could otherwise result in black screens when the FrameGraph tree is updated and no other change is sent. Screen would remain black until some other element with dirty changes triggers a cache rebuild. Change-Id: Iac43965f06d1d644de14e6a6c8768e035bed69a6 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Properly update properties from Backend to Frontend texturesPaul Lemire2018-08-081-0/+5
| | | | | | | | | | | | | | | | | | | Taking into account we have texture sharing in the backend, we can only update frontend texture properties once we have created the shared backend texture. Code was adjusted to retrieve these properties when creating the GLTexture. Such changes are stored and sent on the next run loop from a job where they are distributed to all referenced frontend Texture. The status property handling has also been updated to send status changes to all shared textures instead of just the texture whose data generator is used to gather the data. A manual test checking texture property updates, sharing and remote url sharing has also been added. Change-Id: I8ed2449fe57c9d7337580b0f7561f974cbd5006d Task-number: QTBUG-65775 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Renderer: do not lookup cleanup texturesPaul Lemire2018-07-181-1/+1
| | | | | | | | | | | Since they are already destroyed, cleanup textured ids shouldn't be used to look up backend textures but only to tell the GLTextureManager to abandon referenced textures. The was an oversight that should have been handled in d47c78e6. Change-Id: Iafaee4bb6442c907f6e011c80b5e5347579efde5 Task-number: QTBUG-69379 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix race condition when executing multiple filterlayerjobs at oncePaul Lemire2018-06-251-0/+3
| | | | | | | | | | The updating of referenced layer ids for each Entity should only be performed once and not by multiple jobs. Therefore, this update was moved into a dedicated job which is now a dependency of the filterentityjob instances. Change-Id: Ie8ecc49a7c6c7d41a1f1f0d18619b5e142b68204 Task-number: QTBUG-68942 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Avoid locking up on Radeonv5.11.0-rc1Laszlo Agocs2018-05-041-1/+2
| | | | | | | | | Could not find a decent way to do a renderer/vendor string query due to the convoluted internals so just used a define for now. Task-number: QTBUG-67937 Change-Id: I0dcfa41377a5e430d3f7973c5aaa01535100c53c Reviewed-by: Liang Qi <liang.qi@qt.io>
* Fix race in startup/shutdownPaul Lemire2018-03-231-0/+1
| | | | | | | | | | | | | When the AspectEngine with a QRenderAspect (and RenderThread) is started and stopped within the same loop, there was a race in which Renderer::shutdown would possibly be called while Renderer::initialize wasn't complete. Apart from testing, such starting and stopping within the same loop is strongly discouraged as Qt3D doesn't have time to create an offscreen surface to properly release GL resources. Change-Id: Ie6f0a0698c213e3015bc9c51efc48d8706f20b3b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* AbstractRenderer: add setOpenGLContext methodPaul Lemire2018-03-191-1/+1
| | | | | | | | | | This will allow to only deal with the AbstractRenderer class interface in the QRenderAspect. Then in practice, the setOpenGLContext function may just be ignored by renderers which don't care about OpenGL Change-Id: I1adc9c203e78a31ef1054a3be36e703b4e1a6f3e Task-number: QTBUG-61151 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Move Renderer specific classes into new folderPaul Lemire2018-03-191-0/+405
This is another step toward isolating the renderer from the render aspect Change-Id: I4031675b961d6645b65bbe05cf62d150993038b0 Task-number: QTBUG-61151 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>