Edit

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

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2016-08-09 18:08:03
    Hash : b2e4863c
    Message : Replace std::map with switch in load functions. BUG=angleproject:1455 Change-Id: Ica74ea5503efc0315bc4d98aa322da523a30b24c Reviewed-on: https://chromium-review.googlesource.com/367696 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/renderer/renderer_utils.h
  • //
    // Copyright 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.
    //
    // renderer_utils:
    //   Helper methods pertaining to most or all back-ends.
    //
    
    #ifndef LIBANGLE_RENDERER_RENDERER_UTILS_H_
    #define LIBANGLE_RENDERER_RENDERER_UTILS_H_
    
    #include <cstdint>
    
    #include <map>
    
    #include "libANGLE/angletypes.h"
    
    namespace angle
    {
    struct Format;
    }
    
    namespace gl
    {
    struct FormatType;
    struct InternalFormat;
    }
    
    namespace rx
    {
    
    using MipGenerationFunction = void (*)(size_t sourceWidth,
                                           size_t sourceHeight,
                                           size_t sourceDepth,
                                           const uint8_t *sourceData,
                                           size_t sourceRowPitch,
                                           size_t sourceDepthPitch,
                                           uint8_t *destData,
                                           size_t destRowPitch,
                                           size_t destDepthPitch);
    
    typedef void (*ColorReadFunction)(const uint8_t *source, uint8_t *dest);
    typedef void (*ColorWriteFunction)(const uint8_t *source, uint8_t *dest);
    typedef void (*ColorCopyFunction)(const uint8_t *source, uint8_t *dest);
    
    typedef std::map<gl::FormatType, ColorCopyFunction> FastCopyFunctionMap;
    
    struct PackPixelsParams
    {
        PackPixelsParams();
        PackPixelsParams(const gl::Rectangle &area,
                         GLenum format,
                         GLenum type,
                         GLuint outputPitch,
                         const gl::PixelPackState &pack,
                         ptrdiff_t offset);
    
        gl::Rectangle area;
        GLenum format;
        GLenum type;
        GLuint outputPitch;
        gl::Buffer *packBuffer;
        gl::PixelPackState pack;
        ptrdiff_t offset;
    };
    
    void PackPixels(const PackPixelsParams &params,
                    const angle::Format &sourceFormat,
                    int inputPitch,
                    const uint8_t *source,
                    uint8_t *destination);
    
    ColorWriteFunction GetColorWriteFunction(const gl::FormatType &formatType);
    ColorCopyFunction GetFastCopyFunction(const FastCopyFunctionMap &fastCopyFunctions,
                                          const gl::FormatType &formatType);
    
    using LoadImageFunction = void (*)(size_t width,
                                       size_t height,
                                       size_t depth,
                                       const uint8_t *input,
                                       size_t inputRowPitch,
                                       size_t inputDepthPitch,
                                       uint8_t *output,
                                       size_t outputRowPitch,
                                       size_t outputDepthPitch);
    
    struct LoadImageFunctionInfo
    {
        LoadImageFunctionInfo() : loadFunction(nullptr), requiresConversion(false) {}
        LoadImageFunctionInfo(LoadImageFunction loadFunction, bool requiresConversion)
            : loadFunction(loadFunction), requiresConversion(requiresConversion)
        {
        }
    
        LoadImageFunction loadFunction;
        bool requiresConversion;
    };
    
    using LoadFunctionMap = LoadImageFunctionInfo (*)(GLenum);
    
    }  // namespace rx
    
    #endif  // LIBANGLE_RENDERER_RENDERER_UTILS_H_