• epenner@chromium.org's avatar
    gpu: Fix Vivante's "hisilicon" GPUs · cafa295e
    epenner@chromium.org authored
    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.
    
    Review URL: https://chromiumcodereview.appspot.com/13140006
    
    git-svn-id: svn://svn.chromium.org/chrome/trunk/src@194737 0039d316-1c4b-4281-b951-d872f2087c98
    cafa295e
gl_surface_egl.h 3.24 KB