• epenner@chromium.org's avatar
    Reland "gpu: Fix Vivante's "hisilicon" GPUs" · 85cb468f
    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
    NOTRY=true
    
    No-try, as all the relevant bots are already green.
    
    Review URL: https://chromiumcodereview.appspot.com/13852023
    
    git-svn-id: svn://svn.chromium.org/chrome/trunk/src@195349 0039d316-1c4b-4281-b951-d872f2087c98
    85cb468f
gles2_cmd_decoder.cc 342 KB