1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/viz/test/test_types.h"
6 
7 #include "components/viz/test/buildflags.h"
8 
9 namespace viz {
10 
11 namespace {
12 
13 // Provides a test renderer suffix appropriate for |type|.
RendererTypeTestSuffix(RendererType type)14 const char* RendererTypeTestSuffix(RendererType type) {
15   switch (type) {
16     case RendererType::kGL:
17       return "GL";
18     case RendererType::kSkiaGL:
19       return "SkiaGL";
20     case RendererType::kSkiaVk:
21       return "SkiaVulkan";
22     case RendererType::kSkiaDawn:
23       return "SkiaDawn";
24     case RendererType::kSoftware:
25       return "Software";
26   }
27 }
28 
GetRendererTypes(bool include_software,bool include_dawn,bool skia_only)29 std::vector<RendererType> GetRendererTypes(bool include_software,
30                                            bool include_dawn,
31                                            bool skia_only) {
32   std::vector<RendererType> types;
33   if (include_software && !skia_only)
34     types.push_back(RendererType::kSoftware);
35 #if BUILDFLAG(ENABLE_GL_BACKEND_TESTS)
36   if (!skia_only)
37     types.push_back(RendererType::kGL);
38   types.push_back(RendererType::kSkiaGL);
39 #endif
40 #if BUILDFLAG(ENABLE_VULKAN_BACKEND_TESTS)
41   types.push_back(RendererType::kSkiaVk);
42 #endif
43 #if BUILDFLAG(ENABLE_DAWN_BACKEND_TESTS)
44   if (include_dawn)
45     types.push_back(RendererType::kSkiaDawn);
46 #endif
47   return types;
48 }
49 
50 }  // namespace
51 
PrintTo(RendererType type,std::ostream * os)52 void PrintTo(RendererType type, std::ostream* os) {
53   *os << RendererTypeTestSuffix(type);
54 }
55 
GetRendererTypes()56 std::vector<RendererType> GetRendererTypes() {
57   return GetRendererTypes(true, true, false);
58 }
59 
GetRendererTypesNoDawn()60 std::vector<RendererType> GetRendererTypesNoDawn() {
61   return GetRendererTypes(true, false, false);
62 }
63 
GetGpuRendererTypes()64 std::vector<RendererType> GetGpuRendererTypes() {
65   return GetRendererTypes(false, true, false);
66 }
67 
GetGpuRendererTypesNoDawn()68 std::vector<RendererType> GetGpuRendererTypesNoDawn() {
69   return GetRendererTypes(false, false, false);
70 }
71 
GetRendererTypesSkiaOnly()72 std::vector<RendererType> GetRendererTypesSkiaOnly() {
73   return GetRendererTypes(false, true, true);
74 }
75 
76 }  // namespace viz
77