Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Unified Diff: gm/gmmain.cpp

Issue 13211002: Make GM render to render targets that are also textures. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | include/gpu/SkGpuDevice.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/gmmain.cpp
===================================================================
--- gm/gmmain.cpp (revision 8437)
+++ gm/gmmain.cpp (working copy)
@@ -50,7 +50,6 @@
#if SK_SUPPORT_GPU
#include "GrContextFactory.h"
-#include "GrRenderTarget.h"
#include "SkGpuDevice.h"
typedef GrContextFactory::GLContextType GLContextType;
#define DEFAULT_CACHE_VALUE -1
@@ -59,7 +58,7 @@
#else
class GrContextFactory;
class GrContext;
-class GrRenderTarget;
+class GrSurface;
typedef int GLContextType;
#endif
@@ -373,8 +372,7 @@
}
static ErrorCombination generate_image(GM* gm, const ConfigData& gRec,
- GrContext* context,
- GrRenderTarget* rt,
+ GrSurface* gpuTarget,
SkBitmap* bitmap,
bool deferred) {
SkISize size (gm->getISize());
@@ -394,10 +392,7 @@
}
#if SK_SUPPORT_GPU
else { // GPU
- if (NULL == context) {
- return ErrorCombination(kNoGpuContext_ErrorType);
- }
- SkAutoTUnref<SkDevice> device(new SkGpuDevice(context, rt));
+ SkAutoTUnref<SkDevice> device(SkGpuDevice::Create(gpuTarget));
if (deferred) {
canvas.reset(new SkDeferredCanvas(device));
} else {
@@ -826,15 +821,14 @@
ErrorCombination test_drawing(GM* gm,
const ConfigData& gRec,
const char writePath [],
- GrContext* context,
- GrRenderTarget* rt,
+ GrSurface* gpuTarget,
SkBitmap* bitmap) {
SkDynamicMemoryWStream document;
if (gRec.fBackend == kRaster_Backend ||
gRec.fBackend == kGPU_Backend) {
// Early exit if we can't generate the image.
- ErrorCombination errors = generate_image(gm, gRec, context, rt, bitmap, false);
+ ErrorCombination errors = generate_image(gm, gRec, gpuTarget, bitmap, false);
if (!errors.isEmpty()) {
// TODO: Add a test to exercise what the stdout and
// JSON look like if we get an "early error" while
@@ -858,8 +852,7 @@
ErrorCombination test_deferred_drawing(GM* gm,
const ConfigData& gRec,
const SkBitmap& referenceBitmap,
- GrContext* context,
- GrRenderTarget* rt) {
+ GrSurface* gpuTarget) {
SkDynamicMemoryWStream document;
if (gRec.fBackend == kRaster_Backend ||
@@ -867,7 +860,7 @@
SkBitmap bitmap;
// Early exit if we can't generate the image, but this is
// expected in some cases, so don't report a test failure.
- ErrorCombination errors = generate_image(gm, gRec, context, rt, &bitmap, true);
+ ErrorCombination errors = generate_image(gm, gRec, gpuTarget, &bitmap, true);
// TODO(epoger): This logic is the opposite of what is
// described above... if we succeeded in generating the
// -deferred image, we exit early! We should fix this
@@ -1183,9 +1176,9 @@
// Now we know that we want to run this test and record its
// success or failure.
ErrorCombination errorsForThisConfig;
- GrRenderTarget* renderTarget = NULL;
+ GrSurface* gpuTarget = NULL;
#if SK_SUPPORT_GPU
- SkAutoTUnref<GrRenderTarget> rt;
+ SkAutoTUnref<GrSurface> auGpuTarget;
AutoResetGr autogr;
if ((errorsForThisConfig.isEmpty()) && (kGPU_Backend == config.fBackend)) {
GrContext* gr = grFactory->get(config.fGLContextType);
@@ -1198,26 +1191,23 @@
desc.fWidth = gm->getISize().width();
desc.fHeight = gm->getISize().height();
desc.fSampleCnt = config.fSampleCnt;
- GrTexture* tex = gr->createUncachedTexture(desc, NULL, 0);
- if (tex) {
- rt.reset(tex->asRenderTarget());
- rt.get()->ref();
- tex->unref();
+ auGpuTarget.reset(gr->createUncachedTexture(desc, NULL, 0));
+ if (NULL != auGpuTarget) {
+ gpuTarget = auGpuTarget;
+ grSuccess = true;
autogr.set(gr);
- renderTarget = rt.get();
- grSuccess = NULL != renderTarget;
+ // Set the user specified cache limits if non-default.
+ size_t bytes;
+ int count;
+ gr->getTextureCacheLimits(&count, &bytes);
+ if (DEFAULT_CACHE_VALUE != gGpuCacheSizeBytes) {
+ bytes = static_cast<size_t>(gGpuCacheSizeBytes);
+ }
+ if (DEFAULT_CACHE_VALUE != gGpuCacheSizeCount) {
+ count = gGpuCacheSizeCount;
+ }
+ gr->setTextureCacheLimits(count, bytes);
}
- // Set the user specified cache limits if non-default.
- size_t bytes;
- int count;
- gr->getTextureCacheLimits(&count, &bytes);
- if (DEFAULT_CACHE_VALUE != gGpuCacheSizeBytes) {
- bytes = static_cast<size_t>(gGpuCacheSizeBytes);
- }
- if (DEFAULT_CACHE_VALUE != gGpuCacheSizeCount) {
- count = gGpuCacheSizeCount;
- }
- gr->setTextureCacheLimits(count, bytes);
}
if (!grSuccess) {
errorsForThisConfig.add(kNoGpuContext_ErrorType);
@@ -1234,14 +1224,14 @@
writePath = NULL;
}
if (errorsForThisConfig.isEmpty()) {
- errorsForThisConfig.add(gmmain.test_drawing(gm, config, writePath, GetGr(),
- renderTarget, &comparisonBitmap));
+ errorsForThisConfig.add(gmmain.test_drawing(gm,config, writePath, gpuTarget,
+ &comparisonBitmap));
}
if (FLAGS_deferred && errorsForThisConfig.isEmpty() &&
(kGPU_Backend == config.fBackend || kRaster_Backend == config.fBackend)) {
errorsForThisConfig.add(gmmain.test_deferred_drawing(gm, config, comparisonBitmap,
- GetGr(), renderTarget));
+ gpuTarget));
}
errorsForAllConfigs.add(errorsForThisConfig);
@@ -1595,8 +1585,7 @@
SkBitmap comparisonBitmap;
const ConfigData compareConfig =
{ SkBitmap::kARGB_8888_Config, kRaster_Backend, kDontCare_GLContextType, 0, kRW_ConfigFlag, "comparison", false };
- testErrors.add(gmmain.generate_image(
- gm, compareConfig, NULL, NULL, &comparisonBitmap, false));
+ testErrors.add(gmmain.generate_image(gm, compareConfig, NULL, &comparisonBitmap, false));
// TODO(epoger): only run this if gmmain.generate_image() succeeded?
// Otherwise, what are we comparing against?
« no previous file with comments | « no previous file | include/gpu/SkGpuDevice.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698