diff options
author | Yahan Zhou <yahan@google.com> | 2022-05-11 18:47:32 -0700 |
---|---|---|
committer | Yahan Zhou <yahan@google.com> | 2022-05-17 12:47:33 -0700 |
commit | a707249b7241aaf7dc0c9c9415eb9837177f2ae9 (patch) | |
tree | d4b249755ca60ccb3db107e350acff1771fd9dfe /system/codecs/c2/decoders | |
parent | 2a566b8aa328d1856b3653c4c756e4858cbfe921 (diff) | |
download | goldfish-opengl-a707249b7241aaf7dc0c9c9415eb9837177f2ae9.tar.gz |
Rewrite RBO with shared pointer
There are tests that create stale RBO that could not be referenced by
RBO ID. The test does the following:
1. Bind FBO x
2. Bind RBO y to FBO x
3. Unbind FBO x
4. Delete RBO y
5. Create RBO z with the same ID as RBO y
7. Bind RBO z to FBO w
8. Draw something on FBO w (which should end up in RBO z)
9. Rebind FBO x, check its content (RBO y) is not modified
Previously we always use RBO ID to reference to an RBO. A FBO will hold
IDs to its RBO and looks up a global ID->RBO map to find the real RBO,
which results in situation when an RBO is stale and its ID got
overriden, the old FBO will refer to the new RBO instead of the old one.
In the above example, after step 5, FBO x will refer to RBO z instead of
RBO y, which fails the test.
We change the RBO implementation so that FBOs use smart pointers to
refer to RBOs.
Bug: 232014849
Test: dEQP-GLES2.functional.lifetime.attach.deleted_input#renderbuffer_framebuffer, org.skia.skqp.SkQPRunner#UnitTest_ES2BlendWithNoTexture
Merged-In: Ia99225f366e538adb290e19f9e0ac5e6b3cdc702
Change-Id: Ia99225f366e538adb290e19f9e0ac5e6b3cdc702
Diffstat (limited to 'system/codecs/c2/decoders')
0 files changed, 0 insertions, 0 deletions