8 #ifndef GrTypesPriv_DEFINED
9 #define GrTypesPriv_DEFINED
20 #if defined(__GLIBCXX__) && (__GLIBCXX__ < 20130000)
21 using GrStdSteadyClock = std::chrono::monotonic_clock;
23 using GrStdSteadyClock = std::chrono::steady_clock;
27 enum class GrAAType : unsigned {
41 static inline bool GrAATypeIsHW(GrAAType type) {
45 case GrAAType::kCoverage:
49 case GrAAType::kMixedSamples:
52 SkFAIL(
"Unknown AA Type");
57 enum class GrFSAAType {
70 enum class GrAllowMixedSamples { kNo, kYes };
72 GrAAType GrChooseAAType(GrAA, GrFSAAType, GrAllowMixedSamples,
const GrCaps&);
93 kTexture2DSampler_GrSLType,
94 kITexture2DSampler_GrSLType,
95 kTextureExternalSampler_GrSLType,
96 kTexture2DRectSampler_GrSLType,
97 kBufferSampler_GrSLType,
100 kImageStorage2D_GrSLType,
101 kIImageStorage2D_GrSLType,
105 kVertex_GrShaderType,
106 kGeometry_GrShaderType,
107 kFragment_GrShaderType,
109 kLastkFragment_GrShaderType = kFragment_GrShaderType
111 static const int kGrShaderTypeCount = kLastkFragment_GrShaderType + 1;
114 kNone_GrShaderFlags = 0,
115 kVertex_GrShaderFlag = 1 << kVertex_GrShaderType,
116 kGeometry_GrShaderFlag = 1 << kGeometry_GrShaderType,
117 kFragment_GrShaderFlag = 1 << kFragment_GrShaderType
119 GR_MAKE_BITFIELD_OPS(GrShaderFlags);
128 kMedium_GrSLPrecision,
135 kDefault_GrSLPrecision,
138 kLast_GrSLPrecision = kHigh_GrSLPrecision,
141 static const int kGrSLPrecisionCount = kLast_GrSLPrecision + 1;
144 static inline bool GrSLTypeIsFloatType(GrSLType type) {
146 case kFloat_GrSLType:
147 case kVec2f_GrSLType:
148 case kVec3f_GrSLType:
149 case kVec4f_GrSLType:
150 case kMat22f_GrSLType:
151 case kMat33f_GrSLType:
152 case kMat44f_GrSLType:
156 case kTexture2DSampler_GrSLType:
157 case kITexture2DSampler_GrSLType:
158 case kTextureExternalSampler_GrSLType:
159 case kTexture2DRectSampler_GrSLType:
160 case kBufferSampler_GrSLType:
164 case kVec2i_GrSLType:
165 case kVec3i_GrSLType:
166 case kVec4i_GrSLType:
167 case kTexture2D_GrSLType:
168 case kSampler_GrSLType:
169 case kImageStorage2D_GrSLType:
170 case kIImageStorage2D_GrSLType:
173 SkFAIL(
"Unexpected type");
177 static inline bool GrSLTypeIs2DCombinedSamplerType(GrSLType type) {
179 case kTexture2DSampler_GrSLType:
180 case kITexture2DSampler_GrSLType:
181 case kTextureExternalSampler_GrSLType:
182 case kTexture2DRectSampler_GrSLType:
186 case kFloat_GrSLType:
187 case kVec2f_GrSLType:
188 case kVec3f_GrSLType:
189 case kVec4f_GrSLType:
190 case kVec2i_GrSLType:
191 case kVec3i_GrSLType:
192 case kVec4i_GrSLType:
193 case kMat22f_GrSLType:
194 case kMat33f_GrSLType:
195 case kMat44f_GrSLType:
196 case kBufferSampler_GrSLType:
200 case kTexture2D_GrSLType:
201 case kSampler_GrSLType:
202 case kImageStorage2D_GrSLType:
203 case kIImageStorage2D_GrSLType:
206 SkFAIL(
"Unexpected type");
210 static inline bool GrSLTypeIsCombinedSamplerType(GrSLType type) {
212 case kTexture2DSampler_GrSLType:
213 case kITexture2DSampler_GrSLType:
214 case kTextureExternalSampler_GrSLType:
215 case kTexture2DRectSampler_GrSLType:
216 case kBufferSampler_GrSLType:
220 case kFloat_GrSLType:
221 case kVec2f_GrSLType:
222 case kVec3f_GrSLType:
223 case kVec4f_GrSLType:
224 case kVec2i_GrSLType:
225 case kVec3i_GrSLType:
226 case kVec4i_GrSLType:
227 case kMat22f_GrSLType:
228 case kMat33f_GrSLType:
229 case kMat44f_GrSLType:
233 case kTexture2D_GrSLType:
234 case kSampler_GrSLType:
235 case kImageStorage2D_GrSLType:
236 case kIImageStorage2D_GrSLType:
239 SkFAIL(
"Unexpected type");
243 static inline bool GrSLTypeIsImageStorage(GrSLType type) {
245 case kImageStorage2D_GrSLType:
246 case kIImageStorage2D_GrSLType:
250 case kFloat_GrSLType:
251 case kVec2f_GrSLType:
252 case kVec3f_GrSLType:
253 case kVec4f_GrSLType:
254 case kVec2i_GrSLType:
255 case kVec3i_GrSLType:
256 case kVec4i_GrSLType:
257 case kMat22f_GrSLType:
258 case kMat33f_GrSLType:
259 case kMat44f_GrSLType:
263 case kTexture2D_GrSLType:
264 case kSampler_GrSLType:
265 case kTexture2DSampler_GrSLType:
266 case kITexture2DSampler_GrSLType:
267 case kTextureExternalSampler_GrSLType:
268 case kTexture2DRectSampler_GrSLType:
269 case kBufferSampler_GrSLType:
272 SkFAIL(
"Unexpected type");
276 static inline bool GrSLTypeAcceptsPrecision(GrSLType type) {
280 case kFloat_GrSLType:
281 case kVec2f_GrSLType:
282 case kVec3f_GrSLType:
283 case kVec4f_GrSLType:
284 case kVec2i_GrSLType:
285 case kVec3i_GrSLType:
286 case kVec4i_GrSLType:
287 case kMat22f_GrSLType:
288 case kMat33f_GrSLType:
289 case kMat44f_GrSLType:
290 case kTexture2DSampler_GrSLType:
291 case kITexture2DSampler_GrSLType:
292 case kTextureExternalSampler_GrSLType:
293 case kTexture2DRectSampler_GrSLType:
294 case kBufferSampler_GrSLType:
295 case kTexture2D_GrSLType:
296 case kSampler_GrSLType:
297 case kImageStorage2D_GrSLType:
298 case kIImageStorage2D_GrSLType:
305 SkFAIL(
"Unexpected type");
314 enum GrVertexAttribType {
315 kFloat_GrVertexAttribType = 0,
316 kVec2f_GrVertexAttribType,
317 kVec3f_GrVertexAttribType,
318 kVec4f_GrVertexAttribType,
320 kVec2i_GrVertexAttribType,
321 kVec3i_GrVertexAttribType,
322 kVec4i_GrVertexAttribType,
324 kUByte_GrVertexAttribType,
325 kVec4ub_GrVertexAttribType,
327 kVec2us_GrVertexAttribType,
329 kInt_GrVertexAttribType,
330 kUint_GrVertexAttribType,
332 kLast_GrVertexAttribType = kUint_GrVertexAttribType
334 static const int kGrVertexAttribTypeCount = kLast_GrVertexAttribType + 1;
340 static inline size_t GrVertexAttribTypeSize(GrVertexAttribType type) {
342 case kFloat_GrVertexAttribType:
343 return sizeof(float);
344 case kVec2f_GrVertexAttribType:
345 return 2*
sizeof(float);
346 case kVec3f_GrVertexAttribType:
347 return 3*
sizeof(float);
348 case kVec4f_GrVertexAttribType:
349 return 4*
sizeof(float);
350 case kVec2i_GrVertexAttribType:
351 return 2*
sizeof(int32_t);
352 case kVec3i_GrVertexAttribType:
353 return 3*
sizeof(int32_t);
354 case kVec4i_GrVertexAttribType:
355 return 4*
sizeof(int32_t);
356 case kUByte_GrVertexAttribType:
357 return 1*
sizeof(char);
358 case kVec4ub_GrVertexAttribType:
359 return 4*
sizeof(char);
360 case kVec2us_GrVertexAttribType:
361 return 2*
sizeof(int16_t);
362 case kInt_GrVertexAttribType:
363 return sizeof(int32_t);
364 case kUint_GrVertexAttribType:
365 return sizeof(uint32_t);
367 SkFAIL(
"Unexpected attribute type");
374 static inline bool GrVertexAttribTypeIsIntType(GrVertexAttribType type) {
376 case kFloat_GrVertexAttribType:
378 case kVec2f_GrVertexAttribType:
380 case kVec3f_GrVertexAttribType:
382 case kVec4f_GrVertexAttribType:
384 case kVec2i_GrVertexAttribType:
386 case kVec3i_GrVertexAttribType:
388 case kVec4i_GrVertexAttribType:
390 case kUByte_GrVertexAttribType:
392 case kVec4ub_GrVertexAttribType:
394 case kVec2us_GrVertexAttribType:
396 case kInt_GrVertexAttribType:
398 case kUint_GrVertexAttribType:
401 SkFAIL(
"Unexpected attribute type");
408 static inline GrSLType GrVertexAttribTypeToSLType(GrVertexAttribType type) {
410 case kUByte_GrVertexAttribType:
411 case kFloat_GrVertexAttribType:
412 return kFloat_GrSLType;
413 case kVec2us_GrVertexAttribType:
414 case kVec2f_GrVertexAttribType:
415 return kVec2f_GrSLType;
416 case kVec3f_GrVertexAttribType:
417 return kVec3f_GrSLType;
418 case kVec4ub_GrVertexAttribType:
419 case kVec4f_GrVertexAttribType:
420 return kVec4f_GrSLType;
421 case kVec2i_GrVertexAttribType:
422 return kVec2i_GrSLType;
423 case kVec3i_GrVertexAttribType:
424 return kVec3i_GrSLType;
425 case kVec4i_GrVertexAttribType:
426 return kVec4i_GrSLType;
427 case kInt_GrVertexAttribType:
428 return kInt_GrSLType;
429 case kUint_GrVertexAttribType:
430 return kUint_GrSLType;
432 SkFAIL(
"Unsupported type conversion");
433 return kVoid_GrSLType;
438 enum class GrImageStorageFormat {
449 enum class GrSLMemoryModel {
465 enum class GrSLRestrict {
478 enum GrPrimitiveEdgeType {
479 kFillBW_GrProcessorEdgeType,
480 kFillAA_GrProcessorEdgeType,
481 kInverseFillBW_GrProcessorEdgeType,
482 kInverseFillAA_GrProcessorEdgeType,
483 kHairlineAA_GrProcessorEdgeType,
485 kLast_GrProcessorEdgeType = kHairlineAA_GrProcessorEdgeType
488 static const int kGrProcessorEdgeTypeCnt = kLast_GrProcessorEdgeType + 1;
490 static inline bool GrProcessorEdgeTypeIsFill(
const GrPrimitiveEdgeType edgeType) {
491 return (kFillAA_GrProcessorEdgeType == edgeType || kFillBW_GrProcessorEdgeType == edgeType);
494 static inline bool GrProcessorEdgeTypeIsInverseFill(
const GrPrimitiveEdgeType edgeType) {
495 return (kInverseFillAA_GrProcessorEdgeType == edgeType ||
496 kInverseFillBW_GrProcessorEdgeType == edgeType);
499 static inline bool GrProcessorEdgeTypeIsAA(
const GrPrimitiveEdgeType edgeType) {
500 return (kFillBW_GrProcessorEdgeType != edgeType && kInverseFillBW_GrProcessorEdgeType != edgeType);
503 static inline GrPrimitiveEdgeType GrInvertProcessorEdgeType(
const GrPrimitiveEdgeType edgeType) {
505 case kFillBW_GrProcessorEdgeType:
506 return kInverseFillBW_GrProcessorEdgeType;
507 case kFillAA_GrProcessorEdgeType:
508 return kInverseFillAA_GrProcessorEdgeType;
509 case kInverseFillBW_GrProcessorEdgeType:
510 return kFillBW_GrProcessorEdgeType;
511 case kInverseFillAA_GrProcessorEdgeType:
512 return kFillAA_GrProcessorEdgeType;
513 case kHairlineAA_GrProcessorEdgeType:
514 SkFAIL(
"Hairline fill isn't invertible.");
516 return kFillAA_GrProcessorEdgeType;
532 kVertex_GrBufferType,
535 kDrawIndirect_GrBufferType,
536 kXferCpuToGpu_GrBufferType,
537 kXferGpuToCpu_GrBufferType,
539 kLast_GrBufferType = kXferGpuToCpu_GrBufferType
541 static const int kGrBufferTypeCount = kLast_GrBufferType + 1;
543 static inline bool GrBufferTypeIsVertexOrIndex(GrBufferType type) {
544 SkASSERT(type >= 0 && type < kGrBufferTypeCount);
545 return type <= kIndex_GrBufferType;
547 GR_STATIC_ASSERT(0 == kVertex_GrBufferType);
548 GR_STATIC_ASSERT(1 == kIndex_GrBufferType);
554 enum GrAccessPattern {
556 kDynamic_GrAccessPattern,
558 kStatic_GrAccessPattern,
560 kStream_GrAccessPattern,
562 kLast_GrAccessPattern = kStream_GrAccessPattern
566 enum class GrRenderTargetFlags {
575 kMixedSampled = 1 << 0,
582 kWindowRectsSupport = 1 << 1
584 GR_MAKE_BITFIELD_CLASS_OPS(GrRenderTargetFlags)
588 #define GrCapsDebugf(caps, ...) \
589 if (!(caps)->suppressPrints()) { \
590 SkDebugf(__VA_ARGS__); \
593 #define GrCapsDebugf(caps, ...)
599 enum class GrBackendObjectOwnership : bool {
606 template <
typename T> T *
const * sk_sp_address_as_pointer_address(
sk_sp<T> const * sp) {
607 static_assert(
sizeof(T*) ==
sizeof(
sk_sp<T>),
"sk_sp not expected size.");
608 return reinterpret_cast<T *
const *
>(sp);
614 typedef uint64_t GrFence;
Represents the capabilities of a GrContext.
Definition: GrCaps.h:24
Shared pointer class to wrap classes that support a ref()/unref() interface.
Definition: SkRefCnt.h:246