meta: Add functionality to do _mesa_meta_BlitFrameBuffer() using glsl
authorAnuj Phogat <anuj.phogat@gmail.com>
Wed, 28 Nov 2012 20:55:55 +0000 (12:55 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Tue, 15 Jan 2013 23:08:38 +0000 (15:08 -0800)
commit0c535ae7fc703e10c1df7a108e8704263d7b75d3
tree6c6f3b64c4044e8863ff2855588697f9b56a9ed5
parent252573ae0fe6c928885f005cf6e77200b45601fb
meta: Add functionality to do _mesa_meta_BlitFrameBuffer() using glsl

This patch rewrites _mesa_meta_BlitFrameBuffer() function to add support
for blitting with GLSL/GLSL ES shaders. These changes were required to
support glBlitFrameBuffer() in gles3. This patch, along with other
patches in this series, make 16 failing framebuffer_blit test cases in
gles3 conformance pass.

V2: Properly handle flipped blits for source and destination
    renderbuffer / textures. Add support for GL_TEXTURE_RECTANGLE in
    _mesa_meta_BlitFrameBuffer. Create a temp depth texture to support
    depth buffer blitting.
V3: Remove unsupported / redundant shader code. Add an assertion to make
    sure that we don't use rectangle texture in ES. Put API guard on
    glTexEnvi().
V4: For gles3: Don't use ReadPixels or CopyTexImage2D to blit depth
    buffer.  gles3 spec says for CopyTexImage2D that "color buffer
    components can be dropped during the conversion to internalformat,
    but new components cannot be added." So, use the internal format of
    read renderbuffer to create texture for color buffer blitting.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Ian Romanick <idr@freedesktop.org>
src/mesa/drivers/common/meta.c