[webkit-reviews] review denied: [Bug 61442] [chromium] Red and Blue channels are swapped in images with accelerated drawing : [Attachment 97643] proposed patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Jun 20 19:29:10 PDT 2011


James Robinson <jamesr at chromium.org> has denied Alok Priyadarshi
<alokp at chromium.org>'s request for review:
Bug 61442: [chromium] Red and Blue channels are swapped in images with
accelerated drawing
https://bugs.webkit.org/show_bug.cgi?id=61442

Attachment 97643: proposed patch
https://bugs.webkit.org/attachment.cgi?id=97643&action=review

------- Additional Comments from James Robinson <jamesr at chromium.org>
View in context: https://bugs.webkit.org/attachment.cgi?id=97643&action=review

I don't understand the extra indirection added to LayerTilerChromium.h.  Why
can't you just typedef two different ProgramBinding<>s to ProgramRGBA and
ProgramBGRA?  Otherwise this seems fairly reasonable.

> Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:164
> +    if (!m_skiaContext && m_contextSupportsTextureFormatBGRA &&
m_contextSupportsReadFormatBGRA) {

so what happens if these extensions are not available?	we always return NULL
from this function?

> Source/WebCore/platform/graphics/chromium/LayerTilerChromium.h:99
> -    typedef ProgramBinding<VertexShaderPosTexTransform,
FragmentShaderTexAlpha> Program;
> +    class Program {
> +    public:
> +	   virtual unsigned program() const = 0;
> +	   virtual int vertexMatrixLocation() const = 0;
> +	   virtual int vertexTexTransformLocation() const = 0;
> +	   virtual int fragmentAlphaLocation() const = 0;
> +	   virtual int fragmentSamplerLocation() const = 0;
> +    };
> +
> +    template<class VertexShader, class FragmentShader>
> +    class ProgramT : public Program {
> +    public:
> +	 explicit ProgramT(GraphicsContext3D* context) : m_binding(context) { }

> +
> +	 bool initialized() const { return m_binding.initialized(); }
> +	 void initialize() { m_binding.initialize(); }
> +
> +	 virtual unsigned program() const { return m_binding.program(); }
> +	 virtual int vertexMatrixLocation() const { return
m_binding.vertexShader().matrixLocation(); }
> +	 virtual int vertexTexTransformLocation() const { return
m_binding.vertexShader().texTransformLocation(); }
> +	 virtual int fragmentAlphaLocation() const { return
m_binding.fragmentShader().alphaLocation(); }
> +	 virtual int fragmentSamplerLocation() const { return
m_binding.fragmentShader().samplerLocation(); }
> +
> +    private:
> +	   typedef ProgramBinding<VertexShader, FragmentShader> Binding;
> +	   Binding m_binding;
> +    };

I'm confused - why do these two types exist?


More information about the webkit-reviews mailing list