typedef struct gr_context_t gr_context_t;
+typedef enum {
+ NONE_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 0,
+ DASHLINE_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 0,
+ STENCIL_AND_COVER_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 1,
+ MSAA_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 2,
+ AA_HAIRLINE_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 3,
+ AA_CONVEX_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 4,
+ AA_LINEARIZING_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 5,
+ PLS_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 6,
+ DISTANCE_FIELD_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 7,
+ TESSELLATING_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 8,
+ DEFAULT_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 9,
+
+ ALL_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = DEFAULT_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS | (DEFAULT_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS - 1)
+} gr_contextoptions_gpupathrenderers_t;
+
typedef struct {
bool fSuppressPrints;
int fMaxTextureSizeOverride;
int fBufferMapThreshold;
bool fUseDrawInsteadOfPartialRenderTargetWrite;
bool fImmediateMode;
- bool fClipBatchToBounds;
- bool fDrawBatchBounds;
- int fMaxBatchLookback;
- int fMaxBatchLookahead;
+ bool fClipDrawOpsToBounds;
+ int fMaxOpCombineLookback;
+ int fMaxOpCombineLookahead;
bool fUseShaderSwizzling;
bool fDoManualMipmapping;
+ bool fEnableInstancedRendering;
+ bool fAllowPathMaskCaching;
+ bool fRequireDecodeDisableForSRGB;
+ bool fDisableGpuYUVConversion;
+ bool fSuppressPathRendering;
+ gr_contextoptions_gpupathrenderers_t fGpuPathRenderers;
} gr_context_options_t;
typedef enum {
#include "SkBitmapScaler.h"
#include "SkBlurMaskFilter.h"
+#if SK_SUPPORT_GPU
+#include "GrContextOptions.h"
+#endif
+
#if __cplusplus >= 199711L
#define STRINGIFY(x) #x
// sk_surfaceprops_flags_t
static_assert ((int)SkSurfaceProps::Flags::kUseDeviceIndependentFonts_Flag == (int)USE_DEVICE_INDEPENDENT_FONTS_GR_SURFACE_PROPS_FLAGS, ASSERT_MSG(SkSurfaceProps::Flags, sk_surfaceprops_flags_t));
-// gr_surfaceorigin_t
-static_assert ((int)GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin == (int)BOTTOM_LEFT_GR_SURFACE_ORIGIN, ASSERT_MSG(GrSurfaceOrigin, gr_surfaceorigin_t));
-static_assert ((int)GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin == (int)TOP_LEFT_GR_SURFACE_ORIGIN, ASSERT_MSG(GrSurfaceOrigin, gr_surfaceorigin_t));
-
-// gr_pixelconfig_t
-static_assert ((int)GrPixelConfig::kUnknown_GrPixelConfig == (int)UNKNOWN_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kAlpha_8_GrPixelConfig == (int)ALPHA_8_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kGray_8_GrPixelConfig == (int)GRAY_8_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kRGB_565_GrPixelConfig == (int)RGB_565_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kRGBA_4444_GrPixelConfig == (int)RGBA_4444_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kRGBA_8888_GrPixelConfig == (int)RGBA_8888_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kBGRA_8888_GrPixelConfig == (int)BGRA_8888_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kSRGBA_8888_GrPixelConfig == (int)SRGBA_8888_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kSBGRA_8888_GrPixelConfig == (int)SBGRA_8888_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kRGBA_8888_sint_GrPixelConfig == (int)RGBA_8888_SINT_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kETC1_GrPixelConfig == (int)ETC1_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kRGBA_float_GrPixelConfig == (int)RGBA_FLOAT_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kRG_float_GrPixelConfig == (int)RG_FLOAT_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kAlpha_half_GrPixelConfig == (int)ALPHA_HALF_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-static_assert ((int)GrPixelConfig::kRGBA_half_GrPixelConfig == (int)RGBA_HALF_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
-
-// gr_backendtexture_flags_t
-static_assert ((int)GrBackendTextureFlags::kNone_GrBackendTextureFlag == (int)NONE_GR_BACKEND_TEXTURE_FLAGS, ASSERT_MSG(GrBackendTextureFlags, gr_backendtexture_flags_t));
-static_assert ((int)GrBackendTextureFlags::kRenderTarget_GrBackendTextureFlag == (int)RENDER_TARGET_GR_BACKEND_TEXTURE_FLAGS, ASSERT_MSG(GrBackendTextureFlags, gr_backendtexture_flags_t));
-
-// gr_backend_t
-static_assert ((int)GrBackend::kOpenGL_GrBackend == (int)OPENGL_GR_BACKEND, ASSERT_MSG(GrBackend, gr_backend_t));
-static_assert ((int)GrBackend::kVulkan_GrBackend == (int)VULKAN_GR_BACKEND, ASSERT_MSG(GrBackend, gr_backend_t));
-
// sk_bitmapscaler_resizemethod_t
static_assert ((int)SkBitmapScaler::ResizeMethod::RESIZE_BOX == (int)BOX_SK_BITMAP_SCALER_RESIZE_METHOD, ASSERT_MSG(SkBitmapScaler::ResizeMethod, sk_bitmapscaler_resizemethod_t));
static_assert ((int)SkBitmapScaler::ResizeMethod::RESIZE_TRIANGLE == (int)TRIANGLE_SK_BITMAP_SCALER_RESIZE_METHOD, ASSERT_MSG(SkBitmapScaler::ResizeMethod, sk_bitmapscaler_resizemethod_t));
static_assert ((int)SkImage::CachingHint::kAllow_CachingHint == (int)ALLOW_SK_IMAGE_CACHING_HINT, ASSERT_MSG(SkImage::CachingHint, sk_image_caching_hint_t));
static_assert ((int)SkImage::CachingHint::kDisallow_CachingHint == (int)DISALLOW_SK_IMAGE_CACHING_HINT, ASSERT_MSG(SkImage::CachingHint, sk_image_caching_hint_t));
+#if SK_SUPPORT_GPU
+
+// gr_surfaceorigin_t
+static_assert ((int)GrSurfaceOrigin::kBottomLeft_GrSurfaceOrigin == (int)BOTTOM_LEFT_GR_SURFACE_ORIGIN, ASSERT_MSG(GrSurfaceOrigin, gr_surfaceorigin_t));
+static_assert ((int)GrSurfaceOrigin::kTopLeft_GrSurfaceOrigin == (int)TOP_LEFT_GR_SURFACE_ORIGIN, ASSERT_MSG(GrSurfaceOrigin, gr_surfaceorigin_t));
+
+// gr_pixelconfig_t
+static_assert ((int)GrPixelConfig::kUnknown_GrPixelConfig == (int)UNKNOWN_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kAlpha_8_GrPixelConfig == (int)ALPHA_8_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kGray_8_GrPixelConfig == (int)GRAY_8_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kRGB_565_GrPixelConfig == (int)RGB_565_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kRGBA_4444_GrPixelConfig == (int)RGBA_4444_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kRGBA_8888_GrPixelConfig == (int)RGBA_8888_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kBGRA_8888_GrPixelConfig == (int)BGRA_8888_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kSRGBA_8888_GrPixelConfig == (int)SRGBA_8888_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kSBGRA_8888_GrPixelConfig == (int)SBGRA_8888_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kRGBA_8888_sint_GrPixelConfig == (int)RGBA_8888_SINT_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kETC1_GrPixelConfig == (int)ETC1_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kRGBA_float_GrPixelConfig == (int)RGBA_FLOAT_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kRG_float_GrPixelConfig == (int)RG_FLOAT_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kAlpha_half_GrPixelConfig == (int)ALPHA_HALF_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+static_assert ((int)GrPixelConfig::kRGBA_half_GrPixelConfig == (int)RGBA_HALF_GR_PIXEL_CONFIG, ASSERT_MSG(GrPixelConfig, gr_pixelconfig_t));
+
+// gr_backendtexture_flags_t
+static_assert ((int)GrBackendTextureFlags::kNone_GrBackendTextureFlag == (int)NONE_GR_BACKEND_TEXTURE_FLAGS, ASSERT_MSG(GrBackendTextureFlags, gr_backendtexture_flags_t));
+static_assert ((int)GrBackendTextureFlags::kRenderTarget_GrBackendTextureFlag == (int)RENDER_TARGET_GR_BACKEND_TEXTURE_FLAGS, ASSERT_MSG(GrBackendTextureFlags, gr_backendtexture_flags_t));
+
+// gr_backend_t
+static_assert ((int)GrBackend::kOpenGL_GrBackend == (int)OPENGL_GR_BACKEND, ASSERT_MSG(GrBackend, gr_backend_t));
+static_assert ((int)GrBackend::kVulkan_GrBackend == (int)VULKAN_GR_BACKEND, ASSERT_MSG(GrBackend, gr_backend_t));
+
+// gr_contextoptions_gpupathrenderers_t
+static_assert ((int)GrContextOptions::GpuPathRenderers::kNone == (int)NONE_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kDashLine == (int)DASHLINE_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kStencilAndCover == (int)STENCIL_AND_COVER_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kMSAA == (int)MSAA_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kAAHairline == (int)AA_HAIRLINE_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kAAConvex == (int)AA_CONVEX_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kAALinearizing == (int)AA_LINEARIZING_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kPLS == (int)PLS_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kDistanceField == (int)DISTANCE_FIELD_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kTessellating == (int)TESSELLATING_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kDefault == (int)DEFAULT_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+static_assert ((int)GrContextOptions::GpuPathRenderers::kAll == (int)ALL_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS, ASSERT_MSG(GrContextOptions::GpuPathRenderers, gr_contextoptions_gpupathrenderers_t));
+
+#endif
+
#endif
--- /dev/null
+/*
+ * Copyright 2017 Xamarin Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "sk_types_priv.h"
+
+#include "SkImageInfo.h"
+#include "SkSurfaceProps.h"
+#include "SkPoint.h"
+#include "SkRect.h"
+#include "SkPoint3.h"
+#include "SkSize.h"
+#include "SkPaint.h"
+#include "SkCodec.h"
+#include "SkMask.h"
+#include "SkCanvas.h"
+#include "SkTime.h"
+#include "SkDocument.h"
+#include "SkEncodedInfo.h"
+
+#if SK_SUPPORT_GPU
+#include "GrTypes.h"
+#include "GrContextOptions.h"
+#endif
+
+#if __cplusplus >= 199711L
+
+#define STRINGIFY(x) #x
+#define TOSTRING(x) STRINGIFY(x)
+#define ASSERT_MSG(SK, C) "ABI changed, you must update the C structure for " TOSTRING(#SK) " to " TOSTRING(#C) "."
+
+// custom mappings:
+// - sk_imageinfo_t
+// - sk_surfaceprops_t
+// - sk_matrix_t
+// - sk_document_pdf_metadata_t
+
+static_assert (sizeof (sk_ipoint_t) == sizeof (SkIPoint), ASSERT_MSG(SkIPoint, sk_ipoint_t));
+static_assert (sizeof (sk_point_t) == sizeof (SkPoint), ASSERT_MSG(SkPoint, sk_point_t));
+static_assert (sizeof (sk_irect_t) == sizeof (SkIRect), ASSERT_MSG(SkIRect, sk_irect_t));
+static_assert (sizeof (sk_rect_t) == sizeof (SkRect), ASSERT_MSG(SkRect, sk_rect_t));
+static_assert (sizeof (sk_isize_t) == sizeof (SkISize), ASSERT_MSG(SkISize, sk_isize_t));
+static_assert (sizeof (sk_size_t) == sizeof (SkSize), ASSERT_MSG(SkSize, sk_size_t));
+static_assert (sizeof (sk_point3_t) == sizeof (SkPoint3), ASSERT_MSG(SkPoint3, sk_point3_t));
+static_assert (sizeof (sk_fontmetrics_t) == sizeof (SkPaint::FontMetrics), ASSERT_MSG(SkPaint::FontMetrics, sk_fontmetrics_t));
+static_assert (sizeof (sk_codec_options_t) == sizeof (SkCodec::Options), ASSERT_MSG(SkCodec::Options, sk_codec_options_t));
+static_assert (sizeof (sk_mask_t) == sizeof (SkMask), ASSERT_MSG(SkMask, sk_mask_t));
+static_assert (sizeof (sk_lattice_t) == sizeof (SkCanvas::Lattice), ASSERT_MSG(SkCanvas::Lattice, sk_lattice_t));
+static_assert (sizeof (sk_time_datetime_t) == sizeof (SkTime::DateTime), ASSERT_MSG(SkTime::DateTime, sk_time_datetime_t));
+static_assert (sizeof (sk_encodedinfo_t) == sizeof (SkEncodedInfo), ASSERT_MSG(SkEncodedInfo, sk_encodedinfo_t));
+static_assert (sizeof (sk_codec_frameinfo_t) == sizeof (SkCodec::FrameInfo), ASSERT_MSG(SkCodec::FrameInfo, sk_codec_frameinfo_t));
+
+#if SK_SUPPORT_GPU
+static_assert (sizeof (gr_backend_rendertarget_desc_t) == sizeof (GrBackendRenderTargetDesc), ASSERT_MSG(GrBackendRenderTargetDesc, gr_backend_rendertarget_desc_t));
+static_assert (sizeof (gr_backend_texture_desc_t) == sizeof (GrBackendTextureDesc), ASSERT_MSG(GrBackendTextureDesc, gr_backend_texture_desc_t));
+static_assert (sizeof (gr_context_options_t) == sizeof (GrContextOptions), ASSERT_MSG(GrContextOptions, gr_context_options_t));
+#endif
+
+#endif