Forums - Adreno320 gpu skinning related crash

6 posts / 0 new
Last post
Adreno320 gpu skinning related crash
smoudgil
Join Date: 7 May 14
Posts: 3
Posted: Thu, 2014-05-08 18:03

Hello,

 

I am working on a game on LG Nexus 4 (4.2.2). Out of blue sometimes I am seeing a hard crash with following repeating output

 

W/Adreno200-GSL( 2544): <gsl_ldd_control:226>: ioctl code 0xc0140910 (IOCTL_KGSL_RINGBUFFER_ISSUEIBCMDS) failed: errno 35 Resource deadlock would occur

W/Adreno200-ES20( 2544): <finish_current_fbo_rendering:183>: GL_OUT_OF_MEMORY

 
 
 
It is not really a memory issue as the device has a lot of free memory and I have tracked it down to our gpu skinning shader. If I take out some instructions related to skinning tangent data this issue does not occur. I am attaching the shader here for reference. Is there anything apparent in the shader that may cause this issue. Sometimes I have to restart the device after this crash as it freezes. Any help/leads will be greatly appreciated.
 
 
Thanks
  • Up0
  • Down0
mhfeldma Moderator
Join Date: 29 Nov 12
Posts: 310
Posted: Fri, 2014-05-09 08:09

I wonder if you reduce the number of uniforms, does the problem goes away?

Is the rest of the app optimized for mobile (number of draw calls, gl state changes, amount of geometry that's rendered, texture resolutions...)?

 

 

  • Up0
  • Down0
smoudgil
Join Date: 7 May 14
Posts: 3
Posted: Fri, 2014-05-09 10:54

Hello,

Thanks for the response, Every mesh of the character uses a different number of uniforms. This will be harder to test unless I change the data to use less bones. Is there a max on the number of uniforms I can use? The app is optimized to a certain degree. More optimization will be done so as to ensure we are runnig at 30 fps throughout. Unless there is a specific optimization that may be related to this crash I can try it out but at the moment this crash output is not helpful at all.

 

  • Up0
  • Down0
mhfeldma Moderator
Join Date: 29 Nov 12
Posts: 310
Posted: Wed, 2014-05-14 07:27

You'll need to query "MAX_VERTEX_UNIFORM_COMPONENTS and use that value to guide how many bones to use.  Our experience is that each bone uses 3 vec4s.

 

 

  • Up0
  • Down0
smoudgil
Join Date: 7 May 14
Posts: 3
Posted: Tue, 2014-05-27 14:04

I did a quick check at boot and get the following results

HTC One S (Adreno 225)

GL_MAX_VERTEX_UNIFORM_COMPONENTS =  0

GL_MAX_VERTEX_UNIFORM_VECTORS = 251

 

Nexus 5

GL_MAX_VERTEX_UNIFORM_COMPONENTS = 1024

GL_MAX_VERTEX_UNIFORM_VECTORS = 256

 

Nexus 4 

GL_MAX_VERTEX_UNIFORM_COMPONENTS = 1024

GL_MAX_VERTEX_UNIFORM_VECTORS = 256

 

I am mainly concerned with my results on the HTC one device and it is another one with skinning problems. Any ideas why GL_MAX_VERTEX_UNIFORM_COMPONENTS is 0 and GL_MAX_VERTEX_UNIFORM_VECTORS 251? They should be atlease 1024 and 256 respectively. 

  • Up0
  • Down0
mhfeldma Moderator
Join Date: 29 Nov 12
Posts: 310
Posted: Wed, 2014-05-28 11:47

1) GL_MAX_VERTEX_UNIFORM_COMPONENTS is a gles 3.0 property which is why you might be seeing 0.

2) It's possible that when querying GL_MAX_VERTEX_UNIFORM_COMPONENTS with a gles 2 driver, an error is being generated (check with glGetError)

3) 251 although a bit odd, it is correct.

4) In general the number of components should be 4x the number of vectors.

  • Up0
  • Down0
or Register

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries (“Qualcomm”). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.