Page MenuHomePhabricator

something broken with gl when lots of windows open with x11 engine
Open, HighPublic

Description

  1. ELM_ACCEL=gl elementary_test
  2. open 20-30+ glview gears and glview many gears windows
  3. windows start opening and not rendering or not rendering the entire window

untag 1.21 milestone if this is a #refactoring issue

zmike created this task.Jun 29 2018, 1:38 PM
zmike triaged this task as High priority.
raster added a subscriber: raster.Jul 16 2018, 1:13 AM

I can't reproduce it. opened 44 elementary_tests.... everything rendering ok for me... :/ amd radeon vega64 with mesa open drivers here and opengl (not gles) compiled for efl... :(

zmike added a comment.Jul 16 2018, 3:02 AM

Unsure whether this is driver bug (on Intel, so probably not), but when opening a lot of glview windows there's definitely something broken. Only tested with gles build, so could be local to that codepath.

Nice. This happens for me too, also gles, also on intel. Haven't tested anything else yet.

@raster did you open all those 44 windows from the same elementary_test main window?

raster added a comment.Aug 1 2018, 2:06 AM

@ManMower - yes i did. i kept clicking the button until i got bored then counted them. :)

bu5hm4n added a subscriber: bu5hm4n.Aug 1 2018, 5:08 AM

I cannot reproduce with nvidia either.

Thanks guys! I'm really hoping to dismiss this as a driver issue, but will investigate a little more first. :)

ProhtMeyhet added a subscriber: ProhtMeyhet.EditedAug 2 2018, 4:23 AM

@zmike just a hunch, but could you try if that happens if there are no more available video ports? mplayer would (at least with the video output xv), for example, print out something like this if that's the case:

Xv: Could not grab port 63
Xv: Could not grab port 64
Xv: Could not grab port 65
Xv: Could not grab port 66
Xv: Could not grab port 67
Xv: Could not grab port 68
Xv: Could not grab port 69
Xv: Could not grab port 70
Xv: Could not grab port 71
Xv: Could not grab port 72
Xv: Could not grab port 73
Xv: Could not find free Xvideo port - maybe another process is already
Xv: using it. Close all video applications, and try again. If that does
Xv: not help, see 'mplayer -vo help' for other (non-xv) video out drivers.
Error opening/initializing the selected video_out (-vo) device.

and at some point give up and not render the video.

this smells here like a video driver issue - like there are a limited number of "contexts" (video ports) for output rendering and once you hit the limit things fail. that's what it smells like at any rate... so either a hardware or driver design limit. the numbers above hint that the limit might be 64 which smells like the kind of number that might be such a limit well some ports are used implicitly e.g. the screen/compositor uses 1 then it gets 63 mroe of them (port 0, 1, 2, ... 62) then the 65'th fails.

this smells here like a video driver issue - like there are a limited number of "contexts" (video ports) for output rendering and once you hit the limit things fail. that's what it smells like at any rate... so either a hardware or driver design limit. the numbers above hint that the limit might be 64 which smells like the kind of number that might be such a limit well some ports are used implicitly e.g. the screen/compositor uses 1 then it gets 63 mroe of them (port 0, 1, 2, ... 62) then the 65'th fails.

that leaves efl to deal with the error.

apparently it doesn't. what do? print to stderr and be done with it, like mplayer?

i don't know :-(

i don't even know that we get an error or can detect it. we do things like check the return of glxcreatewindow and error out and complain what failed. it seemingly is not failing. if we don't see things failing from the glx/egl api then we can't do anything about it.

ManMower removed ManMower as the assignee of this task.Thu, Feb 14, 12:13 PM
ManMower added a subscriber: ManMower.