2012-05-30 11 views
6

Questo sembra essere un problema di GPU specifico per Fire e apprezzerei qualsiasi aiuto o suggerimento.Kindle Fire hitches e texture corruzione a 60 fps

Per la maggior parte, il mio gioco di difesa della torre è in grado di eseguire 60 fps anche con dozzine di nemici e torri tutte sparate in ogni direzione. Tuttavia, a volte apparentemente casuali (anche se non accade nulla di simile - come sedersi sul menu principale), gli intoppi di 400ms distanziati uniformemente interrompono il gioco a intervalli di circa 2-3 secondi. Poi improvvisamente scompariranno i nodi e i blocchi di texture di 16x16 pixel non verranno riprodotti casualmente.

Queste 2 anomalie sembrano escludersi a vicenda e, come ho detto, possono essere attivate semplicemente avviando il gioco e navigando dal menu principale allo schermo di selezione livello, dove sono caricate risorse minime e si sta verificando una piccola logica di gioco. Uso OpenSL per effetti sonori e ho notato che disabilitare sfx ha cambiato la durata del nodo a 280 ms.

Quindi ho forzato manualmente il framerate da 60 fps a 30 fps (inserendo una sospensione nel ciclo di zecche del frame), ed entrambi i glitch sono scomparsi completamente.

Ecco una schermata che mostra la trama non il rendering. Questo errore si verifica in tutte le superfici di rendering a 32 bit, indipendentemente dai valori di profondità/stencil e dal fatto che sia attiva o disattivata la cancellazione del colore.

Grazie!

MODIFICA: In realtà, a quanto pare il flicker di trama si verifica in qualsiasi framerate, tuttavia, da qualche parte tra 40 e 45 fps, l'intoppo dei 400 ms scompare.

level select screen

main menu

+0

E gli altri limiti FPS? per esempio. 45/75 –

+0

In realtà, a quanto pare il flicker di trama si verifica in qualsiasi framerate, tuttavia, da qualche parte tra 40 e 45 fps l'aggancio di 400ms si allontana ... Sono decisamente correlati, anche se non si escludono a vicenda a 60 fps. L'incidenza del loro andirivieni è altamente correlata. – Ajas

risposta

2

Ok, questo è un bug del driver molto sottile non necessariamente specifica per accendere il fuoco. Spero di aiutare qualcuno a evitare simili dolori in futuro. Ho già delineato chiaramente i sintomi, ma la fonte del bug deriva dall'impostare il rect a forbice.

In sostanza, abbiamo molti elementi dell'interfaccia utente animati che effettuano lo zoom avanti e indietro sullo schermo, quindi ci divertiamo molto con il rect a forbice. Sembra che il grilletto stia impostando la forbice rect fuori dallo schermo, quindi il rendering all'esterno del rect orizzontalmente. In questo modo la GPU si presenta in uno stato leggermente avvitato, che non sembra manifestarsi immediatamente, ma gradualmente peggiora.

Inoltre questo sembra aver risolto un bug che abbiamo avuto su Droid RAZR, che ha una GPU in comune con il fuoco. Il bug è stato un 5 secondi congelamento nel gioco in cui ci piacerebbe vedere nel logcat:

W/SharedBufferStack(14208): waitForCondition(LockCondition) timed out (identity=173, status=0). CPU may be pegged. trying again. 

Ovviamente questi tipi di insetti sono difficili da rintracciare e individuare le condizioni precise, ma è sicuramente legato al rendering di fuori di recessi a forbice fuori dallo schermo.

+0

Giusto per essere chiari: la soluzione per l'aggancio, il congelamento e il rendering delle anomalie era quella di agganciare lo scissor rect allo schermo prima di chiamare glScissor(). – Ajas

Problemi correlati