Forums - glBufferSubData/glMapBufferRange stall driver

3 posts / 0 new
Last post
glBufferSubData/glMapBufferRange stall driver
zxcvbad
Join Date: 15 Apr 14
Posts: 20
Posted: Mon, 2014-05-19 17:00
These tile based deferred rendering GPUs/drivers have problems with VBOs that are updated frequently either via glBufferSubData or glBufferData. The updates trigger shadow copy code paths in the driver which leads to poor performance and potentially OOM errors with content that uses a lot of dynamic vertex data. The proposed fix is to make the gpu process server internally handle VBOs marked STREAM and/or DYNAMIC as client-side vertex arrays transparently to the command buffer client. In Skia standalone testing using content that is a close mirror of the GUIMark2 Vector test client-side vertex arrays have shown 40-50% reduction in frametime and elimination of OOM errors. Some of the other ideas that have tried but either didn't fix the OOMs or had other problems: *Tried all 3 usage params to glBufferData. [No difference] *Deleting old VBO ID and using a new VBO IDs rather than calling glBufferData with a recycled ID. [OOM fixed but there's a huge hitch on Mali/Adreno when deleted VBOs are reclaimed by the driver] *Using a ring with various numbers of VBOs to give the driver time to have fully consumed a VBO before it is reused. It afflicts Adreno devices as well as Mali
  • Up0
  • Down0
mhfeldma Moderator
Join Date: 29 Nov 12
Posts: 310
Posted: Tue, 2014-05-20 07:10

Thanks for the write up on your performance issues with glBufferSubData and glMapBufferRange

1) Are these specific to an Adreno Driver and/or device?

2) Is there any sample app or benchmark you can refer to that demonstrates the performance issues or Out of Memory messages?

thanks...

  • Up0
  • Down0
Sonicadvance1
Join Date: 2 Nov 12
Posts: 51
Posted: Tue, 2014-05-20 08:31

I'll generate some examples for this once I get off of vacation this weekend.

  • 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.