| Index: src/gpu/GrGpu.h
|
| diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h
|
| index 5d35fcf859bca3792681e9e6ff5037e92fc9fdf0..ebe4116ebed388ee8277554baa1692a0cacbb607 100644
|
| --- a/src/gpu/GrGpu.h
|
| +++ b/src/gpu/GrGpu.h
|
| @@ -12,6 +12,7 @@
|
| #include "GrProgramDesc.h"
|
| #include "GrStencil.h"
|
| #include "GrSwizzle.h"
|
| +#include "GrAllocator.h"
|
| #include "GrTextureParamsAdjuster.h"
|
| #include "GrTypes.h"
|
| #include "GrXferProcessor.h"
|
| @@ -365,6 +366,22 @@ public:
|
| const SkIRect& srcRect,
|
| const SkIPoint& dstPoint);
|
|
|
| + struct MultisampleSpecs {
|
| + // Nonzero ID that uniquely identifies these multisample specs.
|
| + uint8_t fUniqueID;
|
| + // The actual number of samples the GPU will run. NOTE: this value can be greater than the
|
| + // the render target's sample count.
|
| + int fEffectiveSampleCnt;
|
| + // If sample locations are supported, contains the subpixel locations at which the GPU will
|
| + // sample. Pixel center is at (.5, .5) and (0, 0) indicates the top left corner.
|
| + SkAutoTDeleteArray<const SkPoint> fSampleLocations;
|
| + };
|
| +
|
| + // Finds a render target's multisample specs. The stencil settings are only needed to flush the
|
| + // draw state prior to querying multisample information; they should not have any effect on the
|
| + // multisample information itself.
|
| + const MultisampleSpecs& getMultisampleSpecs(GrRenderTarget*, const GrStencilSettings&);
|
| +
|
| struct DrawArgs {
|
| DrawArgs(const GrPrimitiveProcessor* primProc,
|
| const GrPipeline* pipeline,
|
| @@ -601,6 +618,12 @@ private:
|
| const SkIRect& srcRect,
|
| const SkIPoint& dstPoint) = 0;
|
|
|
| + // overridden by backend specific derived class to perform the multisample queries
|
| + virtual void onGetMultisampleSpecs(GrRenderTarget*,
|
| + const GrStencilSettings&,
|
| + int* effectiveSampleCnt,
|
| + SkAutoTDeleteArray<SkPoint>* sampleLocations) = 0;
|
| +
|
| void resetContext() {
|
| this->onResetContext(fResetBits);
|
| fResetBits = 0;
|
| @@ -609,6 +632,8 @@ private:
|
|
|
| ResetTimestamp fResetTimestamp;
|
| uint32_t fResetBits;
|
| + SkTArray<const MultisampleSpecs*, true> fMultisampleSpecsMap;
|
| + GrTAllocator<MultisampleSpecs> fMultisampleSpecsAllocator;
|
| // The context owns us, not vice-versa, so this ptr is not ref'ed by Gpu.
|
| GrContext* fContext;
|
|
|
|
|