// // 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 #include #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 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 ¶ms, 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_