xref: /aosp_15_r20/frameworks/base/libs/hwui/renderthread/RenderEffectCapabilityQuery.h (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker /*
2*d57664e9SAndroid Build Coastguard Worker  * Copyright (C) 2021 The Android Open Source Project
3*d57664e9SAndroid Build Coastguard Worker  *
4*d57664e9SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*d57664e9SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*d57664e9SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*d57664e9SAndroid Build Coastguard Worker  *
8*d57664e9SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*d57664e9SAndroid Build Coastguard Worker  *
10*d57664e9SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*d57664e9SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*d57664e9SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*d57664e9SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*d57664e9SAndroid Build Coastguard Worker  * limitations under the License.
15*d57664e9SAndroid Build Coastguard Worker  */
16*d57664e9SAndroid Build Coastguard Worker 
17*d57664e9SAndroid Build Coastguard Worker #pragma once
18*d57664e9SAndroid Build Coastguard Worker 
19*d57664e9SAndroid Build Coastguard Worker /**
20*d57664e9SAndroid Build Coastguard Worker  * Verify if the provided vendor and version supports RenderEffect caching
21*d57664e9SAndroid Build Coastguard Worker  * behavior.
22*d57664e9SAndroid Build Coastguard Worker  *
23*d57664e9SAndroid Build Coastguard Worker  * Certain Open GL Driver implementations run into blocking scenarios
24*d57664e9SAndroid Build Coastguard Worker  * with Fence::waitForever without a corresponding signal to unblock
25*d57664e9SAndroid Build Coastguard Worker  * This happens during attempts to cache SkImage instances across frames
26*d57664e9SAndroid Build Coastguard Worker  * especially in circumstances using RenderEffect/SkImageFilter internally.
27*d57664e9SAndroid Build Coastguard Worker  * So detect the corresponding GL Vendor and driver version to determine if
28*d57664e9SAndroid Build Coastguard Worker  * caching SkImage instances across frames is supported.
29*d57664e9SAndroid Build Coastguard Worker  * See b/197263715 & b/193145089
30*d57664e9SAndroid Build Coastguard Worker  * @param vendor Vendor of the GL driver
31*d57664e9SAndroid Build Coastguard Worker  * @param version Version of the GL driver from the given vendor
32*d57664e9SAndroid Build Coastguard Worker  * @return True if a RenderEffect result can be cached across frames,
33*d57664e9SAndroid Build Coastguard Worker  * false otherwise
34*d57664e9SAndroid Build Coastguard Worker  */
35*d57664e9SAndroid Build Coastguard Worker bool supportsRenderEffectCache(const char* vendor, const char* version);
36