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

Unified Diff: src/image/SkImage_Gpu.cpp

Issue 1249543003: Creating functions for uploading a mipmapped texture. (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: Fixing merge mistakes Created 5 years, 2 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
« include/gpu/GrContext.h ('K') | « src/gpu/gl/GrGLGpu.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/image/SkImage_Gpu.cpp
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp
index 4417c7bc939bdb3c143fec0dd70f4c1c86a1b788..8cab9aec2c1b7150b900f46e3a0453b7a5a74ed8 100644
--- a/src/image/SkImage_Gpu.cpp
+++ b/src/image/SkImage_Gpu.cpp
@@ -59,6 +59,7 @@ bool SkImage_Gpu::getROPixels(SkBitmap* dst) const {
return true;
}
+<<<<<<< HEAD
GrTexture* SkImage_Gpu::asTextureRef(GrContext* ctx, SkImageUsageType usage) const {
const bool is_pow2 = SkIsPow2(this->width()) && SkIsPow2(this->height());
const bool npot_tex_supported = ctx->caps()->npotTextureTileSupport();
@@ -71,6 +72,87 @@ GrTexture* SkImage_Gpu::asTextureRef(GrContext* ctx, SkImageUsageType usage) con
} else {
return nullptr;
}
+||||||| merged common ancestors
+static void make_raw_texture_stretched_key(uint32_t imageID, const SkGrStretch& stretch,
+ GrUniqueKey* stretchedKey) {
+ SkASSERT(SkGrStretch::kNone_Type != stretch.fType);
+
+ uint32_t width = SkToU16(stretch.fWidth);
+ uint32_t height = SkToU16(stretch.fHeight);
+
+ static const GrUniqueKey::Domain kDomain = GrUniqueKey::GenerateDomain();
+ GrUniqueKey::Builder builder(stretchedKey, kDomain, 3);
+ builder[0] = imageID;
+ builder[1] = stretch.fType;
+ builder[2] = width | (height << 16);
+ builder.finish();
+}
+
+class Texture_GrTextureMaker : public GrTextureMaker {
+public:
+ Texture_GrTextureMaker(const SkImage* image, GrTexture* unstretched)
+ : INHERITED(image->width(), image->height())
+ , fImage(image)
+ , fUnstretched(unstretched)
+ {}
+
+protected:
+ GrTexture* onRefUnstretchedTexture(GrContext* ctx) override {
+ return SkRef(fUnstretched);
+ }
+
+ bool onMakeStretchedKey(const SkGrStretch& stretch, GrUniqueKey* stretchedKey) override {
+ make_raw_texture_stretched_key(fImage->uniqueID(), stretch, stretchedKey);
+ return stretchedKey->isValid();
+ }
+
+ void onNotifyStretchCached(const GrUniqueKey& stretchedKey) override {
+ as_IB(fImage)->notifyAddedToCache();
+ }
+
+ bool onGetROBitmap(SkBitmap* bitmap) override {
+ return as_IB(fImage)->getROPixels(bitmap);
+=======
+static void make_raw_texture_stretched_key(uint32_t imageID, const SkGrStretch& stretch,
+ GrUniqueKey* stretchedKey) {
+ SkASSERT(SkGrStretch::kNone_Type != stretch.fType);
+
+ uint32_t width = SkToU16(stretch.fWidth);
+ uint32_t height = SkToU16(stretch.fHeight);
+
+ static const GrUniqueKey::Domain kDomain = GrUniqueKey::GenerateDomain();
+ GrUniqueKey::Builder builder(stretchedKey, kDomain, 3);
+ builder[0] = imageID;
+ builder[1] = stretch.fType;
+ builder[2] = width | (height << 16);
+ builder.finish();
+}
+
+class Texture_GrTextureMaker : public GrTextureMaker {
+public:
+ Texture_GrTextureMaker(const SkImage* image, GrTexture* unstretched)
+ : INHERITED(image->width(), image->height())
+ , fImage(image)
+ , fUnstretched(unstretched)
+ {}
+
+protected:
+ GrTexture* onRefUnstretchedTexture(GrContext* ctx, const GrTextureParams*) override {
+ return SkRef(fUnstretched);
+ }
+
+ bool onMakeStretchedKey(const SkGrStretch& stretch, GrUniqueKey* stretchedKey) override {
+ make_raw_texture_stretched_key(fImage->uniqueID(), stretch, stretchedKey);
+ return stretchedKey->isValid();
+ }
+
+ void onNotifyStretchCached(const GrUniqueKey& stretchedKey) override {
+ as_IB(fImage)->notifyAddedToCache();
+ }
+
+ bool onGetROBitmap(SkBitmap* bitmap) override {
+ return as_IB(fImage)->getROPixels(bitmap);
+>>>>>>> Fixing the build.
}
fTexture->ref();
@@ -288,7 +370,7 @@ GrTexture* GrDeepCopyTexture(GrTexture* src, bool budgeted) {
if (!dst) {
return nullptr;
}
-
+
const SkIRect srcR = SkIRect::MakeWH(desc.fWidth, desc.fHeight);
const SkIPoint dstP = SkIPoint::Make(0, 0);
ctx->copySurface(dst, src, srcR, dstP, GrContext::kFlushWrites_PixelOp);
« include/gpu/GrContext.h ('K') | « src/gpu/gl/GrGLGpu.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698