1/*
2 * Copyright 2018 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8/**************************************************************************************************
9 *** This file was autogenerated from GrYUVtoRGBEffect.fp; do not modify.
10 **************************************************************************************************/
11#ifndef GrYUVtoRGBEffect_DEFINED
12#define GrYUVtoRGBEffect_DEFINED
13#include "SkTypes.h"
14#if SK_SUPPORT_GPU
15#include "GrFragmentProcessor.h"
16#include "GrCoordTransform.h"
17class GrYUVtoRGBEffect : public GrFragmentProcessor {
18public:
19    static std::unique_ptr<GrFragmentProcessor> Make(sk_sp<GrTextureProxy> yProxy,
20                                                     sk_sp<GrTextureProxy> uProxy,
21                                                     sk_sp<GrTextureProxy> vProxy,
22                                                     const SkISize sizes[3],
23                                                     SkYUVColorSpace colorSpace, bool nv12);
24    SkMatrix44 ySamplerTransform() const { return fYSamplerTransform; }
25    SkMatrix44 uSamplerTransform() const { return fUSamplerTransform; }
26    SkMatrix44 vSamplerTransform() const { return fVSamplerTransform; }
27    SkMatrix44 colorSpaceMatrix() const { return fColorSpaceMatrix; }
28    bool nv12() const { return fNv12; }
29    static std::unique_ptr<GrFragmentProcessor> Make(
30            sk_sp<GrTextureProxy> ySampler, SkMatrix44 ySamplerTransform,
31            sk_sp<GrTextureProxy> uSampler, SkMatrix44 uSamplerTransform,
32            sk_sp<GrTextureProxy> vSampler, SkMatrix44 vSamplerTransform,
33            SkMatrix44 colorSpaceMatrix, bool nv12, GrSamplerState uvSamplerParams) {
34        return std::unique_ptr<GrFragmentProcessor>(new GrYUVtoRGBEffect(
35                ySampler, ySamplerTransform, uSampler, uSamplerTransform, vSampler,
36                vSamplerTransform, colorSpaceMatrix, nv12, uvSamplerParams));
37    }
38    GrYUVtoRGBEffect(const GrYUVtoRGBEffect& src);
39    std::unique_ptr<GrFragmentProcessor> clone() const override;
40    const char* name() const override { return "YUVtoRGBEffect"; }
41
42private:
43    GrYUVtoRGBEffect(sk_sp<GrTextureProxy> ySampler, SkMatrix44 ySamplerTransform,
44                     sk_sp<GrTextureProxy> uSampler, SkMatrix44 uSamplerTransform,
45                     sk_sp<GrTextureProxy> vSampler, SkMatrix44 vSamplerTransform,
46                     SkMatrix44 colorSpaceMatrix, bool nv12, GrSamplerState uvSamplerParams)
47            : INHERITED(kGrYUVtoRGBEffect_ClassID, kNone_OptimizationFlags)
48            , fYSampler(std::move(ySampler))
49            , fYSamplerTransform(ySamplerTransform)
50            , fUSampler(std::move(uSampler), uvSamplerParams)
51            , fUSamplerTransform(uSamplerTransform)
52            , fVSampler(std::move(vSampler), uvSamplerParams)
53            , fVSamplerTransform(vSamplerTransform)
54            , fColorSpaceMatrix(colorSpaceMatrix)
55            , fNv12(nv12)
56            , fYSamplerCoordTransform(ySamplerTransform, fYSampler.proxy())
57            , fUSamplerCoordTransform(uSamplerTransform, fUSampler.proxy())
58            , fVSamplerCoordTransform(vSamplerTransform, fVSampler.proxy()) {
59        this->addTextureSampler(&fYSampler);
60        this->addTextureSampler(&fUSampler);
61        this->addTextureSampler(&fVSampler);
62        this->addCoordTransform(&fYSamplerCoordTransform);
63        this->addCoordTransform(&fUSamplerCoordTransform);
64        this->addCoordTransform(&fVSamplerCoordTransform);
65    }
66    GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
67    void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
68    bool onIsEqual(const GrFragmentProcessor&) const override;
69    GR_DECLARE_FRAGMENT_PROCESSOR_TEST
70    TextureSampler fYSampler;
71    SkMatrix44 fYSamplerTransform;
72    TextureSampler fUSampler;
73    SkMatrix44 fUSamplerTransform;
74    TextureSampler fVSampler;
75    SkMatrix44 fVSamplerTransform;
76    SkMatrix44 fColorSpaceMatrix;
77    bool fNv12;
78    GrCoordTransform fYSamplerCoordTransform;
79    GrCoordTransform fUSamplerCoordTransform;
80    GrCoordTransform fVSamplerCoordTransform;
81    typedef GrFragmentProcessor INHERITED;
82};
83#endif
84#endif
85