Bug 97489 - High latency using GL_FEEDBACK mode
Summary: High latency using GL_FEEDBACK mode
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: 11.0
Hardware: x86-64 (AMD64) Linux (All)
: high critical
Assignee: Ian Romanick
QA Contact: Intel 3D Bugs Mailing List
Depends on:
Reported: 2016-08-26 07:08 UTC by sancelot
Modified: 2016-08-29 21:23 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:

stops when glRenderMode has high latency test case (5.52 KB, text/x-csrc)
2016-08-26 07:08 UTC, sancelot

Description sancelot 2016-08-26 07:08:37 UTC
Created attachment 126049 [details]
stops when glRenderMode has high latency test case


for unknown reasons I noticed my GL application was very slow after migrating to recent platforms.

after dissection of application, I found that has happened when using GL_FEEDBACK rendermode. 

Sometime, it takes very long time. I made a single testcase app that monitors time spent in it to reproduce the problem.

Comment 1 sancelot 2016-08-26 07:09:58 UTC
This has happened too using GL_ALWAYS_SOFTWARE mode =1
Comment 2 Kenneth Graunke 2016-08-26 09:32:37 UTC
GL_FEEDBACK and GL_SELECT is implemented entirely in software.  This is unlikely to be solved any time soon...improving the speed of extremely legacy features isn't high on anyone's priority list.  Sorry :(
Comment 3 sancelot 2016-08-26 10:02:11 UTC
I may not have understood everything...Do you mean glRenderMode(GL_FEEDBACK) is obsolete and I should use new OpenGL features?

Comment 4 Kenneth Graunke 2016-08-26 13:37:54 UTC
Yes, glRenderMode has been deprecated for a long long time.

If you want to disable rendering, you can use glEnable(GL_RASTERIZER_DISCARD).
Transform feedback (GL 3.0) can record a subset of your vertex shader's outputs into a buffer.  Another alternative would be to have your vertex shader write data into a shader storage buffer object (SSBO) (GL 4.3).

Unfortunately, both of those options give you data pre-clipping, while glRenderMode(GL_FEEDBACK) gives you data post-clipping.  It's a bit awkward because there isn't an exact replacement for the deprecated functionality.

The thing is, GL_FEEDBACK and GL_SELECT don't really exist in hardware.  We have to emulate them somehow in the driver.
Comment 5 sancelot 2016-08-29 07:01:58 UTC
Thanks for your reply..

It is very good too know that GL_FEEDBACK is not made by hardware...because I was sure it was using hardware and thus sparing cpu consuming on small processors architecture....and I think I am not standalone....

I will migrate to new OpenGL specifications.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.