Path: blob/main_old/src/tests/test_utils/angle_test_configs.h
1693 views
//1// Copyright 2014 The ANGLE Project Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4//56#ifndef ANGLE_TEST_CONFIGS_H_7#define ANGLE_TEST_CONFIGS_H_89// On Linux EGL/egl.h includes X.h which does defines for some very common10// names that are used by gtest (like None and Bool) and causes a lot of11// compilation errors. To work around this, even if this file doesn't use it,12// we include gtest before EGL so that it compiles fine in other files that13// want to use gtest.14#include <gtest/gtest.h>1516#include <EGL/egl.h>17#include <EGL/eglext.h>1819#include "angle_test_instantiate.h"20#include "util/EGLPlatformParameters.h"2122namespace angle23{2425struct PlatformParameters26{27PlatformParameters();28PlatformParameters(EGLint majorVersion,29EGLint minorVersion,30const EGLPlatformParameters &eglPlatformParameters);31PlatformParameters(EGLint majorVersion, EGLint minorVersion, GLESDriverType driver);3233EGLint getRenderer() const;34EGLint getDeviceType() const;35bool isSwiftshader() const;36EGLint getAllocateNonZeroMemoryFeature() const;3738void initDefaultParameters();3940auto tie() const41{42return std::tie(driver, noFixture, eglParameters, majorVersion, minorVersion);43}4445GLESDriverType driver;46bool noFixture;47EGLPlatformParameters eglParameters;48EGLint majorVersion;49EGLint minorVersion;50};5152const char *GetRendererName(EGLint renderer);5354bool operator<(const PlatformParameters &a, const PlatformParameters &b);55bool operator==(const PlatformParameters &a, const PlatformParameters &b);56std::ostream &operator<<(std::ostream &stream, const PlatformParameters &pp);5758// EGL platforms59namespace egl_platform60{6162EGLPlatformParameters DEFAULT();63EGLPlatformParameters DEFAULT_NULL();6465EGLPlatformParameters D3D9();66EGLPlatformParameters D3D9_NULL();67EGLPlatformParameters D3D9_REFERENCE();6869EGLPlatformParameters D3D11();70EGLPlatformParameters D3D11_PRESENT_PATH_FAST();71EGLPlatformParameters D3D11_FL11_1();72EGLPlatformParameters D3D11_FL11_0();73EGLPlatformParameters D3D11_FL10_1();74EGLPlatformParameters D3D11_FL10_0();75EGLPlatformParameters D3D11_FL9_3();7677EGLPlatformParameters D3D11_NULL();7879EGLPlatformParameters D3D11_WARP();80EGLPlatformParameters D3D11_FL11_1_WARP();81EGLPlatformParameters D3D11_FL11_0_WARP();82EGLPlatformParameters D3D11_FL10_1_WARP();83EGLPlatformParameters D3D11_FL10_0_WARP();84EGLPlatformParameters D3D11_FL9_3_WARP();8586EGLPlatformParameters D3D11_REFERENCE();87EGLPlatformParameters D3D11_FL11_1_REFERENCE();88EGLPlatformParameters D3D11_FL11_0_REFERENCE();89EGLPlatformParameters D3D11_FL10_1_REFERENCE();90EGLPlatformParameters D3D11_FL10_0_REFERENCE();91EGLPlatformParameters D3D11_FL9_3_REFERENCE();9293EGLPlatformParameters OPENGL();94EGLPlatformParameters OPENGL(EGLint major, EGLint minor);95EGLPlatformParameters OPENGL_NULL();9697EGLPlatformParameters OPENGLES();98EGLPlatformParameters OPENGLES(EGLint major, EGLint minor);99EGLPlatformParameters OPENGLES_NULL();100101EGLPlatformParameters OPENGL_OR_GLES();102EGLPlatformParameters OPENGL_OR_GLES(EGLint major, EGLint minor);103EGLPlatformParameters OPENGL_OR_GLES_NULL();104105EGLPlatformParameters VULKAN();106EGLPlatformParameters VULKAN_NULL();107EGLPlatformParameters VULKAN_SWIFTSHADER();108109} // namespace egl_platform110111// ANGLE tests platforms112PlatformParameters ES1_D3D9();113PlatformParameters ES2_D3D9();114115PlatformParameters ES1_D3D11();116PlatformParameters ES2_D3D11();117PlatformParameters ES2_D3D11_PRESENT_PATH_FAST();118PlatformParameters ES2_D3D11_FL11_0();119PlatformParameters ES2_D3D11_FL10_1();120PlatformParameters ES2_D3D11_FL10_0();121PlatformParameters ES2_D3D11_FL9_3();122123PlatformParameters ES2_D3D11_WARP();124PlatformParameters ES2_D3D11_FL11_0_WARP();125PlatformParameters ES2_D3D11_FL10_1_WARP();126PlatformParameters ES2_D3D11_FL10_0_WARP();127PlatformParameters ES2_D3D11_FL9_3_WARP();128129PlatformParameters ES2_D3D11_REFERENCE();130PlatformParameters ES2_D3D11_FL11_0_REFERENCE();131PlatformParameters ES2_D3D11_FL10_1_REFERENCE();132PlatformParameters ES2_D3D11_FL10_0_REFERENCE();133PlatformParameters ES2_D3D11_FL9_3_REFERENCE();134135PlatformParameters ES3_D3D11();136PlatformParameters ES3_D3D11_FL11_1();137PlatformParameters ES3_D3D11_FL11_0();138PlatformParameters ES3_D3D11_FL10_1();139PlatformParameters ES31_D3D11();140PlatformParameters ES31_D3D11_FL11_1();141PlatformParameters ES31_D3D11_FL11_0();142143PlatformParameters ES3_D3D11_WARP();144PlatformParameters ES3_D3D11_FL11_1_WARP();145PlatformParameters ES3_D3D11_FL11_0_WARP();146PlatformParameters ES3_D3D11_FL10_1_WARP();147148PlatformParameters ES1_OPENGL();149PlatformParameters ES2_OPENGL();150PlatformParameters ES2_OPENGL(EGLint major, EGLint minor);151PlatformParameters ES3_OPENGL();152PlatformParameters ES3_OPENGL(EGLint major, EGLint minor);153PlatformParameters ES31_OPENGL();154PlatformParameters ES31_OPENGL(EGLint major, EGLint minor);155156PlatformParameters ES1_OPENGLES();157PlatformParameters ES2_OPENGLES();158PlatformParameters ES2_OPENGLES(EGLint major, EGLint minor);159PlatformParameters ES3_OPENGLES();160PlatformParameters ES3_OPENGLES(EGLint major, EGLint minor);161PlatformParameters ES31_OPENGLES();162PlatformParameters ES31_OPENGLES(EGLint major, EGLint minor);163164PlatformParameters ES1_NULL();165PlatformParameters ES2_NULL();166PlatformParameters ES3_NULL();167PlatformParameters ES31_NULL();168169PlatformParameters ES1_VULKAN();170PlatformParameters ES1_VULKAN_NULL();171PlatformParameters ES1_VULKAN_SWIFTSHADER();172PlatformParameters ES2_VULKAN();173PlatformParameters ES2_VULKAN_NULL();174PlatformParameters ES2_VULKAN_SWIFTSHADER();175PlatformParameters ES3_VULKAN();176PlatformParameters ES3_VULKAN_NULL();177PlatformParameters ES3_VULKAN_SWIFTSHADER();178PlatformParameters ES31_VULKAN();179PlatformParameters ES31_VULKAN_NULL();180PlatformParameters ES31_VULKAN_SWIFTSHADER();181PlatformParameters ES32_VULKAN();182PlatformParameters ES32_VULKAN_NULL();183PlatformParameters ES32_VULKAN_SWIFTSHADER();184185PlatformParameters ES1_METAL();186PlatformParameters ES2_METAL();187PlatformParameters ES3_METAL();188189PlatformParameters ES2_WGL();190PlatformParameters ES3_WGL();191192PlatformParameters ES2_EGL();193PlatformParameters ES3_EGL();194195const char *GetNativeEGLLibraryNameWithExtension();196197inline PlatformParameters WithNoVirtualContexts(const PlatformParameters ¶ms)198{199PlatformParameters withNoVirtualContexts = params;200withNoVirtualContexts.eglParameters.contextVirtualization = EGL_FALSE;201return withNoVirtualContexts;202}203204inline PlatformParameters WithNoFixture(const PlatformParameters ¶ms)205{206PlatformParameters withNoFixture = params;207withNoFixture.noFixture = true;208return withNoFixture;209}210211inline PlatformParameters WithNoTransformFeedback(const PlatformParameters ¶ms)212{213PlatformParameters withNoTransformFeedback = params;214withNoTransformFeedback.eglParameters.transformFeedbackFeature = EGL_FALSE;215return withNoTransformFeedback;216}217218inline PlatformParameters WithAllocateNonZeroMemory(const PlatformParameters ¶ms)219{220PlatformParameters allocateNonZero = params;221allocateNonZero.eglParameters.allocateNonZeroMemoryFeature = EGL_TRUE;222return allocateNonZero;223}224225inline PlatformParameters WithEmulateCopyTexImage2DFromRenderbuffers(226const PlatformParameters ¶ms)227{228PlatformParameters p = params;229p.eglParameters.emulateCopyTexImage2DFromRenderbuffers = EGL_TRUE;230return p;231}232233inline PlatformParameters WithNoShaderStencilOutput(const PlatformParameters ¶ms)234{235PlatformParameters re = params;236re.eglParameters.shaderStencilOutputFeature = EGL_FALSE;237return re;238}239240inline PlatformParameters WithNoGenMultipleMipsPerPass(const PlatformParameters ¶ms)241{242PlatformParameters re = params;243re.eglParameters.genMultipleMipsPerPassFeature = EGL_FALSE;244return re;245}246247inline PlatformParameters WithMetalMemoryBarrierAndCheapRenderPass(const PlatformParameters ¶ms,248bool hasBarrier,249bool cheapRenderPass)250{251PlatformParameters re = params;252re.eglParameters.hasExplicitMemBarrierFeatureMtl = hasBarrier ? EGL_TRUE : EGL_FALSE;253re.eglParameters.hasCheapRenderPassFeatureMtl = cheapRenderPass ? EGL_TRUE : EGL_FALSE;254return re;255}256257inline PlatformParameters WithMetalForcedBufferGPUStorage(const PlatformParameters ¶ms)258{259PlatformParameters re = params;260re.eglParameters.forceBufferGPUStorageFeatureMtl = EGL_TRUE;261return re;262}263264inline PlatformParameters WithRobustness(const PlatformParameters ¶ms)265{266PlatformParameters withRobustness = params;267withRobustness.eglParameters.robustness = EGL_TRUE;268return withRobustness;269}270271inline PlatformParameters WithEmulatedPrerotation(const PlatformParameters ¶ms, EGLint rotation)272{273PlatformParameters prerotation = params;274prerotation.eglParameters.emulatedPrerotation = rotation;275return prerotation;276}277278inline PlatformParameters WithAsyncCommandQueueFeatureVulkan(const PlatformParameters ¶ms)279{280PlatformParameters withAsyncCommandQueue = params;281withAsyncCommandQueue.eglParameters.asyncCommandQueueFeatureVulkan = EGL_TRUE;282return withAsyncCommandQueue;283}284285inline PlatformParameters WithNoVulkanViewportFlip(const PlatformParameters ¶ms)286{287PlatformParameters withoutVulkanViewportFlip = params;288withoutVulkanViewportFlip.eglParameters.supportsVulkanViewportFlip = EGL_FALSE;289return withoutVulkanViewportFlip;290}291292inline PlatformParameters WithEmulatedVAOs(const PlatformParameters ¶ms)293{294PlatformParameters emualtedVAOParams = params;295emualtedVAOParams.eglParameters.emulatedVAOs = EGL_TRUE;296return emualtedVAOParams;297}298299inline PlatformParameters WithDirectSPIRVGeneration(const PlatformParameters ¶ms)300{301PlatformParameters directSPIRVGeneration = params;302directSPIRVGeneration.eglParameters.directSPIRVGeneration = EGL_TRUE;303return directSPIRVGeneration;304}305306inline PlatformParameters WithDirectMetalGeneration(const PlatformParameters ¶ms)307{308PlatformParameters directMetalGeneration = params;309directMetalGeneration.eglParameters.directMetalGeneration = EGL_TRUE;310return directMetalGeneration;311}312313inline PlatformParameters WithInitShaderVariables(const PlatformParameters ¶ms)314{315PlatformParameters initShaderVariables = params;316initShaderVariables.eglParameters.forceInitShaderVariables = EGL_TRUE;317return initShaderVariables;318}319} // namespace angle320321#endif // ANGLE_TEST_CONFIGS_H_322323324