Move a bunch of internal types from GrTypes to GrTypesPriv

Change-Id: I9fe1297ae7d185957c76681305bcf22cc972e53b
Reviewed-on: https://skia-review.googlesource.com/116189
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This commit is contained in:
Brian Salomon 2018-03-23 15:15:03 -04:00 committed by Skia Commit-Bot
parent 1e8501ebda
commit f4a00e4b4a
7 changed files with 161 additions and 163 deletions

View File

@ -205,16 +205,6 @@ typedef intptr_t GrBackendContext;
///////////////////////////////////////////////////////////////////////////////
/**
* Used to control antialiasing in draw calls.
*/
enum class GrAA : bool {
kNo = false,
kYes = true
};
///////////////////////////////////////////////////////////////////////////////
/**
* Used to say whether a texture has mip levels allocated or not.
*/
@ -225,66 +215,6 @@ enum class GrMipMapped : bool {
///////////////////////////////////////////////////////////////////////////////
/**
* Geometric primitives used for drawing.
*/
enum class GrPrimitiveType {
kTriangles,
kTriangleStrip,
kTriangleFan,
kPoints,
kLines, // 1 pix wide only
kLineStrip, // 1 pix wide only
kLinesAdjacency // requires geometry shader support.
};
static constexpr int kNumGrPrimitiveTypes = (int) GrPrimitiveType::kLinesAdjacency + 1;
static constexpr bool GrIsPrimTypeLines(GrPrimitiveType type) {
return GrPrimitiveType::kLines == type ||
GrPrimitiveType::kLineStrip == type ||
GrPrimitiveType::kLinesAdjacency == type;
}
static constexpr bool GrIsPrimTypeTris(GrPrimitiveType type) {
return GrPrimitiveType::kTriangles == type ||
GrPrimitiveType::kTriangleStrip == type ||
GrPrimitiveType::kTriangleFan == type;
}
static constexpr bool GrPrimTypeRequiresGeometryShaderSupport(GrPrimitiveType type) {
return GrPrimitiveType::kLinesAdjacency == type;
}
/**
* Formats for masks, used by the font cache.
* Important that these are 0-based.
*/
enum GrMaskFormat {
kA8_GrMaskFormat, //!< 1-byte per pixel
kA565_GrMaskFormat, //!< 2-bytes per pixel, RGB represent 3-channel LCD coverage
kARGB_GrMaskFormat, //!< 4-bytes per pixel, color format
kLast_GrMaskFormat = kARGB_GrMaskFormat
};
static const int kMaskFormatCount = kLast_GrMaskFormat + 1;
/**
* Return the number of bytes-per-pixel for the specified mask format.
*/
static inline int GrMaskFormatBytesPerPixel(GrMaskFormat format) {
SkASSERT(format < kMaskFormatCount);
// kA8 (0) -> 1
// kA565 (1) -> 2
// kARGB (2) -> 4
static const int sBytesPerPixel[] = { 1, 2, 4 };
static_assert(SK_ARRAY_COUNT(sBytesPerPixel) == kMaskFormatCount, "array_size_mismatch");
static_assert(kA8_GrMaskFormat == 0, "enum_order_dependency");
static_assert(kA565_GrMaskFormat == 1, "enum_order_dependency");
static_assert(kARGB_GrMaskFormat == 2, "enum_order_dependency");
return sBytesPerPixel[(int) format];
}
/**
* Pixel configurations. This type conflates texture formats, CPU pixel formats, and
* premultipliedness. We are moving away from it towards SkColorType and backend API (GL, Vulkan)
@ -332,98 +262,22 @@ static const int kGrPixelConfigCnt = kLast_GrPixelConfig + 1;
#endif
/**
* Optional bitfield flags that can be set on GrSurfaceDesc (below).
* Opaque type for 3D API object handles. We are moving away from this type and towards type-safe
* GrBackend* classes (e.g. GrBackendTexture). However, not all replacement APIs are in place yet.
*/
enum GrSurfaceFlags {
kNone_GrSurfaceFlags = 0x0,
/**
* Creates a texture that can be rendered to as a GrRenderTarget. Use
* GrTexture::asRenderTarget() to access.
*/
kRenderTarget_GrSurfaceFlag = 0x1,
/**
* Clears to zero on creation. It will cause creation failure if initial data is supplied to the
* texture. This only affects the base level if the texture is created with MIP levels.
*/
kPerformInitialClear_GrSurfaceFlag = 0x2
};
GR_MAKE_BITFIELD_OPS(GrSurfaceFlags)
typedef GrSurfaceFlags GrSurfaceDescFlags;
// opaque type for 3D API object handles
typedef intptr_t GrBackendObject;
/**
* Some textures will be stored such that the upper and left edges of the content meet at the
* the origin (in texture coord space) and for other textures the lower and left edges meet at
* the origin.
* GPU SkImage and SkSurfaces can be stored such that (0, 0) in texture space may correspond to
* either the top-left or bottom-left content pixel.
*/
enum GrSurfaceOrigin {
kTopLeft_GrSurfaceOrigin,
kBottomLeft_GrSurfaceOrigin,
};
struct GrMipLevel {
const void* fPixels;
size_t fRowBytes;
};
/**
* Describes a surface to be created.
*/
struct GrSurfaceDesc {
GrSurfaceDesc()
: fFlags(kNone_GrSurfaceFlags)
, fWidth(0)
, fHeight(0)
, fConfig(kUnknown_GrPixelConfig)
, fSampleCnt(1) {}
GrSurfaceDescFlags fFlags; //!< bitfield of TextureFlags
int fWidth; //!< Width of the texture
int fHeight; //!< Height of the texture
/**
* Format of source data of the texture. Not guaranteed to be the same as
* internal format used by 3D API.
*/
GrPixelConfig fConfig;
/**
* The number of samples per pixel. Zero is treated equivalently to 1. This only
* applies if the kRenderTarget_GrSurfaceFlag is set. The actual number
* of samples may not exactly match the request. The request will be rounded
* up to the next supported sample count. A value larger than the largest
* supported sample count will fail.
*/
int fSampleCnt;
};
/**
* Clips are composed from these objects.
*/
enum GrClipType {
kRect_ClipType,
kPath_ClipType
};
///////////////////////////////////////////////////////////////////////////////
/** Ownership rules for external GPU resources imported into Skia. */
enum GrWrapOwnership {
/** Skia will assume the client will keep the resource alive and Skia will not free it. */
kBorrow_GrWrapOwnership,
/** Skia will assume ownership of the resource and free it. */
kAdopt_GrWrapOwnership,
};
///////////////////////////////////////////////////////////////////////////////
/**
* The GrContext's cache of backend context state can be partially invalidated.
* A GrContext's cache of backend context state can be partially invalidated.
* These enums are specific to the GL backend and we'd add a new set for an alternative backend.
*/
enum GrGLBackendState {
@ -448,8 +302,10 @@ enum GrGLBackendState {
*/
static const uint32_t kAll_GrBackendState = 0xffffffff;
// Enum used as return value when flush with semaphores so the client knows whether the
// semaphores were submitted to GPU or not.
/**
* Enum used as return value when flush with semaphores so the client knows whether the semaphores
* were submitted to GPU or not.
*/
enum class GrSemaphoresSubmitted : bool {
kNo = false,
kYes = true

View File

@ -27,8 +27,141 @@ using GrStdSteadyClock = std::chrono::monotonic_clock;
using GrStdSteadyClock = std::chrono::steady_clock;
#endif
/** This enum is used to specify the load operation to be used when an
* opList/GrGpuCommandBuffer begins execution.
/**
* Geometric primitives used for drawing.
*/
enum class GrPrimitiveType {
kTriangles,
kTriangleStrip,
kTriangleFan,
kPoints,
kLines, // 1 pix wide only
kLineStrip, // 1 pix wide only
kLinesAdjacency // requires geometry shader support.
};
static constexpr int kNumGrPrimitiveTypes = (int)GrPrimitiveType::kLinesAdjacency + 1;
static constexpr bool GrIsPrimTypeLines(GrPrimitiveType type) {
return GrPrimitiveType::kLines == type ||
GrPrimitiveType::kLineStrip == type ||
GrPrimitiveType::kLinesAdjacency == type;
}
static constexpr bool GrIsPrimTypeTris(GrPrimitiveType type) {
return GrPrimitiveType::kTriangles == type ||
GrPrimitiveType::kTriangleStrip == type ||
GrPrimitiveType::kTriangleFan == type;
}
static constexpr bool GrPrimTypeRequiresGeometryShaderSupport(GrPrimitiveType type) {
return GrPrimitiveType::kLinesAdjacency == type;
}
/**
* Formats for masks, used by the font cache. Important that these are 0-based.
*/
enum GrMaskFormat {
kA8_GrMaskFormat, //!< 1-byte per pixel
kA565_GrMaskFormat, //!< 2-bytes per pixel, RGB represent 3-channel LCD coverage
kARGB_GrMaskFormat, //!< 4-bytes per pixel, color format
kLast_GrMaskFormat = kARGB_GrMaskFormat
};
static const int kMaskFormatCount = kLast_GrMaskFormat + 1;
/**
* Return the number of bytes-per-pixel for the specified mask format.
*/
static inline int GrMaskFormatBytesPerPixel(GrMaskFormat format) {
SkASSERT(format < kMaskFormatCount);
// kA8 (0) -> 1
// kA565 (1) -> 2
// kARGB (2) -> 4
static const int sBytesPerPixel[] = {1, 2, 4};
static_assert(SK_ARRAY_COUNT(sBytesPerPixel) == kMaskFormatCount, "array_size_mismatch");
static_assert(kA8_GrMaskFormat == 0, "enum_order_dependency");
static_assert(kA565_GrMaskFormat == 1, "enum_order_dependency");
static_assert(kARGB_GrMaskFormat == 2, "enum_order_dependency");
return sBytesPerPixel[(int)format];
}
/**
* Optional bitfield flags that can be set on GrSurfaceDesc (below).
*/
enum GrSurfaceFlags {
kNone_GrSurfaceFlags = 0x0,
/**
* Creates a texture that can be rendered to as a GrRenderTarget. Use
* GrTexture::asRenderTarget() to access.
*/
kRenderTarget_GrSurfaceFlag = 0x1,
/**
* Clears to zero on creation. It will cause creation failure if initial data is supplied to the
* texture. This only affects the base level if the texture is created with MIP levels.
*/
kPerformInitialClear_GrSurfaceFlag = 0x2
};
GR_MAKE_BITFIELD_OPS(GrSurfaceFlags)
typedef GrSurfaceFlags GrSurfaceDescFlags;
/**
* Describes a surface to be created.
*/
struct GrSurfaceDesc {
GrSurfaceDesc()
: fFlags(kNone_GrSurfaceFlags)
, fWidth(0)
, fHeight(0)
, fConfig(kUnknown_GrPixelConfig)
, fSampleCnt(1) {}
GrSurfaceDescFlags fFlags; //!< bitfield of TextureFlags
int fWidth; //!< Width of the texture
int fHeight; //!< Height of the texture
/**
* Format of source data of the texture. Not guaranteed to be the same as
* internal format used by 3D API.
*/
GrPixelConfig fConfig;
/**
* The number of samples per pixel. Zero is treated equivalently to 1. This only
* applies if the kRenderTarget_GrSurfaceFlag is set. The actual number
* of samples may not exactly match the request. The request will be rounded
* up to the next supported sample count. A value larger than the largest
* supported sample count will fail.
*/
int fSampleCnt;
};
/** Ownership rules for external GPU resources imported into Skia. */
enum GrWrapOwnership {
/** Skia will assume the client will keep the resource alive and Skia will not free it. */
kBorrow_GrWrapOwnership,
/** Skia will assume ownership of the resource and free it. */
kAdopt_GrWrapOwnership,
};
/**
* Clips are composed from these objects.
*/
enum GrClipType {
kRect_ClipType,
kPath_ClipType
};
struct GrMipLevel {
const void* fPixels;
size_t fRowBytes;
};
/**
* This enum is used to specify the load operation to be used when an opList/GrGpuCommandBuffer
* begins execution.
*/
enum class GrLoadOp {
kLoad,
@ -36,14 +169,23 @@ enum class GrLoadOp {
kDiscard,
};
/** This enum is used to specify the store operation to be used when an
* opList/GrGpuCommandBuffer ends execution.
/**
* This enum is used to specify the store operation to be used when an opList/GrGpuCommandBuffer
* ends execution.
*/
enum class GrStoreOp {
kStore,
kDiscard,
};
/**
* Used to control antialiasing in draw calls.
*/
enum class GrAA : bool {
kNo = false,
kYes = true
};
/** This enum indicates the type of antialiasing to be performed. */
enum class GrAAType : unsigned {
/** No antialiasing */

View File

@ -8,7 +8,7 @@
#ifndef GrBlurUtils_DEFINED
#define GrBlurUtils_DEFINED
#include "GrTypes.h"
#include "GrTypesPriv.h"
class GrClip;
class GrContext;

View File

@ -8,6 +8,7 @@
#ifndef GrSWMaskHelper_DEFINED
#define GrSWMaskHelper_DEFINED
#include "GrTypesPriv.h"
#include "SkAutoPixmapStorage.h"
#include "SkDraw.h"
#include "SkMatrix.h"

View File

@ -13,6 +13,7 @@
#include "SkYUVSizeInfo.h"
class GrContext;
struct GrSurfaceDesc;
class GrTexture;
class GrTextureProxy;

View File

@ -8,9 +8,9 @@
#ifndef GrGLSemaphore_DEFINED
#define GrGLSemaphore_DEFINED
#include "GrSemaphore.h"
#include "GrBackendSemaphore.h"
#include "GrSemaphore.h"
#include "GrTypesPriv.h"
class GrGLGpu;

View File

@ -8,10 +8,8 @@
#ifndef GrVkPipeline_DEFINED
#define GrVkPipeline_DEFINED
#include "GrTypes.h"
#include "GrTypesPriv.h"
#include "GrVkResource.h"
#include "vk/GrVkDefines.h"
class GrPipeline;