blob: 9915e1c9178fc9310cc3f784f4a5106859712978 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file defines all the public base::FeatureList features for the gpu
// module.
#ifndef GPU_CONFIG_GPU_FINCH_FEATURES_H_
#define GPU_CONFIG_GPU_FINCH_FEATURES_H_
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "build/build_config.h"
#include "gpu/gpu_export.h"
namespace base {
class CommandLine;
} // namespace base
namespace features {
GPU_EXPORT BASE_DECLARE_FEATURE(kUseGles2ForOopR);
// All features in alphabetical order. The features should be documented
// alongside the definition of their values in the .cc file.
#if BUILDFLAG(IS_ANDROID)
GPU_EXPORT BASE_DECLARE_FEATURE(kAndroidSurfaceControl);
GPU_EXPORT BASE_DECLARE_FEATURE(kEnableGpuMemoryBufferImplAHB);
GPU_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControl);
GPU_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControlForTV);
GPU_EXPORT BASE_DECLARE_FEATURE(kAImageReader);
GPU_EXPORT BASE_DECLARE_FEATURE(kLimitAImageReaderMaxSizeToOne);
GPU_EXPORT BASE_DECLARE_FEATURE(kWebViewThreadSafeMediaDefault);
GPU_EXPORT BASE_DECLARE_FEATURE(kIncreaseBufferCountForHighFrameRate);
#endif // BUILDFLAG(IS_ANDROID)
GPU_EXPORT BASE_DECLARE_FEATURE(kDefaultEnableGpuRasterization);
#if !BUILDFLAG(IS_ANDROID)
GPU_EXPORT BASE_DECLARE_FEATURE(kCanvasOopRasterization);
#endif
GPU_EXPORT BASE_DECLARE_FEATURE(kCanvasOopWithoutGpuTileRaster);
GPU_EXPORT BASE_DECLARE_FEATURE(kEnableMSAAOnNewIntelGPUs);
GPU_EXPORT BASE_DECLARE_FEATURE(kDawnSIRepsUseClientProvidedInternalUsages);
#if BUILDFLAG(IS_WIN)
GPU_EXPORT BASE_DECLARE_FEATURE(kDisableVideoOverlayIfMoving);
GPU_EXPORT BASE_DECLARE_FEATURE(kNoUndamagedOverlayPromotion);
#endif
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_IOS)
GPU_EXPORT BASE_DECLARE_FEATURE(kAdjustGpuProcessPriority);
#endif
GPU_EXPORT BASE_DECLARE_FEATURE(kClearGrShaderDiskCacheOnInvalidPrefix);
GPU_EXPORT BASE_DECLARE_FEATURE(kVaapiJpegImageDecodeAcceleration);
GPU_EXPORT BASE_DECLARE_FEATURE(kVaapiWebPImageDecodeAcceleration);
GPU_EXPORT BASE_DECLARE_FEATURE(kVulkan);
GPU_EXPORT BASE_DECLARE_FEATURE(kSkiaGraphite);
GPU_EXPORT extern const base::FeatureParam<bool>
kSkiaGraphiteDawnSkipValidation;
GPU_EXPORT extern const base::FeatureParam<bool>
kSkiaGraphiteDawnBackendValidation;
#if BUILDFLAG(IS_WIN)
GPU_EXPORT BASE_DECLARE_FEATURE(kSkiaGraphiteDawnUseD3D12);
#endif
GPU_EXPORT BASE_DECLARE_FEATURE(kConditionallySkipGpuChannelFlush);
GPU_EXPORT BASE_DECLARE_FEATURE(kEnableWatchdogReportOnlyModeOnGpuInit);
GPU_EXPORT BASE_DECLARE_FEATURE(kEnableVkPipelineCache);
GPU_EXPORT BASE_DECLARE_FEATURE(kNoDiscardableMemoryForGpuDecodePath);
GPU_EXPORT BASE_DECLARE_FEATURE(kEnableDrDc);
GPU_EXPORT BASE_DECLARE_FEATURE(kPruneOldTransferCacheEntries);
GPU_EXPORT BASE_DECLARE_FEATURE(kUseGpuSchedulerDfs);
#if BUILDFLAG(IS_ANDROID)
// This flag is use additionally with kEnableDrDc to enable the feature for
// vulkan enabled android devices.
GPU_EXPORT BASE_DECLARE_FEATURE(kEnableDrDcVulkan);
#endif // BUILDFLAG(IS_ANDROID)
GPU_EXPORT BASE_DECLARE_FEATURE(kWebGPUService);
GPU_EXPORT BASE_DECLARE_FEATURE(kWebGPUBlobCache);
GPU_EXPORT BASE_DECLARE_FEATURE(kWebGPUUseDXC);
GPU_EXPORT BASE_DECLARE_FEATURE(kWebGPUUseTintIR);
GPU_EXPORT extern const base::FeatureParam<std::string> kWebGPUUnsafeFeatures;
GPU_EXPORT extern const base::FeatureParam<std::string> kWGSLUnsafeFeatures;
GPU_EXPORT BASE_DECLARE_FEATURE(kIncreasedCmdBufferParseSlice);
GPU_EXPORT BASE_DECLARE_FEATURE(kDeferredOverlaysRelease);
#if BUILDFLAG(IS_WIN)
GPU_EXPORT BASE_DECLARE_FEATURE(kD3DBackingUploadWithUpdateSubresource);
#endif
GPU_EXPORT BASE_DECLARE_FEATURE(kHandleOverlaysSwapFailure);
GPU_EXPORT bool UseGles2ForOopR();
GPU_EXPORT bool IsUsingVulkan();
GPU_EXPORT bool IsDrDcEnabled();
GPU_EXPORT bool NeedThreadSafeAndroidMedia();
GPU_EXPORT bool IsSkiaGraphiteEnabled(const base::CommandLine* command_line);
GPU_EXPORT bool EnablePurgeGpuImageDecodeCache();
GPU_EXPORT bool EnablePruneOldTransferCacheEntries();
GPU_EXPORT bool IsCanvasOopRasterizationEnabled();
#if BUILDFLAG(IS_ANDROID)
GPU_EXPORT bool IsAImageReaderEnabled();
GPU_EXPORT bool IsAndroidSurfaceControlEnabled();
GPU_EXPORT bool LimitAImageReaderMaxSizeToOne();
GPU_EXPORT bool IncreaseBufferCountForHighFrameRate();
GPU_EXPORT bool IncreaseBufferCountForWebViewOverlays();
#endif
// Don't directly check this flag. Instead, please call
// IsSyncPointGraphValidationEnabled().
GPU_EXPORT BASE_DECLARE_FEATURE(kSyncPointGraphValidation);
GPU_EXPORT bool IsSyncPointGraphValidationEnabled();
} // namespace features
#endif // GPU_CONFIG_GPU_FINCH_FEATURES_H_