Descriptiongpu: Fix Vivante's "hisilicon" GPUs
This fixes "Hisilicon" GPUs, which is an instance of a
Vivante's GPU design. This involves enabling virtual
contexts, since they don't support share-groups, and further
adds a work-around for switching surfaces. Without the work-
around the view surface "inherits" the size of the last
bound surface (which for Chrome tends to be a 1x1 pbuffer)
resulting in a black screen. The following steps "repair"
the view surface every time it is made current:
- Make it current.
- Bind the default frame-buffer.
- Make it not current.
- Destroy/recreate it from the native handle.
- Make it current again.
NOTE: The "Recreate" function is added to surface because
the Destroy/Initialize may be intercepted or modified by
wrapper surface classes. Recreate is similar to resize,
which after being forwarded by a wrapper can call
Destroy/Initialize on the 'real' surface.
BUG=179250, 229643
NOTRY=true
No try, since it's Android only and already tested.
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=194737
Patch Set 1 #Patch Set 2 : Add recreate work-around #
Total comments: 4
Patch Set 3 : Address feedback. #Patch Set 4 : Address feedback. #Patch Set 5 : Add TODO #
Total comments: 1
Patch Set 6 : Add FBO restore #
Messages
Total messages: 18 (0 generated)
|