// // Copyright (c) 2015 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. // // formatutilsgl.h: Queries for GL image formats and their translations to native // GL formats. #ifndef LIBANGLE_RENDERER_GL_FORMATUTILSGL_H_ #define LIBANGLE_RENDERER_GL_FORMATUTILSGL_H_ #include #include #include #include "angle_gl.h" #include "libANGLE/Version.h" #include "libANGLE/renderer/gl/FunctionsGL.h" #include "libANGLE/renderer/gl/WorkaroundsGL.h" namespace rx { namespace nativegl { struct SupportRequirement { SupportRequirement(); // Version that this format became supported without extensions gl::Version version; // Extensions that are required if the minimum version is not met std::vector versionExtensions; // Extensions that are always required to support this format std::vector requiredExtensions; }; struct InternalFormat { InternalFormat(); SupportRequirement texture; SupportRequirement filter; SupportRequirement renderbuffer; SupportRequirement framebufferAttachment; }; const InternalFormat &GetInternalFormatInfo(GLenum internalFormat, StandardGL standard); struct TexImageFormat { GLenum internalFormat; GLenum format; GLenum type; }; TexImageFormat GetTexImageFormat(const FunctionsGL *functions, const WorkaroundsGL &workarounds, GLenum internalFormat, GLenum format, GLenum type); struct TexSubImageFormat { GLenum format; GLenum type; }; TexSubImageFormat GetTexSubImageFormat(const FunctionsGL *functions, const WorkaroundsGL &workarounds, GLenum format, GLenum type); struct CompressedTexImageFormat { GLenum internalFormat; }; CompressedTexImageFormat GetCompressedTexImageFormat(const FunctionsGL *functions, const WorkaroundsGL &workarounds, GLenum internalFormat); struct CompressedTexSubImageFormat { GLenum format; }; CompressedTexSubImageFormat GetCompressedSubTexImageFormat(const FunctionsGL *functions, const WorkaroundsGL &workarounds, GLenum format); struct CopyTexImageImageFormat { GLenum internalFormat; }; CopyTexImageImageFormat GetCopyTexImageImageFormat(const FunctionsGL *functions, const WorkaroundsGL &workarounds, GLenum internalFormat, GLenum framebufferType); struct TexStorageFormat { GLenum internalFormat; }; TexStorageFormat GetTexStorageFormat(const FunctionsGL *functions, const WorkaroundsGL &workarounds, GLenum internalFormat); struct RenderbufferFormat { GLenum internalFormat; }; RenderbufferFormat GetRenderbufferFormat(const FunctionsGL *functions, const WorkaroundsGL &workarounds, GLenum internalFormat); struct ReadPixelsFormat { GLenum format; GLenum type; }; ReadPixelsFormat GetReadPixelsFormat(const FunctionsGL *functions, const WorkaroundsGL &workarounds, GLenum format, GLenum type); } } #endif // LIBANGLE_RENDERER_GL_FORMATUTILSGL_H_