Add msaa configs to bench_pictures.

Enables msaa4 and msaa16 configs in bench_pictures and render_pictures (and
anything else that may use PictureRenderer).

Review URL: https://codereview.chromium.org/14544007/


git-svn-id: http://skia.googlecode.com/svn/trunk@8952 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
jvanverth@google.com 2013-05-02 12:39:37 +00:00
parent 4b32101a15
commit f6a90332ae
3 changed files with 38 additions and 4 deletions

View File

@ -120,7 +120,7 @@ SkCanvas* PictureRenderer::setupCanvas(int width, int height) {
desc.fFlags = kRenderTarget_GrTextureFlagBit;
desc.fWidth = width;
desc.fHeight = height;
desc.fSampleCnt = 0;
desc.fSampleCnt = fSampleCount;
target.reset(fGrContext->createUncachedTexture(desc, NULL, 0));
}
if (NULL == target.get()) {

View File

@ -162,6 +162,12 @@ public:
#endif
}
#if SK_SUPPORT_GPU
void setSampleCount(int sampleCount) {
fSampleCount = sampleCount;
}
#endif
void setDrawFilters(DrawFilterFlags const * const filters, const SkString& configName) {
memcpy(fDrawFilters, filters, sizeof(fDrawFilters));
fDrawFiltersConfig = configName;
@ -201,7 +207,11 @@ public:
#if SK_SUPPORT_GPU
switch (fDeviceType) {
case kGPU_DeviceType:
config.append("_gpu");
if (fSampleCount) {
config.appendf("_msaa%d", fSampleCount);
} else {
config.append("_gpu");
}
break;
#if SK_ANGLE
case kAngle_DeviceType:
@ -261,6 +271,7 @@ public:
, fScaleFactor(SK_Scalar1)
#if SK_SUPPORT_GPU
, fGrContext(NULL)
, fSampleCount(0)
#endif
{
fGridInfo.fMargin.setEmpty();
@ -315,6 +326,7 @@ private:
#if SK_SUPPORT_GPU
GrContextFactory fGrContextFactory;
GrContext* fGrContext;
int fSampleCount;
#endif
virtual SkString getConfigNameInternal() = 0;

View File

@ -31,9 +31,9 @@ DEFINE_string(bbh, "none", "bbhType [width height]: Set the bounding box hierarc
// consistent.
#if SK_ANGLE
// ANGLE assumes GPU
DEFINE_string(config, "8888", "[8888|gpu|angle]: Use the corresponding config.");
DEFINE_string(config, "8888", "[8888|gpu|msaa4|msaa16|angle]: Use the corresponding config.");
#elif SK_SUPPORT_GPU
DEFINE_string(config, "8888", "[8888|gpu]: Use the corresponding config.");
DEFINE_string(config, "8888", "[8888|gpu|msaa4|msaa16]: Use the corresponding config.");
#else
DEFINE_string(config, "8888", "[8888]: Use the corresponding config.");
#endif
@ -252,6 +252,9 @@ sk_tools::PictureRenderer* parseRenderer(SkString& error, PictureTool tool) {
sk_tools::PictureRenderer::SkDeviceTypes deviceType =
sk_tools::PictureRenderer::kBitmap_DeviceType;
#if SK_SUPPORT_GPU
int sampleCount = 0;
#endif
if (FLAGS_config.count() > 0) {
if (0 == strcmp(FLAGS_config[0], "8888")) {
deviceType = sk_tools::PictureRenderer::kBitmap_DeviceType;
@ -264,6 +267,22 @@ sk_tools::PictureRenderer* parseRenderer(SkString& error, PictureTool tool) {
return NULL;
}
}
else if (0 == strcmp(FLAGS_config[0], "msaa4")) {
deviceType = sk_tools::PictureRenderer::kGPU_DeviceType;
if (FLAGS_multi > 1) {
error.printf("GPU not compatible with multithreaded tiling.\n");
return NULL;
}
sampleCount = 4;
}
else if (0 == strcmp(FLAGS_config[0], "msaa16")) {
deviceType = sk_tools::PictureRenderer::kGPU_DeviceType;
if (FLAGS_multi > 1) {
error.printf("GPU not compatible with multithreaded tiling.\n");
return NULL;
}
sampleCount = 16;
}
#if SK_ANGLE
else if (0 == strcmp(FLAGS_config[0], "angle")) {
deviceType = sk_tools::PictureRenderer::kAngle_DeviceType;
@ -279,6 +298,9 @@ sk_tools::PictureRenderer* parseRenderer(SkString& error, PictureTool tool) {
return NULL;
}
renderer->setDeviceType(deviceType);
#if SK_SUPPORT_GPU
renderer->setSampleCount(sampleCount);
#endif
}