Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
formats_gles.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_FORMATS_GLES_H_
6#define FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_FORMATS_GLES_H_
7
8#include <optional>
9
10#include "flutter/fml/logging.h"
11#include "flutter/fml/macros.h"
15
16namespace impeller {
17
18constexpr GLenum ToMode(PrimitiveType primitive_type) {
19 switch (primitive_type) {
21 return GL_TRIANGLES;
23 return GL_TRIANGLE_STRIP;
25 return GL_LINES;
27 return GL_LINE_STRIP;
29 return GL_POINTS;
30 }
32}
33
34constexpr GLenum ToIndexType(IndexType type) {
35 switch (type) {
40 return GL_UNSIGNED_SHORT;
42 return GL_UNSIGNED_INT;
43 }
45}
46
47constexpr GLenum ToStencilOp(StencilOperation op) {
48 switch (op) {
50 return GL_KEEP;
52 return GL_ZERO;
54 return GL_REPLACE;
56 return GL_INCR;
58 return GL_DECR;
60 return GL_INVERT;
62 return GL_INCR_WRAP;
64 return GL_DECR_WRAP;
65 }
67}
68
69constexpr GLenum ToCompareFunction(CompareFunction func) {
70 switch (func) {
72 return GL_NEVER;
74 return GL_ALWAYS;
76 return GL_LESS;
78 return GL_EQUAL;
80 return GL_LEQUAL;
82 return GL_GREATER;
84 return GL_NOTEQUAL;
86 return GL_GEQUAL;
87 }
89}
90
91constexpr GLenum ToBlendFactor(BlendFactor factor) {
92 switch (factor) {
94 return GL_ZERO;
96 return GL_ONE;
98 return GL_SRC_COLOR;
100 return GL_ONE_MINUS_SRC_COLOR;
102 return GL_SRC_ALPHA;
104 return GL_ONE_MINUS_SRC_ALPHA;
106 return GL_DST_COLOR;
108 return GL_ONE_MINUS_DST_COLOR;
110 return GL_DST_ALPHA;
112 return GL_ONE_MINUS_DST_ALPHA;
114 return GL_SRC_ALPHA_SATURATE;
116 return GL_CONSTANT_COLOR;
118 return GL_ONE_MINUS_CONSTANT_COLOR;
120 return GL_CONSTANT_ALPHA;
122 return GL_ONE_MINUS_CONSTANT_ALPHA;
123 }
125}
126
127constexpr GLenum ToBlendOperation(BlendOperation op) {
128 switch (op) {
130 return GL_FUNC_ADD;
132 return GL_FUNC_SUBTRACT;
134 return GL_FUNC_REVERSE_SUBTRACT;
135 }
137}
138
139constexpr std::optional<GLenum> ToVertexAttribType(ShaderType type) {
140 switch (type) {
142 return GL_BYTE;
144 return GL_UNSIGNED_BYTE;
146 return GL_SHORT;
148 return GL_UNSIGNED_SHORT;
150 return GL_FLOAT;
165 return std::nullopt;
166 }
168}
169
170constexpr GLenum ToTextureType(TextureType type) {
171 switch (type) {
173 return GL_TEXTURE_2D;
175 return GL_TEXTURE_2D_MULTISAMPLE;
177 return GL_TEXTURE_CUBE_MAP;
179 return GL_TEXTURE_EXTERNAL_OES;
180 }
182}
183
184constexpr std::optional<GLenum> ToTextureTarget(TextureType type) {
185 switch (type) {
187 return GL_TEXTURE_2D;
189 return GL_TEXTURE_2D;
191 return GL_TEXTURE_CUBE_MAP;
193 return GL_TEXTURE_EXTERNAL_OES;
194 }
196}
197
198std::string DebugToFramebufferError(int status);
199
200} // namespace impeller
201
202#endif // FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_FORMATS_GLES_H_
#define FML_UNREACHABLE()
Definition logging.h:109
@ kNone
Does not use the index buffer.
PrimitiveType
Decides how backend draws pixels based on input vertices.
Definition formats.h:353
@ kPoint
Draws a point at each input vertex.
constexpr std::optional< GLenum > ToTextureTarget(TextureType type)
constexpr GLenum ToIndexType(IndexType type)
constexpr GLenum ToCompareFunction(CompareFunction func)
std::string DebugToFramebufferError(int status)
CompareFunction
Definition formats.h:534
@ kEqual
Comparison test passes if new_value == current_value.
@ kLessEqual
Comparison test passes if new_value <= current_value.
@ kGreaterEqual
Comparison test passes if new_value >= current_value.
@ kAlways
Comparison test passes always passes.
@ kLess
Comparison test passes if new_value < current_value.
@ kGreater
Comparison test passes if new_value > current_value.
@ kNotEqual
Comparison test passes if new_value != current_value.
@ kNever
Comparison test never passes.
constexpr GLenum ToTextureType(TextureType type)
constexpr GLenum ToStencilOp(StencilOperation op)
constexpr GLenum ToMode(PrimitiveType primitive_type)
StencilOperation
Definition formats.h:553
@ kDecrementWrap
Decrement the current stencil value by 1. If at zero, set to maximum.
@ kSetToReferenceValue
Reset the stencil value to the reference value.
@ kDecrementClamp
Decrement the current stencil value by 1. Clamp it to zero.
@ kZero
Reset the stencil value to zero.
@ kIncrementClamp
Increment the current stencil value by 1. Clamp it to the maximum.
@ kIncrementWrap
Increment the current stencil value by 1. If at maximum, set to zero.
@ kInvert
Perform a logical bitwise invert on the current stencil value.
@ kKeep
Don't modify the current stencil value.
constexpr std::optional< GLenum > ToVertexAttribType(ShaderType type)
constexpr GLenum ToBlendFactor(BlendFactor factor)
BlendOperation
Definition formats.h:197
constexpr GLenum ToBlendOperation(BlendOperation op)