New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Black screen on iPad Mini Retina 8.3 (12F69) with Xcode 6.3.2 #21
Comments
Also occurs on my iPad Air (iPad4,2). |
Hi, the only two devices I have access to are an iPad Air 2 and an iPhone 6 and the app displays particles as expected on both. I know other people have experienced issues with A7 based iPhone 5s - maybe this code really needs an A8, it's pretty intensive stuff Could you try dropping the particle count in the view controller's viewDidLoad() method? It's currently set at .TwoMillion, maybe .HalfMillion would work on your devices. Something else to look at - are view.frame.width and .height correctly set in viewDidLoad()? Sorry I can't be more helpful, but without access to your devices, I'm a little stuck. Cheers, Simon |
Hey, I can confirm that my iPhone 6 works as expected (caveat other issue raised re:menu). Dropping to .HalfMillion had no effect on iPad Mini & iPad Air. Having now seen it working correctly on the iPhone, the 1px border would appear to be the output of the simulation.. so I would assume we are seeing at least a few frames from it (limited to the 1px border) initially, before something else occludes or halts frame updates. Profiling: Console shows 60fps, but OpenGL ES Profiler shows Renderer & Tiler Utilisation 25-35% and 5-8% respectively for 2/10th secs then it flatlines to 0%. CPU is spending majority of it's time doing replaceRegion as expected (even with GPU at 0%):
I'd love to see this working on the iPad (ideally without having to buy an Air 2 ;) ) - email me if you'd like to do a Skype/Hangout to pair on it. |
Issue is not resolved by #24 FYI |
It's the battery power level :) Need to change the status bar tint to white. Simon On 1 June 2015 at 17:18, Jay Fenton notifications@github.com wrote:
flexmonkey.co.uk http://flexmonkey.co.uk | @FlexMonkey |
Damnit, just realised that. :) |
ReDiLab works fine on the iPad Air - what's the fundamental difference between the two codebases? Just the shared memory technique? |
I guess the main difference is that ReDiLab doesn't use CAMetalLayer, it Simon On 1 June 2015 at 17:26, Jay Fenton notifications@github.com wrote:
flexmonkey.co.uk http://flexmonkey.co.uk | @FlexMonkey |
I've made some progress. It seems to be related to number of thread groups you're dispatching: Relevant code:
Results:
Particle Count = 131072 Thread Groups = 4096 Works great!
Particle Count = 131072 Thread Groups = 4096 No particles displayed.
Particle Count = 131072 Thread Groups = 128 ...any higher results in zero particles! Result is only 4 particles rendered and animating, but stable. Seems odd that just 4 would render... |
Reading the Apple Metal Programming Guide > Executing a Compute Command, it seems to me that the second param to dispatchThreadgroups should be a multiple of the threadExecutionWidth, up to maxTotalThreadsPerThreadgroup in our case (as it's 1-dimensional). I tried it (as well as maxTotalThreadsPerThreadgroup/2) but still results in zero pixels :(
|
Intuitively, I feel like the A7 and A8 are acting very differently with respect to the dispatchThreadgroups call (based on our having to dial it down so much to even get a handful of pixels rendering on A7). I'm actually surprised that the it works on A8 works, as the docs would suggest there is a hard limit (Thread Execution Max above) that we are way over with the existing params (e.g. 131072*32). I don't know this empirically just yet, but perhaps the underlying A7 target does not just Do The Right Thing™ when given too much in a single dispatchThreadgroups call. |
App results in black screen with upper left menu (working) and a green square in top right.
Touch circles are visible, but otherwise black.
For about a second after startup, I can see a very thin 1px "rainbow" around the perimeter of a completely black screen, before it is replaced by the black screen with menu etc. I assume the rainbow is the particle system, as it's palette matches that of your screenshot.
Perhaps the overlay is not transparent to the underlying CAMetalLayer?
The text was updated successfully, but these errors were encountered: