goldfish-opengl: nuke virtual heap

Integrated GPUs typically only hvae one heap of generic system
memory which is host visible

When virtualizing, gfxstream creates a fake device local heap and
host visible heap.

The idea is the gfxstream suballocates the host visible heap, which
requires occasional mappings of host memory into the guest.  By
presenting a fake device local heap, we avoid the suballocations.

However, that method has the downside that a vkCmdCopyBuffer is
needed from the the host visible heap (when used) to the fake device
local heap memory.  The guest not aware it's a fake heap.  That
also has higher potential memory costs.

It's unclear which affect will be larger, and it could be app
specific.  With Zink + gfxbench, and there wasn't any
major FPS differences.  For example,

gl2_offscreen run | With patch (FPS) | Without patch (FPS)
--------------------------------------------------------
       1                 82.83              78.81
       2                 83.68              79.23
       3                 80.05              79.58
       4                 79.65              79.88
       5                 82.16              77.23

ANGLE hasn't been tested.

Ideally, we'd get rid of the fake virtual heap and not suballocate.
We can typically defer mapping the memory into the guest too.
This change goes in that direction.

BUG=233803018
TEST=run ./deqp-vk.memory* + gfxbench on iGPU

Change-Id: I95ebd4779c221649a6273806f8fb03e61ed97031
1 file changed