Edit

kc3-lang/angle/src/libANGLE/renderer/StreamProducerImpl.h

Branch :

  • Show log

    Commit

  • Author : Jeff Gilbert
    Date : 2017-11-14 16:44:36
    Hash : 3dddccff
    Message : Support RGB gl-tex-external stream consumers for StreamProducerNV12. This makes it relatively simple to sample from a D3D11Texture of arbitrary format. From: https://bugzilla.mozilla.org/show_bug.cgi?id=1322746 BUG=angleproject:2233 TEST=angle_end2end_tests Change-Id: I10cd3043b5cb0c5d36dd613467ba6c0ceadf41af Reviewed-on: https://chromium-review.googlesource.com/758042 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/renderer/StreamProducerImpl.h
  • //
    // Copyright (c) 2016 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    // StreamProducerImpl.h: Defines the abstract rx::StreamProducerImpl class.
    
    #ifndef LIBANGLE_RENDERER_STREAMPRODUCERIMPL_H_
    #define LIBANGLE_RENDERER_STREAMPRODUCERIMPL_H_
    
    #include "common/angleutils.h"
    #include "libANGLE/Stream.h"
    
    namespace rx
    {
    
    class StreamProducerImpl : angle::NonCopyable
    {
      public:
        explicit StreamProducerImpl() {}
        virtual ~StreamProducerImpl() {}
    
        // Validates the ability for the producer to accept an arbitrary pointer to a frame. All
        // pointers should be validated through this function before being used to produce a frame.
        virtual egl::Error validateD3DTexture(void *pointer,
                                              const egl::AttributeMap &attributes) const = 0;
    
        // Constructs a frame from an arbitrary external pointer that points to producer specific frame
        // data. Replaces the internal frame with the new one.
        virtual void postD3DTexture(void *pointer, const egl::AttributeMap &attributes) = 0;
    
        // Returns an OpenGL texture interpretation of some frame attributes for the purpose of
        // constructing an OpenGL texture from a frame. Depending on the producer and consumer, some
        // frames may have multiple "planes" with different OpenGL texture representations.
        virtual egl::Stream::GLTextureDescription getGLFrameDescription(int planeIndex) = 0;
    };
    }  // namespace rx
    
    #endif  // LIBANGLE_RENDERER_STREAMPRODUCERIMPL_H_