# Copyright 2021 Google LLC
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Things are easiest for everyone if these source paths are absolute.
_src = get_path_info("../src/gpu/graphite", "abspath")
_include = get_path_info("../include/gpu/graphite", "abspath")
_include_private = get_path_info("../include/private/gpu/graphite", "abspath")

skia_graphite_public = [
  "$_include/BackendTexture.h",
  "$_include/Context.h",
  "$_include/ContextOptions.h",
  "$_include/GraphiteTypes.h",
  "$_include/ImageProvider.h",
  "$_include/Recorder.h",
  "$_include/Recording.h",
  "$_include/TextureInfo.h",
]

skia_graphite_sources = [
  "$_src/AttachmentTypes.h",
  "$_src/Attribute.h",
  "$_src/BackendTexture.cpp",
  "$_src/Buffer.cpp",
  "$_src/Buffer.h",
  "$_src/Caps.cpp",
  "$_src/Caps.h",
  "$_src/ClipStack.cpp",
  "$_src/ClipStack_graphite.h",
  "$_src/CommandBuffer.cpp",
  "$_src/CommandBuffer.h",
  "$_src/CommandTypes.h",
  "$_src/ComputePassTask.cpp",
  "$_src/ComputePassTask.h",
  "$_src/ComputePipeline.cpp",
  "$_src/ComputePipeline.h",
  "$_src/ComputeTypes.h",
  "$_src/Context.cpp",
  "$_src/ContextPriv.h",
  "$_src/ContextUtils.cpp",
  "$_src/ContextUtils.h",
  "$_src/CopyTask.cpp",
  "$_src/CopyTask.h",
  "$_src/Device.cpp",
  "$_src/Device.h",
  "$_src/DrawAtlas.cpp",
  "$_src/DrawAtlas.h",
  "$_src/DrawBufferManager.cpp",
  "$_src/DrawBufferManager.h",
  "$_src/DrawCommands.h",
  "$_src/DrawContext.cpp",
  "$_src/DrawContext.h",
  "$_src/DrawList.cpp",
  "$_src/DrawList.h",
  "$_src/DrawOrder.h",
  "$_src/DrawParams.h",
  "$_src/DrawPass.cpp",
  "$_src/DrawPass.h",
  "$_src/DrawTypes.h",
  "$_src/DrawWriter.cpp",
  "$_src/DrawWriter.h",
  "$_src/GlobalCache.cpp",
  "$_src/GlobalCache.h",
  "$_src/GpuWorkSubmission.cpp",
  "$_src/GpuWorkSubmission.h",
  "$_src/GraphicsPipeline.cpp",
  "$_src/GraphicsPipeline.h",
  "$_src/GraphicsPipelineDesc.h",
  "$_src/GraphiteResourceKey.cpp",
  "$_src/GraphiteResourceKey.h",
  "$_src/ImageUtils.cpp",
  "$_src/ImageUtils.h",
  "$_src/Image_Graphite.cpp",
  "$_src/Image_Graphite.h",
  "$_src/Log.h",
  "$_src/PaintParams.cpp",
  "$_src/PaintParams.h",
  "$_src/PipelineDataCache.h",
  "$_src/QueueManager.cpp",
  "$_src/QueueManager.h",
  "$_src/Recorder.cpp",
  "$_src/RecorderPriv.h",
  "$_src/Recording.cpp",
  "$_src/RecordingPriv.h",
  "$_src/RenderPassTask.cpp",
  "$_src/RenderPassTask.h",
  "$_src/Renderer.cpp",
  "$_src/Renderer.h",
  "$_src/RendererProvider.cpp",
  "$_src/RendererProvider.h",
  "$_src/Resource.cpp",
  "$_src/Resource.h",
  "$_src/ResourceCache.cpp",
  "$_src/ResourceCache.h",
  "$_src/ResourceProvider.cpp",
  "$_src/ResourceProvider.h",
  "$_src/ResourceTypes.h",
  "$_src/Sampler.cpp",
  "$_src/Sampler.h",
  "$_src/SharedContext.cpp",
  "$_src/SharedContext.h",
  "$_src/SpecialImage_Graphite.cpp",
  "$_src/Surface_Graphite.cpp",
  "$_src/Surface_Graphite.h",
  "$_src/SynchronizeToCpuTask.cpp",
  "$_src/SynchronizeToCpuTask.h",
  "$_src/Task.cpp",
  "$_src/Task.h",
  "$_src/TaskGraph.cpp",
  "$_src/TaskGraph.h",
  "$_src/Texture.cpp",
  "$_src/Texture.h",
  "$_src/TextureInfo.cpp",
  "$_src/TextureProxy.cpp",
  "$_src/TextureProxy.h",
  "$_src/TextureProxyView.h",
  "$_src/TextureUtils.cpp",
  "$_src/TextureUtils.h",
  "$_src/UniformManager.cpp",
  "$_src/UniformManager.h",
  "$_src/UploadBufferManager.cpp",
  "$_src/UploadBufferManager.h",
  "$_src/UploadTask.cpp",
  "$_src/UploadTask.h",
  "$_src/geom/BoundsManager.h",
  "$_src/geom/Geometry.h",
  "$_src/geom/IntersectionTree.cpp",
  "$_src/geom/IntersectionTree.h",
  "$_src/geom/Rect.h",
  "$_src/geom/Shape.cpp",
  "$_src/geom/Shape.h",
  "$_src/geom/SubRunData.h",
  "$_src/geom/Transform.cpp",
  "$_src/geom/Transform_graphite.h",
  "$_src/render/AnalyticRRectRenderStep.cpp",
  "$_src/render/AnalyticRRectRenderStep.h",
  "$_src/render/BitmapTextRenderStep.cpp",
  "$_src/render/BitmapTextRenderStep.h",
  "$_src/render/CommonDepthStencilSettings.h",
  "$_src/render/CoverBoundsRenderStep.cpp",
  "$_src/render/CoverBoundsRenderStep.h",
  "$_src/render/DynamicInstancesPatchAllocator.h",
  "$_src/render/MiddleOutFanRenderStep.cpp",
  "$_src/render/MiddleOutFanRenderStep.h",
  "$_src/render/SDFTextRenderStep.cpp",
  "$_src/render/SDFTextRenderStep.h",
  "$_src/render/TessellateCurvesRenderStep.cpp",
  "$_src/render/TessellateCurvesRenderStep.h",
  "$_src/render/TessellateStrokesRenderStep.cpp",
  "$_src/render/TessellateStrokesRenderStep.h",
  "$_src/render/TessellateWedgesRenderStep.cpp",
  "$_src/render/TessellateWedgesRenderStep.h",
  "$_src/render/VerticesRenderStep.cpp",
  "$_src/render/VerticesRenderStep.h",
  "$_src/text/AtlasManager.cpp",
  "$_src/text/AtlasManager.h",
]

skia_graphite_mtl_sources = [
  "$_include/mtl/MtlBackendContext.h",
  "$_include/mtl/MtlTypes.h",
  "$_include_private/MtlTypesPriv.h",
  "$_src/mtl/MtlBlitCommandEncoder.h",
  "$_src/mtl/MtlBuffer.h",
  "$_src/mtl/MtlBuffer.mm",
  "$_src/mtl/MtlCaps.h",
  "$_src/mtl/MtlCaps.mm",
  "$_src/mtl/MtlCommandBuffer.h",
  "$_src/mtl/MtlCommandBuffer.mm",
  "$_src/mtl/MtlComputeCommandEncoder.h",
  "$_src/mtl/MtlComputePipeline.h",
  "$_src/mtl/MtlComputePipeline.mm",
  "$_src/mtl/MtlGraphicsPipeline.h",
  "$_src/mtl/MtlGraphicsPipeline.mm",
  "$_src/mtl/MtlQueueManager.h",
  "$_src/mtl/MtlQueueManager.mm",
  "$_src/mtl/MtlRenderCommandEncoder.h",
  "$_src/mtl/MtlResourceProvider.h",
  "$_src/mtl/MtlResourceProvider.mm",
  "$_src/mtl/MtlSampler.h",
  "$_src/mtl/MtlSampler.mm",
  "$_src/mtl/MtlSharedContext.h",
  "$_src/mtl/MtlSharedContext.mm",
  "$_src/mtl/MtlTexture.h",
  "$_src/mtl/MtlTexture.mm",
  "$_src/mtl/MtlTrampoline.h",
  "$_src/mtl/MtlTrampoline.mm",
  "$_src/mtl/MtlTypesPriv.mm",
  "$_src/mtl/MtlUtils.h",
  "$_src/mtl/MtlUtils.mm",
]

skia_graphite_vk_sources = [
  "$_include/vk/VulkanGraphiteTypes.h",
  "$_include_private/VulkanGraphiteTypesPriv.h",
  "$_src/vk/VulkanCaps.cpp",
  "$_src/vk/VulkanCaps.h",
  "$_src/vk/VulkanGraphiteTypes.cpp",
  "$_src/vk/VulkanResourceProvider.cpp",
  "$_src/vk/VulkanResourceProvider.h",
  "$_src/vk/VulkanSharedContext.cpp",
  "$_src/vk/VulkanSharedContext.h",
]

skia_graphite_piet_sources = [
  "$_src/PietRenderTask.cpp",
  "$_src/PietRenderTask.h",
]
