| load("//bazel:flags.bzl", "bool_flag", "selects", "string_flag_with_values") |
| load("//bazel:skia_rules.bzl", "exports_files_legacy", "generate_cpp_files_for_headers", "select_multi", "skia_cc_deps", "skia_cc_library", "skia_filegroup", "split_srcs_and_hdrs") |
| |
| package( |
| default_applicable_licenses = ["//:license"], |
| ) |
| |
| licenses(["notice"]) |
| |
| exports_files_legacy() |
| |
| # In own group for exporting to //gn/gpu.gni:skia_shared_gpu_sources. |
| SHARED_FILES = [ |
| "AsyncReadTypes.h", |
| "AtlasTypes.cpp", |
| "AtlasTypes.h", |
| "Blend.cpp", |
| "Blend.h", |
| "BlendFormula.cpp", |
| "BlendFormula.h", |
| "BlurUtils.cpp", |
| "BlurUtils.h", |
| "BufferWriter.h", |
| "DataUtils.cpp", |
| "DataUtils.h", |
| "DitherUtils.cpp", |
| "DitherUtils.h", |
| "GpuRefCnt.h", |
| "GpuTypesPriv.h", |
| "KeyBuilder.h", |
| "MutableTextureStatePriv.h", |
| "MutableTextureState.cpp", |
| "PipelineUtils.cpp", |
| "PipelineUtils.h", |
| "Rectanizer.h", |
| "RectanizerPow2.cpp", |
| "RectanizerPow2.h", |
| "RectanizerSkyline.cpp", |
| "RectanizerSkyline.h", |
| "RefCntedCallback.h", |
| "ResourceKey.cpp", |
| "ResourceKey.h", |
| "SkBackingFit.cpp", |
| "SkBackingFit.h", |
| "Swizzle.cpp", |
| "Swizzle.h", |
| "SwizzlePriv.h", |
| "TiledTextureUtils.cpp", |
| "TiledTextureUtils.h", |
| ] |
| |
| split_srcs_and_hdrs( |
| name = "shared", |
| files = SHARED_FILES, |
| ) |
| |
| CORE_FILES = [ |
| "ShaderErrorHandler.cpp", |
| "SkRenderEngineAbortf.h", |
| ] |
| |
| split_srcs_and_hdrs( |
| name = "core", |
| files = CORE_FILES, |
| ) |
| |
| string_flag_with_values( |
| name = "gpu_backend", |
| multiple = True, |
| values = [ |
| "gl_ganesh", |
| "metal_ganesh", |
| "vulkan_ganesh", |
| "dawn_graphite", |
| "metal_graphite", |
| "vulkan_graphite", |
| ], |
| ) |
| |
| string_flag_with_values( |
| name = "with_gl_standard", |
| values = [ |
| "gles_standard", |
| "gl_standard", |
| "webgl_standard", |
| ], |
| ) |
| |
| selects.config_setting_group( |
| name = "has_ganesh_backend", |
| match_any = [ |
| ":gl_ganesh", |
| ":metal_ganesh", |
| ":vulkan_ganesh", |
| ], |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| selects.config_setting_group( |
| name = "has_graphite_backend", |
| match_any = [ |
| ":dawn_graphite", |
| ":metal_graphite", |
| ":vulkan_graphite", |
| ], |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| selects.config_setting_group( |
| name = "vulkan_with_vma", |
| match_all = [ |
| ":vulkan_ganesh", |
| ":use_vulkan_memory_allocator_true", |
| ], |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| bool_flag( |
| # Users should use :vulkan_with_vma directly |
| name = "use_vulkan_memory_allocator", |
| default = True, |
| ) |
| |
| bool_flag( |
| name = "enable_gpu_test_utils", |
| default = False, |
| ) |
| |
| selects.config_setting_group( |
| name = "has_dawn", |
| match_any = [ |
| ":dawn_graphite", |
| ], |
| ) |
| |
| selects.config_setting_group( |
| name = "has_metal", |
| match_any = [ |
| ":metal_ganesh", |
| ":metal_graphite", |
| ], |
| ) |
| |
| selects.config_setting_group( |
| name = "has_vulkan", |
| match_any = [ |
| ":vulkan_ganesh", |
| ":vulkan_graphite", |
| ], |
| ) |
| |
| skia_filegroup( |
| name = "srcs", |
| srcs = [ |
| ":core_srcs", |
| ":shared_srcs", |
| "//src/gpu/ganesh:srcs", |
| "//src/gpu/tessellate:srcs", |
| ] + select( |
| { |
| ":has_vulkan": ["//src/gpu/vk:srcs"], |
| "@platforms//os:android": ["//src/gpu/android:shared_android_srcs"], |
| "//conditions:default": [], |
| }, |
| ), |
| visibility = ["//src:__pkg__"], |
| ) |
| |
| skia_filegroup( |
| name = "objc_srcs", |
| srcs = [ |
| "//src/gpu/ganesh:objc_srcs", |
| "//src/gpu/mtl:shared_objc_srcs", |
| ], |
| visibility = ["//src:__pkg__"], |
| ) |
| |
| skia_filegroup( |
| name = "private_hdrs", |
| srcs = [ |
| ":core_hdrs", |
| ":shared_hdrs", |
| "//src/gpu/ganesh:private_hdrs", |
| "//src/gpu/tessellate:private_hdrs", |
| ] + select_multi( |
| { |
| ":has_vulkan": ["//src/gpu/vk:private_hdrs"], |
| ":has_metal": ["//src/gpu/mtl:private_hdrs"], |
| }, |
| ), |
| visibility = ["//src:__pkg__"], |
| ) |
| |
| skia_cc_deps( |
| name = "deps", |
| visibility = ["//src:__pkg__"], |
| deps = [ |
| "//src/gpu/ganesh:deps", |
| ] + select_multi( |
| { |
| ":has_vulkan": ["//src/gpu/vk:deps"], |
| }, |
| ), |
| ) |
| |
| skia_cc_library( |
| name = "gpu", |
| srcs = [ |
| ":core_srcs", |
| ":shared_srcs", |
| "//src/gpu/tessellate:private_hdrs", |
| "//src/gpu/tessellate:srcs", |
| "//src/utils:shader_utils_srcs", |
| ], |
| hdrs = [ |
| ":core_hdrs", |
| ":shared_hdrs", |
| "//include/gpu:shared_gpu_hdrs", |
| "//src/utils:shader_utils_hdrs", |
| ], |
| visibility = [ |
| "//src/gpu:__subpackages__", |
| "//src/sksl/codegen:__pkg__", |
| ], |
| deps = [ |
| "//:core", |
| "//src/base", |
| "//src/core:core_priv", |
| ], |
| ) |
| |
| generate_cpp_files_for_headers( |
| name = "headers_to_compile", |
| headers = [ |
| "AsyncReadTypes.h", |
| "BufferWriter.h", |
| "GpuRefCnt.h", |
| "GpuTypesPriv.h", |
| "KeyBuilder.h", |
| "MutableTextureStatePriv.h", |
| "SkRenderEngineAbortf.h", |
| "SwizzlePriv.h", |
| ], |
| ) |