GrColorSpaceInfo stores SkAlphaType.
This means GrSurfaceContext's know their alpha type.
All GrRenderTargetSurfaceContexts are kPremul.
Make GrTextureProducer store GrColorSpaceInfo.
Bug: skia:7580
Change-Id: I5ff321ef52c0edd32e5fac99dff95d44aa66f592
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223184
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/GrImageTextureMaker.cpp b/src/gpu/GrImageTextureMaker.cpp
index 0fb1cbe..64eeeee 100644
--- a/src/gpu/GrImageTextureMaker.cpp
+++ b/src/gpu/GrImageTextureMaker.cpp
@@ -5,16 +5,22 @@
* found in the LICENSE file.
*/
-#include "src/gpu/GrColorSpaceXform.h"
#include "src/gpu/GrImageTextureMaker.h"
+
+#include "src/gpu/GrColorSpaceXform.h"
#include "src/gpu/SkGr.h"
#include "src/gpu/effects/GrYUVtoRGBEffect.h"
#include "src/image/SkImage_GpuYUVA.h"
#include "src/image/SkImage_Lazy.h"
+static GrColorSpaceInfo make_info(const SkImage*& image) {
+ return GrColorSpaceInfo(image->alphaType(), image->refColorSpace(),
+ SkImageInfo2GrPixelConfig(image->imageInfo()));
+}
+
GrImageTextureMaker::GrImageTextureMaker(GrRecordingContext* context, const SkImage* client,
SkImage::CachingHint chint, bool useDecal)
- : INHERITED(context, client->width(), client->height(), client->isAlphaOnly(), useDecal)
+ : INHERITED(context, client->width(), client->height(), make_info(client), useDecal)
, fImage(static_cast<const SkImage_Lazy*>(client))
, fCachingHint(chint) {
SkASSERT(client->isLazyGenerated());
@@ -36,19 +42,13 @@
}
}
-SkAlphaType GrImageTextureMaker::alphaType() const {
- return fImage->alphaType();
-}
-SkColorSpace* GrImageTextureMaker::colorSpace() const {
- return fImage->colorSpace();
-}
/////////////////////////////////////////////////////////////////////////////////////////////////
GrYUVAImageTextureMaker::GrYUVAImageTextureMaker(GrContext* context, const SkImage* client,
bool useDecal)
- : INHERITED(context, client->width(), client->height(), client->isAlphaOnly(), useDecal)
- , fImage(static_cast<const SkImage_GpuYUVA*>(client)) {
+ : INHERITED(context, client->width(), client->height(), make_info(client), useDecal)
+ , fImage(static_cast<const SkImage_GpuYUVA*>(client)) {
SkASSERT(as_IB(client)->isYUVA());
GrMakeKeyFromImageID(&fOriginalKey, client->uniqueID(),
SkIRect::MakeWH(this->width(), this->height()));
@@ -77,13 +77,6 @@
}
}
-SkAlphaType GrYUVAImageTextureMaker::alphaType() const {
- return fImage->alphaType();
-}
-SkColorSpace* GrYUVAImageTextureMaker::colorSpace() const {
- return fImage->colorSpace();
-}
-
std::unique_ptr<GrFragmentProcessor> GrYUVAImageTextureMaker::createFragmentProcessor(
const SkMatrix& textureMatrix,
const SkRect& constraintRect,