• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2023 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 // context_private_call.cpp:
8 //   Helpers that set/get state that is entirely locally accessed by the context.
9 
10 #include "libANGLE/context_private_call_autogen.h"
11 
12 #include "common/debug.h"
13 #include "libANGLE/queryconversions.h"
14 #include "libANGLE/queryutils.h"
15 
16 namespace
17 {
FixedMatrixToMat4(const GLfixed * m)18 inline angle::Mat4 FixedMatrixToMat4(const GLfixed *m)
19 {
20     angle::Mat4 matrixAsFloat;
21     GLfloat *floatData = matrixAsFloat.data();
22 
23     for (int i = 0; i < 16; i++)
24     {
25         floatData[i] = gl::ConvertFixedToFloat(m[i]);
26     }
27 
28     return matrixAsFloat;
29 }
30 }  // namespace
31 
32 namespace gl
33 {
ContextPrivateClearColor(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)34 inline void ContextPrivateClearColor(PrivateState *privateState,
35                                      PrivateStateCache *privateStateCache,
36                                      GLfloat red,
37                                      GLfloat green,
38                                      GLfloat blue,
39                                      GLfloat alpha)
40 {
41     privateState->setColorClearValue(red, green, blue, alpha);
42 }
43 
ContextPrivateClearDepthf(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat depth)44 inline void ContextPrivateClearDepthf(PrivateState *privateState,
45                                       PrivateStateCache *privateStateCache,
46                                       GLfloat depth)
47 {
48     privateState->setDepthClearValue(clamp01(depth));
49 }
50 
ContextPrivateClearStencil(PrivateState * privateState,PrivateStateCache * privateStateCache,GLint stencil)51 inline void ContextPrivateClearStencil(PrivateState *privateState,
52                                        PrivateStateCache *privateStateCache,
53                                        GLint stencil)
54 {
55     privateState->setStencilClearValue(stencil);
56 }
57 
ContextPrivateClearColorx(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed red,GLfixed green,GLfixed blue,GLfixed alpha)58 inline void ContextPrivateClearColorx(PrivateState *privateState,
59                                       PrivateStateCache *privateStateCache,
60                                       GLfixed red,
61                                       GLfixed green,
62                                       GLfixed blue,
63                                       GLfixed alpha)
64 {
65     ContextPrivateClearColor(privateState, privateStateCache, ConvertFixedToFloat(red),
66                              ConvertFixedToFloat(green), ConvertFixedToFloat(blue),
67                              ConvertFixedToFloat(alpha));
68 }
69 
ContextPrivateClearDepthx(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed depth)70 inline void ContextPrivateClearDepthx(PrivateState *privateState,
71                                       PrivateStateCache *privateStateCache,
72                                       GLfixed depth)
73 {
74     ContextPrivateClearDepthf(privateState, privateStateCache, ConvertFixedToFloat(depth));
75 }
76 
ContextPrivateColorMask(PrivateState * privateState,PrivateStateCache * privateStateCache,GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)77 inline void ContextPrivateColorMask(PrivateState *privateState,
78                                     PrivateStateCache *privateStateCache,
79                                     GLboolean red,
80                                     GLboolean green,
81                                     GLboolean blue,
82                                     GLboolean alpha)
83 {
84     privateState->setColorMask(ConvertToBool(red), ConvertToBool(green), ConvertToBool(blue),
85                                ConvertToBool(alpha));
86     privateStateCache->onColorMaskChange();
87 }
88 
ContextPrivateColorMaski(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,GLboolean r,GLboolean g,GLboolean b,GLboolean a)89 inline void ContextPrivateColorMaski(PrivateState *privateState,
90                                      PrivateStateCache *privateStateCache,
91                                      GLuint index,
92                                      GLboolean r,
93                                      GLboolean g,
94                                      GLboolean b,
95                                      GLboolean a)
96 {
97     privateState->setColorMaskIndexed(ConvertToBool(r), ConvertToBool(g), ConvertToBool(b),
98                                       ConvertToBool(a), index);
99     privateStateCache->onColorMaskChange();
100 }
101 
ContextPrivateDepthMask(PrivateState * privateState,PrivateStateCache * privateStateCache,GLboolean flag)102 inline void ContextPrivateDepthMask(PrivateState *privateState,
103                                     PrivateStateCache *privateStateCache,
104                                     GLboolean flag)
105 {
106     privateState->setDepthMask(ConvertToBool(flag));
107 }
108 
ContextPrivateDisable(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum cap)109 inline void ContextPrivateDisable(PrivateState *privateState,
110                                   PrivateStateCache *privateStateCache,
111                                   GLenum cap)
112 {
113     privateState->setEnableFeature(cap, false);
114     privateStateCache->onCapChange();
115 }
116 
ContextPrivateDisablei(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum target,GLuint index)117 inline void ContextPrivateDisablei(PrivateState *privateState,
118                                    PrivateStateCache *privateStateCache,
119                                    GLenum target,
120                                    GLuint index)
121 {
122     privateState->setEnableFeatureIndexed(target, false, index);
123     privateStateCache->onCapChange();
124 }
125 
ContextPrivateEnable(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum cap)126 inline void ContextPrivateEnable(PrivateState *privateState,
127                                  PrivateStateCache *privateStateCache,
128                                  GLenum cap)
129 {
130     privateState->setEnableFeature(cap, true);
131     privateStateCache->onCapChange();
132 }
133 
ContextPrivateEnablei(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum target,GLuint index)134 inline void ContextPrivateEnablei(PrivateState *privateState,
135                                   PrivateStateCache *privateStateCache,
136                                   GLenum target,
137                                   GLuint index)
138 {
139     privateState->setEnableFeatureIndexed(target, true, index);
140     privateStateCache->onCapChange();
141 }
142 
ContextPrivateActiveTexture(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum texture)143 inline void ContextPrivateActiveTexture(PrivateState *privateState,
144                                         PrivateStateCache *privateStateCache,
145                                         GLenum texture)
146 {
147     privateState->setActiveSampler(texture - GL_TEXTURE0);
148 }
149 
ContextPrivateCullFace(PrivateState * privateState,PrivateStateCache * privateStateCache,CullFaceMode mode)150 inline void ContextPrivateCullFace(PrivateState *privateState,
151                                    PrivateStateCache *privateStateCache,
152                                    CullFaceMode mode)
153 {
154     privateState->setCullMode(mode);
155 }
156 
ContextPrivateDepthFunc(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum func)157 inline void ContextPrivateDepthFunc(PrivateState *privateState,
158                                     PrivateStateCache *privateStateCache,
159                                     GLenum func)
160 {
161     privateState->setDepthFunc(func);
162 }
163 
ContextPrivateDepthRangef(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat zNear,GLfloat zFar)164 inline void ContextPrivateDepthRangef(PrivateState *privateState,
165                                       PrivateStateCache *privateStateCache,
166                                       GLfloat zNear,
167                                       GLfloat zFar)
168 {
169     privateState->setDepthRange(clamp01(zNear), clamp01(zFar));
170 }
171 
ContextPrivateDepthRangex(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed zNear,GLfixed zFar)172 inline void ContextPrivateDepthRangex(PrivateState *privateState,
173                                       PrivateStateCache *privateStateCache,
174                                       GLfixed zNear,
175                                       GLfixed zFar)
176 {
177     ContextPrivateDepthRangef(privateState, privateStateCache, ConvertFixedToFloat(zNear),
178                               ConvertFixedToFloat(zFar));
179 }
180 
ContextPrivateFrontFace(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum mode)181 inline void ContextPrivateFrontFace(PrivateState *privateState,
182                                     PrivateStateCache *privateStateCache,
183                                     GLenum mode)
184 {
185     privateState->setFrontFace(mode);
186 }
187 
ContextPrivateLineWidth(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat width)188 inline void ContextPrivateLineWidth(PrivateState *privateState,
189                                     PrivateStateCache *privateStateCache,
190                                     GLfloat width)
191 {
192     privateState->setLineWidth(width);
193 }
194 
ContextPrivateLineWidthx(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed width)195 inline void ContextPrivateLineWidthx(PrivateState *privateState,
196                                      PrivateStateCache *privateStateCache,
197                                      GLfixed width)
198 {
199     ContextPrivateLineWidth(privateState, privateStateCache, ConvertFixedToFloat(width));
200 }
201 
ContextPrivatePolygonOffset(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat factor,GLfloat units)202 inline void ContextPrivatePolygonOffset(PrivateState *privateState,
203                                         PrivateStateCache *privateStateCache,
204                                         GLfloat factor,
205                                         GLfloat units)
206 {
207     privateState->setPolygonOffsetParams(factor, units, 0.0f);
208 }
209 
ContextPrivatePolygonOffsetClamp(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat factor,GLfloat units,GLfloat clamp)210 inline void ContextPrivatePolygonOffsetClamp(PrivateState *privateState,
211                                              PrivateStateCache *privateStateCache,
212                                              GLfloat factor,
213                                              GLfloat units,
214                                              GLfloat clamp)
215 {
216     privateState->setPolygonOffsetParams(factor, units, clamp);
217 }
218 
ContextPrivatePolygonOffsetx(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed factor,GLfixed units)219 inline void ContextPrivatePolygonOffsetx(PrivateState *privateState,
220                                          PrivateStateCache *privateStateCache,
221                                          GLfixed factor,
222                                          GLfixed units)
223 {
224     ContextPrivatePolygonOffsetClamp(privateState, privateStateCache, ConvertFixedToFloat(factor),
225                                      ConvertFixedToFloat(units), 0.0f);
226 }
227 
ContextPrivateSampleCoverage(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat value,GLboolean invert)228 inline void ContextPrivateSampleCoverage(PrivateState *privateState,
229                                          PrivateStateCache *privateStateCache,
230                                          GLfloat value,
231                                          GLboolean invert)
232 {
233     privateState->setSampleCoverageParams(clamp01(value), ConvertToBool(invert));
234 }
235 
ContextPrivateSampleCoveragex(PrivateState * privateState,PrivateStateCache * privateStateCache,GLclampx value,GLboolean invert)236 inline void ContextPrivateSampleCoveragex(PrivateState *privateState,
237                                           PrivateStateCache *privateStateCache,
238                                           GLclampx value,
239                                           GLboolean invert)
240 {
241     ContextPrivateSampleCoverage(privateState, privateStateCache, ConvertFixedToFloat(value),
242                                  invert);
243 }
244 
ContextPrivateScissor(PrivateState * privateState,PrivateStateCache * privateStateCache,GLint x,GLint y,GLsizei width,GLsizei height)245 inline void ContextPrivateScissor(PrivateState *privateState,
246                                   PrivateStateCache *privateStateCache,
247                                   GLint x,
248                                   GLint y,
249                                   GLsizei width,
250                                   GLsizei height)
251 {
252     privateState->setScissorParams(x, y, width, height);
253 }
254 
ContextPrivateVertexAttrib1f(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,GLfloat x)255 inline void ContextPrivateVertexAttrib1f(PrivateState *privateState,
256                                          PrivateStateCache *privateStateCache,
257                                          GLuint index,
258                                          GLfloat x)
259 {
260     GLfloat vals[4] = {x, 0, 0, 1};
261     privateState->setVertexAttribf(index, vals);
262     privateStateCache->onDefaultVertexAttributeChange();
263 }
264 
ContextPrivateVertexAttrib1fv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,const GLfloat * values)265 inline void ContextPrivateVertexAttrib1fv(PrivateState *privateState,
266                                           PrivateStateCache *privateStateCache,
267                                           GLuint index,
268                                           const GLfloat *values)
269 {
270     GLfloat vals[4] = {values[0], 0, 0, 1};
271     privateState->setVertexAttribf(index, vals);
272     privateStateCache->onDefaultVertexAttributeChange();
273 }
274 
ContextPrivateVertexAttrib2f(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,GLfloat x,GLfloat y)275 inline void ContextPrivateVertexAttrib2f(PrivateState *privateState,
276                                          PrivateStateCache *privateStateCache,
277                                          GLuint index,
278                                          GLfloat x,
279                                          GLfloat y)
280 {
281     GLfloat vals[4] = {x, y, 0, 1};
282     privateState->setVertexAttribf(index, vals);
283     privateStateCache->onDefaultVertexAttributeChange();
284 }
285 
ContextPrivateVertexAttrib2fv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,const GLfloat * values)286 inline void ContextPrivateVertexAttrib2fv(PrivateState *privateState,
287                                           PrivateStateCache *privateStateCache,
288                                           GLuint index,
289                                           const GLfloat *values)
290 {
291     GLfloat vals[4] = {values[0], values[1], 0, 1};
292     privateState->setVertexAttribf(index, vals);
293     privateStateCache->onDefaultVertexAttributeChange();
294 }
295 
ContextPrivateVertexAttrib3f(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,GLfloat x,GLfloat y,GLfloat z)296 inline void ContextPrivateVertexAttrib3f(PrivateState *privateState,
297                                          PrivateStateCache *privateStateCache,
298                                          GLuint index,
299                                          GLfloat x,
300                                          GLfloat y,
301                                          GLfloat z)
302 {
303     GLfloat vals[4] = {x, y, z, 1};
304     privateState->setVertexAttribf(index, vals);
305     privateStateCache->onDefaultVertexAttributeChange();
306 }
307 
ContextPrivateVertexAttrib3fv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,const GLfloat * values)308 inline void ContextPrivateVertexAttrib3fv(PrivateState *privateState,
309                                           PrivateStateCache *privateStateCache,
310                                           GLuint index,
311                                           const GLfloat *values)
312 {
313     GLfloat vals[4] = {values[0], values[1], values[2], 1};
314     privateState->setVertexAttribf(index, vals);
315     privateStateCache->onDefaultVertexAttributeChange();
316 }
317 
ContextPrivateVertexAttrib4f(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,GLfloat x,GLfloat y,GLfloat z,GLfloat w)318 inline void ContextPrivateVertexAttrib4f(PrivateState *privateState,
319                                          PrivateStateCache *privateStateCache,
320                                          GLuint index,
321                                          GLfloat x,
322                                          GLfloat y,
323                                          GLfloat z,
324                                          GLfloat w)
325 {
326     GLfloat vals[4] = {x, y, z, w};
327     privateState->setVertexAttribf(index, vals);
328     privateStateCache->onDefaultVertexAttributeChange();
329 }
330 
ContextPrivateVertexAttrib4fv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,const GLfloat * values)331 inline void ContextPrivateVertexAttrib4fv(PrivateState *privateState,
332                                           PrivateStateCache *privateStateCache,
333                                           GLuint index,
334                                           const GLfloat *values)
335 {
336     privateState->setVertexAttribf(index, values);
337     privateStateCache->onDefaultVertexAttributeChange();
338 }
339 
ContextPrivateVertexAttribI4i(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,GLint x,GLint y,GLint z,GLint w)340 inline void ContextPrivateVertexAttribI4i(PrivateState *privateState,
341                                           PrivateStateCache *privateStateCache,
342                                           GLuint index,
343                                           GLint x,
344                                           GLint y,
345                                           GLint z,
346                                           GLint w)
347 {
348     GLint vals[4] = {x, y, z, w};
349     privateState->setVertexAttribi(index, vals);
350     privateStateCache->onDefaultVertexAttributeChange();
351 }
352 
ContextPrivateVertexAttribI4iv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,const GLint * values)353 inline void ContextPrivateVertexAttribI4iv(PrivateState *privateState,
354                                            PrivateStateCache *privateStateCache,
355                                            GLuint index,
356                                            const GLint *values)
357 {
358     privateState->setVertexAttribi(index, values);
359     privateStateCache->onDefaultVertexAttributeChange();
360 }
361 
ContextPrivateVertexAttribI4ui(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,GLuint x,GLuint y,GLuint z,GLuint w)362 inline void ContextPrivateVertexAttribI4ui(PrivateState *privateState,
363                                            PrivateStateCache *privateStateCache,
364                                            GLuint index,
365                                            GLuint x,
366                                            GLuint y,
367                                            GLuint z,
368                                            GLuint w)
369 {
370     GLuint vals[4] = {x, y, z, w};
371     privateState->setVertexAttribu(index, vals);
372     privateStateCache->onDefaultVertexAttributeChange();
373 }
374 
ContextPrivateVertexAttribI4uiv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint index,const GLuint * values)375 inline void ContextPrivateVertexAttribI4uiv(PrivateState *privateState,
376                                             PrivateStateCache *privateStateCache,
377                                             GLuint index,
378                                             const GLuint *values)
379 {
380     privateState->setVertexAttribu(index, values);
381     privateStateCache->onDefaultVertexAttributeChange();
382 }
383 
ContextPrivateViewport(PrivateState * privateState,PrivateStateCache * privateStateCache,GLint x,GLint y,GLsizei width,GLsizei height)384 inline void ContextPrivateViewport(PrivateState *privateState,
385                                    PrivateStateCache *privateStateCache,
386                                    GLint x,
387                                    GLint y,
388                                    GLsizei width,
389                                    GLsizei height)
390 {
391     privateState->setViewportParams(x, y, width, height);
392 }
393 
ContextPrivateSampleMaski(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint maskNumber,GLbitfield mask)394 inline void ContextPrivateSampleMaski(PrivateState *privateState,
395                                       PrivateStateCache *privateStateCache,
396                                       GLuint maskNumber,
397                                       GLbitfield mask)
398 {
399     privateState->setSampleMaskParams(maskNumber, mask);
400 }
401 
ContextPrivateMinSampleShading(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat value)402 inline void ContextPrivateMinSampleShading(PrivateState *privateState,
403                                            PrivateStateCache *privateStateCache,
404                                            GLfloat value)
405 {
406     privateState->setMinSampleShading(value);
407 }
408 
ContextPrivatePrimitiveBoundingBox(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat minX,GLfloat minY,GLfloat minZ,GLfloat minW,GLfloat maxX,GLfloat maxY,GLfloat maxZ,GLfloat maxW)409 inline void ContextPrivatePrimitiveBoundingBox(PrivateState *privateState,
410                                                PrivateStateCache *privateStateCache,
411                                                GLfloat minX,
412                                                GLfloat minY,
413                                                GLfloat minZ,
414                                                GLfloat minW,
415                                                GLfloat maxX,
416                                                GLfloat maxY,
417                                                GLfloat maxZ,
418                                                GLfloat maxW)
419 {
420     privateState->setBoundingBox(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
421 }
422 
ContextPrivateLogicOp(PrivateState * privateState,PrivateStateCache * privateStateCache,LogicalOperation opcode)423 inline void ContextPrivateLogicOp(PrivateState *privateState,
424                                   PrivateStateCache *privateStateCache,
425                                   LogicalOperation opcode)
426 {
427     privateState->getMutableGLES1State()->setLogicOp(opcode);
428 }
429 
ContextPrivateLogicOpANGLE(PrivateState * privateState,PrivateStateCache * privateStateCache,LogicalOperation opcode)430 inline void ContextPrivateLogicOpANGLE(PrivateState *privateState,
431                                        PrivateStateCache *privateStateCache,
432                                        LogicalOperation opcode)
433 {
434     privateState->setLogicOp(opcode);
435 }
436 
ContextPrivatePolygonMode(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,PolygonMode mode)437 inline void ContextPrivatePolygonMode(PrivateState *privateState,
438                                       PrivateStateCache *privateStateCache,
439                                       GLenum face,
440                                       PolygonMode mode)
441 {
442     ASSERT(face == GL_FRONT_AND_BACK);
443     privateState->setPolygonMode(mode);
444 }
445 
ContextPrivatePolygonModeNV(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,PolygonMode mode)446 inline void ContextPrivatePolygonModeNV(PrivateState *privateState,
447                                         PrivateStateCache *privateStateCache,
448                                         GLenum face,
449                                         PolygonMode mode)
450 {
451     ContextPrivatePolygonMode(privateState, privateStateCache, face, mode);
452 }
453 
ContextPrivateProvokingVertex(PrivateState * privateState,PrivateStateCache * privateStateCache,ProvokingVertexConvention provokeMode)454 inline void ContextPrivateProvokingVertex(PrivateState *privateState,
455                                           PrivateStateCache *privateStateCache,
456                                           ProvokingVertexConvention provokeMode)
457 {
458     privateState->setProvokingVertex(provokeMode);
459 }
460 
ContextPrivateCoverageModulation(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum components)461 inline void ContextPrivateCoverageModulation(PrivateState *privateState,
462                                              PrivateStateCache *privateStateCache,
463                                              GLenum components)
464 {
465     privateState->setCoverageModulation(components);
466 }
467 
ContextPrivateClipControl(PrivateState * privateState,PrivateStateCache * privateStateCache,ClipOrigin origin,ClipDepthMode depth)468 inline void ContextPrivateClipControl(PrivateState *privateState,
469                                       PrivateStateCache *privateStateCache,
470                                       ClipOrigin origin,
471                                       ClipDepthMode depth)
472 {
473     privateState->setClipControl(origin, depth);
474 }
475 
ContextPrivateShadingRate(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum rate)476 inline void ContextPrivateShadingRate(PrivateState *privateState,
477                                       PrivateStateCache *privateStateCache,
478                                       GLenum rate)
479 {
480     privateState->setShadingRate(rate);
481 }
482 
ContextPrivateBlendColor(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)483 inline void ContextPrivateBlendColor(PrivateState *privateState,
484                                      PrivateStateCache *privateStateCache,
485                                      GLfloat red,
486                                      GLfloat green,
487                                      GLfloat blue,
488                                      GLfloat alpha)
489 {
490     privateState->setBlendColor(red, green, blue, alpha);
491 }
492 
ContextPrivateBlendEquation(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum mode)493 inline void ContextPrivateBlendEquation(PrivateState *privateState,
494                                         PrivateStateCache *privateStateCache,
495                                         GLenum mode)
496 {
497     privateState->setBlendEquation(mode, mode);
498     if (privateState->getExtensions().blendEquationAdvancedKHR)
499     {
500         privateStateCache->onBlendEquationOrFuncChange();
501     }
502 }
503 
ContextPrivateBlendEquationi(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint buf,GLenum mode)504 inline void ContextPrivateBlendEquationi(PrivateState *privateState,
505                                          PrivateStateCache *privateStateCache,
506                                          GLuint buf,
507                                          GLenum mode)
508 {
509     privateState->setBlendEquationIndexed(mode, mode, buf);
510     if (privateState->getExtensions().blendEquationAdvancedKHR)
511     {
512         privateStateCache->onBlendEquationOrFuncChange();
513     }
514 }
515 
ContextPrivateBlendEquationSeparate(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum modeRGB,GLenum modeAlpha)516 inline void ContextPrivateBlendEquationSeparate(PrivateState *privateState,
517                                                 PrivateStateCache *privateStateCache,
518                                                 GLenum modeRGB,
519                                                 GLenum modeAlpha)
520 {
521     privateState->setBlendEquation(modeRGB, modeAlpha);
522     if (privateState->getExtensions().blendEquationAdvancedKHR)
523     {
524         privateStateCache->onBlendEquationOrFuncChange();
525     }
526 }
527 
ContextPrivateBlendEquationSeparatei(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint buf,GLenum modeRGB,GLenum modeAlpha)528 inline void ContextPrivateBlendEquationSeparatei(PrivateState *privateState,
529                                                  PrivateStateCache *privateStateCache,
530                                                  GLuint buf,
531                                                  GLenum modeRGB,
532                                                  GLenum modeAlpha)
533 {
534     privateState->setBlendEquationIndexed(modeRGB, modeAlpha, buf);
535     if (privateState->getExtensions().blendEquationAdvancedKHR)
536     {
537         privateStateCache->onBlendEquationOrFuncChange();
538     }
539 }
540 
ContextPrivateBlendFunc(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum sfactor,GLenum dfactor)541 inline void ContextPrivateBlendFunc(PrivateState *privateState,
542                                     PrivateStateCache *privateStateCache,
543                                     GLenum sfactor,
544                                     GLenum dfactor)
545 {
546     privateState->setBlendFactors(sfactor, dfactor, sfactor, dfactor);
547     if (privateState->getExtensions().blendFuncExtendedEXT)
548     {
549         privateStateCache->onBlendEquationOrFuncChange();
550     }
551 }
552 
ContextPrivateBlendFunci(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint buf,GLenum src,GLenum dst)553 inline void ContextPrivateBlendFunci(PrivateState *privateState,
554                                      PrivateStateCache *privateStateCache,
555                                      GLuint buf,
556                                      GLenum src,
557                                      GLenum dst)
558 {
559     privateState->setBlendFactorsIndexed(src, dst, src, dst, buf);
560     if (privateState->noSimultaneousConstantColorAndAlphaBlendFunc() ||
561         privateState->getExtensions().blendFuncExtendedEXT)
562     {
563         privateStateCache->onBlendEquationOrFuncChange();
564     }
565 }
566 
ContextPrivateBlendFuncSeparate(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)567 inline void ContextPrivateBlendFuncSeparate(PrivateState *privateState,
568                                             PrivateStateCache *privateStateCache,
569                                             GLenum srcRGB,
570                                             GLenum dstRGB,
571                                             GLenum srcAlpha,
572                                             GLenum dstAlpha)
573 {
574     privateState->setBlendFactors(srcRGB, dstRGB, srcAlpha, dstAlpha);
575     if (privateState->getExtensions().blendFuncExtendedEXT)
576     {
577         privateStateCache->onBlendEquationOrFuncChange();
578     }
579 }
580 
ContextPrivateBlendFuncSeparatei(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint buf,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)581 inline void ContextPrivateBlendFuncSeparatei(PrivateState *privateState,
582                                              PrivateStateCache *privateStateCache,
583                                              GLuint buf,
584                                              GLenum srcRGB,
585                                              GLenum dstRGB,
586                                              GLenum srcAlpha,
587                                              GLenum dstAlpha)
588 {
589     privateState->setBlendFactorsIndexed(srcRGB, dstRGB, srcAlpha, dstAlpha, buf);
590     if (privateState->noSimultaneousConstantColorAndAlphaBlendFunc() ||
591         privateState->getExtensions().blendFuncExtendedEXT)
592     {
593         privateStateCache->onBlendEquationOrFuncChange();
594     }
595 }
596 
ContextPrivateStencilFunc(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum func,GLint ref,GLuint mask)597 inline void ContextPrivateStencilFunc(PrivateState *privateState,
598                                       PrivateStateCache *privateStateCache,
599                                       GLenum func,
600                                       GLint ref,
601                                       GLuint mask)
602 {
603     ContextPrivateStencilFuncSeparate(privateState, privateStateCache, GL_FRONT_AND_BACK, func, ref,
604                                       mask);
605 }
606 
ContextPrivateStencilFuncSeparate(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,GLenum func,GLint ref,GLuint mask)607 inline void ContextPrivateStencilFuncSeparate(PrivateState *privateState,
608                                               PrivateStateCache *privateStateCache,
609                                               GLenum face,
610                                               GLenum func,
611                                               GLint ref,
612                                               GLuint mask)
613 {
614     GLint clampedRef = gl::clamp(ref, 0, std::numeric_limits<uint8_t>::max());
615     if (face == GL_FRONT || face == GL_FRONT_AND_BACK)
616     {
617         privateState->setStencilParams(func, clampedRef, mask);
618     }
619 
620     if (face == GL_BACK || face == GL_FRONT_AND_BACK)
621     {
622         privateState->setStencilBackParams(func, clampedRef, mask);
623     }
624 
625     privateStateCache->onStencilStateChange();
626 }
627 
ContextPrivateStencilMask(PrivateState * privateState,PrivateStateCache * privateStateCache,GLuint mask)628 inline void ContextPrivateStencilMask(PrivateState *privateState,
629                                       PrivateStateCache *privateStateCache,
630                                       GLuint mask)
631 {
632     ContextPrivateStencilMaskSeparate(privateState, privateStateCache, GL_FRONT_AND_BACK, mask);
633 }
634 
ContextPrivateStencilMaskSeparate(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,GLuint mask)635 inline void ContextPrivateStencilMaskSeparate(PrivateState *privateState,
636                                               PrivateStateCache *privateStateCache,
637                                               GLenum face,
638                                               GLuint mask)
639 {
640     if (face == GL_FRONT || face == GL_FRONT_AND_BACK)
641     {
642         privateState->setStencilWritemask(mask);
643     }
644 
645     if (face == GL_BACK || face == GL_FRONT_AND_BACK)
646     {
647         privateState->setStencilBackWritemask(mask);
648     }
649 
650     privateStateCache->onStencilStateChange();
651 }
652 
ContextPrivateStencilOp(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum fail,GLenum zfail,GLenum zpass)653 inline void ContextPrivateStencilOp(PrivateState *privateState,
654                                     PrivateStateCache *privateStateCache,
655                                     GLenum fail,
656                                     GLenum zfail,
657                                     GLenum zpass)
658 {
659     ContextPrivateStencilOpSeparate(privateState, privateStateCache, GL_FRONT_AND_BACK, fail, zfail,
660                                     zpass);
661 }
662 
ContextPrivateStencilOpSeparate(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,GLenum fail,GLenum zfail,GLenum zpass)663 inline void ContextPrivateStencilOpSeparate(PrivateState *privateState,
664                                             PrivateStateCache *privateStateCache,
665                                             GLenum face,
666                                             GLenum fail,
667                                             GLenum zfail,
668                                             GLenum zpass)
669 {
670     if (face == GL_FRONT || face == GL_FRONT_AND_BACK)
671     {
672         privateState->setStencilOperations(fail, zfail, zpass);
673     }
674 
675     if (face == GL_BACK || face == GL_FRONT_AND_BACK)
676     {
677         privateState->setStencilBackOperations(fail, zfail, zpass);
678     }
679 }
680 
ContextPrivatePixelStorei(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,GLint param)681 inline void ContextPrivatePixelStorei(PrivateState *privateState,
682                                       PrivateStateCache *privateStateCache,
683                                       GLenum pname,
684                                       GLint param)
685 {
686     switch (pname)
687     {
688         case GL_UNPACK_ALIGNMENT:
689             privateState->setUnpackAlignment(param);
690             break;
691 
692         case GL_PACK_ALIGNMENT:
693             privateState->setPackAlignment(param);
694             break;
695 
696         case GL_PACK_REVERSE_ROW_ORDER_ANGLE:
697             privateState->setPackReverseRowOrder(param != 0);
698             break;
699 
700         case GL_UNPACK_ROW_LENGTH:
701             ASSERT(privateState->getClientMajorVersion() >= 3 ||
702                    privateState->getExtensions().unpackSubimageEXT);
703             privateState->setUnpackRowLength(param);
704             break;
705 
706         case GL_UNPACK_IMAGE_HEIGHT:
707             ASSERT(privateState->getClientMajorVersion() >= 3);
708             privateState->setUnpackImageHeight(param);
709             break;
710 
711         case GL_UNPACK_SKIP_IMAGES:
712             ASSERT(privateState->getClientMajorVersion() >= 3);
713             privateState->setUnpackSkipImages(param);
714             break;
715 
716         case GL_UNPACK_SKIP_ROWS:
717             ASSERT((privateState->getClientMajorVersion() >= 3) ||
718                    privateState->getExtensions().unpackSubimageEXT);
719             privateState->setUnpackSkipRows(param);
720             break;
721 
722         case GL_UNPACK_SKIP_PIXELS:
723             ASSERT((privateState->getClientMajorVersion() >= 3) ||
724                    privateState->getExtensions().unpackSubimageEXT);
725             privateState->setUnpackSkipPixels(param);
726             break;
727 
728         case GL_PACK_ROW_LENGTH:
729             ASSERT((privateState->getClientMajorVersion() >= 3) ||
730                    privateState->getExtensions().packSubimageNV);
731             privateState->setPackRowLength(param);
732             break;
733 
734         case GL_PACK_SKIP_ROWS:
735             ASSERT((privateState->getClientMajorVersion() >= 3) ||
736                    privateState->getExtensions().packSubimageNV);
737             privateState->setPackSkipRows(param);
738             break;
739 
740         case GL_PACK_SKIP_PIXELS:
741             ASSERT((privateState->getClientMajorVersion() >= 3) ||
742                    privateState->getExtensions().packSubimageNV);
743             privateState->setPackSkipPixels(param);
744             break;
745 
746         default:
747             UNREACHABLE();
748             return;
749     }
750 }
751 
ContextPrivateHint(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum target,GLenum mode)752 inline void ContextPrivateHint(PrivateState *privateState,
753                                PrivateStateCache *privateStateCache,
754                                GLenum target,
755                                GLenum mode)
756 {
757     switch (target)
758     {
759         case GL_GENERATE_MIPMAP_HINT:
760             privateState->setGenerateMipmapHint(mode);
761             break;
762 
763         case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES:
764             privateState->setFragmentShaderDerivativeHint(mode);
765             break;
766 
767         case GL_PERSPECTIVE_CORRECTION_HINT:
768         case GL_POINT_SMOOTH_HINT:
769         case GL_LINE_SMOOTH_HINT:
770         case GL_FOG_HINT:
771             privateState->getMutableGLES1State()->setHint(target, mode);
772             break;
773         default:
774             UNREACHABLE();
775             return;
776     }
777 }
778 
ContextPrivateIsEnabled(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum cap)779 inline GLboolean ContextPrivateIsEnabled(PrivateState *privateState,
780                                          PrivateStateCache *privateStateCache,
781                                          GLenum cap)
782 {
783     return privateState->getEnableFeature(cap);
784 }
785 
ContextPrivateIsEnabledi(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum target,GLuint index)786 inline GLboolean ContextPrivateIsEnabledi(PrivateState *privateState,
787                                           PrivateStateCache *privateStateCache,
788                                           GLenum target,
789                                           GLuint index)
790 {
791     return privateState->getEnableFeatureIndexed(target, index);
792 }
793 
ContextPrivatePatchParameteri(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,GLint value)794 inline void ContextPrivatePatchParameteri(PrivateState *privateState,
795                                           PrivateStateCache *privateStateCache,
796                                           GLenum pname,
797                                           GLint value)
798 {
799     switch (pname)
800     {
801         case GL_PATCH_VERTICES:
802             privateState->setPatchVertices(value);
803             break;
804         default:
805             break;
806     }
807 }
808 
ContextPrivateAlphaFunc(PrivateState * privateState,PrivateStateCache * privateStateCache,AlphaTestFunc func,GLfloat ref)809 inline void ContextPrivateAlphaFunc(PrivateState *privateState,
810                                     PrivateStateCache *privateStateCache,
811                                     AlphaTestFunc func,
812                                     GLfloat ref)
813 {
814     privateState->getMutableGLES1State()->setAlphaTestParameters(func, ref);
815 }
816 
ContextPrivateAlphaFuncx(PrivateState * privateState,PrivateStateCache * privateStateCache,AlphaTestFunc func,GLfixed ref)817 inline void ContextPrivateAlphaFuncx(PrivateState *privateState,
818                                      PrivateStateCache *privateStateCache,
819                                      AlphaTestFunc func,
820                                      GLfixed ref)
821 {
822     ContextPrivateAlphaFunc(privateState, privateStateCache, func, ConvertFixedToFloat(ref));
823 }
824 
ContextPrivateClipPlanef(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum p,const GLfloat * eqn)825 inline void ContextPrivateClipPlanef(PrivateState *privateState,
826                                      PrivateStateCache *privateStateCache,
827                                      GLenum p,
828                                      const GLfloat *eqn)
829 {
830     privateState->getMutableGLES1State()->setClipPlane(p - GL_CLIP_PLANE0, eqn);
831 }
832 
ContextPrivateClipPlanex(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum plane,const GLfixed * equation)833 inline void ContextPrivateClipPlanex(PrivateState *privateState,
834                                      PrivateStateCache *privateStateCache,
835                                      GLenum plane,
836                                      const GLfixed *equation)
837 {
838     const GLfloat equationf[4] = {
839         ConvertFixedToFloat(equation[0]),
840         ConvertFixedToFloat(equation[1]),
841         ConvertFixedToFloat(equation[2]),
842         ConvertFixedToFloat(equation[3]),
843     };
844 
845     ContextPrivateClipPlanef(privateState, privateStateCache, plane, equationf);
846 }
847 
ContextPrivateColor4f(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)848 inline void ContextPrivateColor4f(PrivateState *privateState,
849                                   PrivateStateCache *privateStateCache,
850                                   GLfloat red,
851                                   GLfloat green,
852                                   GLfloat blue,
853                                   GLfloat alpha)
854 {
855     privateState->getMutableGLES1State()->setCurrentColor({red, green, blue, alpha});
856 }
857 
ContextPrivateColor4ub(PrivateState * privateState,PrivateStateCache * privateStateCache,GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)858 inline void ContextPrivateColor4ub(PrivateState *privateState,
859                                    PrivateStateCache *privateStateCache,
860                                    GLubyte red,
861                                    GLubyte green,
862                                    GLubyte blue,
863                                    GLubyte alpha)
864 {
865     ContextPrivateColor4f(privateState, privateStateCache, normalizedToFloat<uint8_t>(red),
866                           normalizedToFloat<uint8_t>(green), normalizedToFloat<uint8_t>(blue),
867                           normalizedToFloat<uint8_t>(alpha));
868 }
869 
ContextPrivateColor4x(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed red,GLfixed green,GLfixed blue,GLfixed alpha)870 inline void ContextPrivateColor4x(PrivateState *privateState,
871                                   PrivateStateCache *privateStateCache,
872                                   GLfixed red,
873                                   GLfixed green,
874                                   GLfixed blue,
875                                   GLfixed alpha)
876 {
877     ContextPrivateColor4f(privateState, privateStateCache, ConvertFixedToFloat(red),
878                           ConvertFixedToFloat(green), ConvertFixedToFloat(blue),
879                           ConvertFixedToFloat(alpha));
880 }
881 
ContextPrivateFogf(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,GLfloat param)882 inline void ContextPrivateFogf(PrivateState *privateState,
883                                PrivateStateCache *privateStateCache,
884                                GLenum pname,
885                                GLfloat param)
886 {
887     ContextPrivateFogfv(privateState, privateStateCache, pname, &param);
888 }
889 
ContextPrivateFogfv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,const GLfloat * params)890 inline void ContextPrivateFogfv(PrivateState *privateState,
891                                 PrivateStateCache *privateStateCache,
892                                 GLenum pname,
893                                 const GLfloat *params)
894 {
895     SetFogParameters(privateState->getMutableGLES1State(), pname, params);
896 }
897 
ContextPrivateFogx(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,GLfixed param)898 inline void ContextPrivateFogx(PrivateState *privateState,
899                                PrivateStateCache *privateStateCache,
900                                GLenum pname,
901                                GLfixed param)
902 {
903     if (GetFogParameterCount(pname) == 1)
904     {
905         GLfloat paramf = pname == GL_FOG_MODE ? ConvertToGLenum(param) : ConvertFixedToFloat(param);
906         ContextPrivateFogfv(privateState, privateStateCache, pname, &paramf);
907     }
908     else
909     {
910         UNREACHABLE();
911     }
912 }
913 
ContextPrivateFogxv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,const GLfixed * params)914 inline void ContextPrivateFogxv(PrivateState *privateState,
915                                 PrivateStateCache *privateStateCache,
916                                 GLenum pname,
917                                 const GLfixed *params)
918 {
919     int paramCount = GetFogParameterCount(pname);
920 
921     if (paramCount > 0)
922     {
923         GLfloat paramsf[4];
924         for (int i = 0; i < paramCount; i++)
925         {
926             paramsf[i] =
927                 pname == GL_FOG_MODE ? ConvertToGLenum(params[i]) : ConvertFixedToFloat(params[i]);
928         }
929         ContextPrivateFogfv(privateState, privateStateCache, pname, paramsf);
930     }
931     else
932     {
933         UNREACHABLE();
934     }
935 }
936 
ContextPrivateFrustumf(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat l,GLfloat r,GLfloat b,GLfloat t,GLfloat n,GLfloat f)937 inline void ContextPrivateFrustumf(PrivateState *privateState,
938                                    PrivateStateCache *privateStateCache,
939                                    GLfloat l,
940                                    GLfloat r,
941                                    GLfloat b,
942                                    GLfloat t,
943                                    GLfloat n,
944                                    GLfloat f)
945 {
946     privateState->getMutableGLES1State()->multMatrix(angle::Mat4::Frustum(l, r, b, t, n, f));
947 }
948 
ContextPrivateFrustumx(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed l,GLfixed r,GLfixed b,GLfixed t,GLfixed n,GLfixed f)949 inline void ContextPrivateFrustumx(PrivateState *privateState,
950                                    PrivateStateCache *privateStateCache,
951                                    GLfixed l,
952                                    GLfixed r,
953                                    GLfixed b,
954                                    GLfixed t,
955                                    GLfixed n,
956                                    GLfixed f)
957 {
958     ContextPrivateFrustumf(privateState, privateStateCache, ConvertFixedToFloat(l),
959                            ConvertFixedToFloat(r), ConvertFixedToFloat(b), ConvertFixedToFloat(t),
960                            ConvertFixedToFloat(n), ConvertFixedToFloat(f));
961 }
962 
ContextPrivateGetClipPlanef(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum plane,GLfloat * equation)963 inline void ContextPrivateGetClipPlanef(PrivateState *privateState,
964                                         PrivateStateCache *privateStateCache,
965                                         GLenum plane,
966                                         GLfloat *equation)
967 {
968     privateState->gles1().getClipPlane(plane - GL_CLIP_PLANE0, equation);
969 }
970 
ContextPrivateGetClipPlanex(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum plane,GLfixed * equation)971 inline void ContextPrivateGetClipPlanex(PrivateState *privateState,
972                                         PrivateStateCache *privateStateCache,
973                                         GLenum plane,
974                                         GLfixed *equation)
975 {
976     GLfloat equationf[4] = {};
977 
978     ContextPrivateGetClipPlanef(privateState, privateStateCache, plane, equationf);
979 
980     for (int i = 0; i < 4; i++)
981     {
982         equation[i] = ConvertFloatToFixed(equationf[i]);
983     }
984 }
985 
ContextPrivateGetLightfv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum light,LightParameter pname,GLfloat * params)986 inline void ContextPrivateGetLightfv(PrivateState *privateState,
987                                      PrivateStateCache *privateStateCache,
988                                      GLenum light,
989                                      LightParameter pname,
990                                      GLfloat *params)
991 {
992     GetLightParameters(privateState->getMutableGLES1State(), light, pname, params);
993 }
994 
ContextPrivateGetLightxv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum light,LightParameter pname,GLfixed * params)995 inline void ContextPrivateGetLightxv(PrivateState *privateState,
996                                      PrivateStateCache *privateStateCache,
997                                      GLenum light,
998                                      LightParameter pname,
999                                      GLfixed *params)
1000 {
1001     GLfloat paramsf[4];
1002     ContextPrivateGetLightfv(privateState, privateStateCache, light, pname, paramsf);
1003 
1004     for (unsigned int i = 0; i < GetLightParameterCount(pname); i++)
1005     {
1006         params[i] = ConvertFloatToFixed(paramsf[i]);
1007     }
1008 }
1009 
ContextPrivateGetMaterialfv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,MaterialParameter pname,GLfloat * params)1010 inline void ContextPrivateGetMaterialfv(PrivateState *privateState,
1011                                         PrivateStateCache *privateStateCache,
1012                                         GLenum face,
1013                                         MaterialParameter pname,
1014                                         GLfloat *params)
1015 {
1016     GetMaterialParameters(privateState->getMutableGLES1State(), face, pname, params);
1017 }
1018 
ContextPrivateGetMaterialxv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,MaterialParameter pname,GLfixed * params)1019 inline void ContextPrivateGetMaterialxv(PrivateState *privateState,
1020                                         PrivateStateCache *privateStateCache,
1021                                         GLenum face,
1022                                         MaterialParameter pname,
1023                                         GLfixed *params)
1024 {
1025     GLfloat paramsf[4];
1026     ContextPrivateGetMaterialfv(privateState, privateStateCache, face, pname, paramsf);
1027 
1028     for (unsigned int i = 0; i < GetMaterialParameterCount(pname); i++)
1029     {
1030         params[i] = ConvertFloatToFixed(paramsf[i]);
1031     }
1032 }
1033 
ContextPrivateGetTexEnvfv(PrivateState * privateState,PrivateStateCache * privateStateCache,TextureEnvTarget target,TextureEnvParameter pname,GLfloat * params)1034 inline void ContextPrivateGetTexEnvfv(PrivateState *privateState,
1035                                       PrivateStateCache *privateStateCache,
1036                                       TextureEnvTarget target,
1037                                       TextureEnvParameter pname,
1038                                       GLfloat *params)
1039 {
1040     GetTextureEnv(privateState->getActiveSampler(), privateState->getMutableGLES1State(), target,
1041                   pname, params);
1042 }
1043 
ContextPrivateGetTexEnviv(PrivateState * privateState,PrivateStateCache * privateStateCache,TextureEnvTarget target,TextureEnvParameter pname,GLint * params)1044 inline void ContextPrivateGetTexEnviv(PrivateState *privateState,
1045                                       PrivateStateCache *privateStateCache,
1046                                       TextureEnvTarget target,
1047                                       TextureEnvParameter pname,
1048                                       GLint *params)
1049 {
1050     GLfloat paramsf[4];
1051     ContextPrivateGetTexEnvfv(privateState, privateStateCache, target, pname, paramsf);
1052     ConvertTextureEnvToInt(pname, paramsf, params);
1053 }
1054 
ContextPrivateGetTexEnvxv(PrivateState * privateState,PrivateStateCache * privateStateCache,TextureEnvTarget target,TextureEnvParameter pname,GLfixed * params)1055 inline void ContextPrivateGetTexEnvxv(PrivateState *privateState,
1056                                       PrivateStateCache *privateStateCache,
1057                                       TextureEnvTarget target,
1058                                       TextureEnvParameter pname,
1059                                       GLfixed *params)
1060 {
1061     GLfloat paramsf[4];
1062     ContextPrivateGetTexEnvfv(privateState, privateStateCache, target, pname, paramsf);
1063     ConvertTextureEnvToFixed(pname, paramsf, params);
1064 }
1065 
ContextPrivateLightModelf(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,GLfloat param)1066 inline void ContextPrivateLightModelf(PrivateState *privateState,
1067                                       PrivateStateCache *privateStateCache,
1068                                       GLenum pname,
1069                                       GLfloat param)
1070 {
1071     ContextPrivateLightModelfv(privateState, privateStateCache, pname, &param);
1072 }
1073 
ContextPrivateLightModelfv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,const GLfloat * params)1074 inline void ContextPrivateLightModelfv(PrivateState *privateState,
1075                                        PrivateStateCache *privateStateCache,
1076                                        GLenum pname,
1077                                        const GLfloat *params)
1078 {
1079     SetLightModelParameters(privateState->getMutableGLES1State(), pname, params);
1080 }
1081 
ContextPrivateLightModelx(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,GLfixed param)1082 inline void ContextPrivateLightModelx(PrivateState *privateState,
1083                                       PrivateStateCache *privateStateCache,
1084                                       GLenum pname,
1085                                       GLfixed param)
1086 {
1087     ContextPrivateLightModelf(privateState, privateStateCache, pname, ConvertFixedToFloat(param));
1088 }
1089 
ContextPrivateLightModelxv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum pname,const GLfixed * param)1090 inline void ContextPrivateLightModelxv(PrivateState *privateState,
1091                                        PrivateStateCache *privateStateCache,
1092                                        GLenum pname,
1093                                        const GLfixed *param)
1094 {
1095     GLfloat paramsf[4];
1096 
1097     for (unsigned int i = 0; i < GetLightModelParameterCount(pname); i++)
1098     {
1099         paramsf[i] = ConvertFixedToFloat(param[i]);
1100     }
1101 
1102     ContextPrivateLightModelfv(privateState, privateStateCache, pname, paramsf);
1103 }
1104 
ContextPrivateLightf(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum light,LightParameter pname,GLfloat param)1105 inline void ContextPrivateLightf(PrivateState *privateState,
1106                                  PrivateStateCache *privateStateCache,
1107                                  GLenum light,
1108                                  LightParameter pname,
1109                                  GLfloat param)
1110 {
1111     ContextPrivateLightfv(privateState, privateStateCache, light, pname, &param);
1112 }
1113 
ContextPrivateLightfv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum light,LightParameter pname,const GLfloat * params)1114 inline void ContextPrivateLightfv(PrivateState *privateState,
1115                                   PrivateStateCache *privateStateCache,
1116                                   GLenum light,
1117                                   LightParameter pname,
1118                                   const GLfloat *params)
1119 {
1120     SetLightParameters(privateState->getMutableGLES1State(), light, pname, params);
1121 }
1122 
ContextPrivateLightx(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum light,LightParameter pname,GLfixed param)1123 inline void ContextPrivateLightx(PrivateState *privateState,
1124                                  PrivateStateCache *privateStateCache,
1125                                  GLenum light,
1126                                  LightParameter pname,
1127                                  GLfixed param)
1128 {
1129     ContextPrivateLightf(privateState, privateStateCache, light, pname, ConvertFixedToFloat(param));
1130 }
1131 
ContextPrivateLightxv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum light,LightParameter pname,const GLfixed * params)1132 inline void ContextPrivateLightxv(PrivateState *privateState,
1133                                   PrivateStateCache *privateStateCache,
1134                                   GLenum light,
1135                                   LightParameter pname,
1136                                   const GLfixed *params)
1137 {
1138     GLfloat paramsf[4];
1139 
1140     for (unsigned int i = 0; i < GetLightParameterCount(pname); i++)
1141     {
1142         paramsf[i] = ConvertFixedToFloat(params[i]);
1143     }
1144 
1145     ContextPrivateLightfv(privateState, privateStateCache, light, pname, paramsf);
1146 }
1147 
ContextPrivateLoadIdentity(PrivateState * privateState,PrivateStateCache * privateStateCache)1148 inline void ContextPrivateLoadIdentity(PrivateState *privateState,
1149                                        PrivateStateCache *privateStateCache)
1150 {
1151     privateState->getMutableGLES1State()->loadMatrix(angle::Mat4());
1152 }
1153 
ContextPrivateLoadMatrixf(PrivateState * privateState,PrivateStateCache * privateStateCache,const GLfloat * m)1154 inline void ContextPrivateLoadMatrixf(PrivateState *privateState,
1155                                       PrivateStateCache *privateStateCache,
1156                                       const GLfloat *m)
1157 {
1158     privateState->getMutableGLES1State()->loadMatrix(angle::Mat4(m));
1159 }
1160 
ContextPrivateLoadMatrixx(PrivateState * privateState,PrivateStateCache * privateStateCache,const GLfixed * m)1161 inline void ContextPrivateLoadMatrixx(PrivateState *privateState,
1162                                       PrivateStateCache *privateStateCache,
1163                                       const GLfixed *m)
1164 {
1165     privateState->getMutableGLES1State()->loadMatrix(FixedMatrixToMat4(m));
1166 }
1167 
ContextPrivateMaterialf(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,MaterialParameter pname,GLfloat param)1168 inline void ContextPrivateMaterialf(PrivateState *privateState,
1169                                     PrivateStateCache *privateStateCache,
1170                                     GLenum face,
1171                                     MaterialParameter pname,
1172                                     GLfloat param)
1173 {
1174     ContextPrivateMaterialfv(privateState, privateStateCache, face, pname, &param);
1175 }
1176 
ContextPrivateMaterialfv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,MaterialParameter pname,const GLfloat * params)1177 inline void ContextPrivateMaterialfv(PrivateState *privateState,
1178                                      PrivateStateCache *privateStateCache,
1179                                      GLenum face,
1180                                      MaterialParameter pname,
1181                                      const GLfloat *params)
1182 {
1183     SetMaterialParameters(privateState->getMutableGLES1State(), face, pname, params);
1184 }
1185 
ContextPrivateMaterialx(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,MaterialParameter pname,GLfixed param)1186 inline void ContextPrivateMaterialx(PrivateState *privateState,
1187                                     PrivateStateCache *privateStateCache,
1188                                     GLenum face,
1189                                     MaterialParameter pname,
1190                                     GLfixed param)
1191 {
1192     ContextPrivateMaterialf(privateState, privateStateCache, face, pname,
1193                             ConvertFixedToFloat(param));
1194 }
1195 
ContextPrivateMaterialxv(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum face,MaterialParameter pname,const GLfixed * param)1196 inline void ContextPrivateMaterialxv(PrivateState *privateState,
1197                                      PrivateStateCache *privateStateCache,
1198                                      GLenum face,
1199                                      MaterialParameter pname,
1200                                      const GLfixed *param)
1201 {
1202     GLfloat paramsf[4];
1203 
1204     for (unsigned int i = 0; i < GetMaterialParameterCount(pname); i++)
1205     {
1206         paramsf[i] = ConvertFixedToFloat(param[i]);
1207     }
1208 
1209     ContextPrivateMaterialfv(privateState, privateStateCache, face, pname, paramsf);
1210 }
1211 
ContextPrivateMatrixMode(PrivateState * privateState,PrivateStateCache * privateStateCache,MatrixType mode)1212 inline void ContextPrivateMatrixMode(PrivateState *privateState,
1213                                      PrivateStateCache *privateStateCache,
1214                                      MatrixType mode)
1215 {
1216     privateState->getMutableGLES1State()->setMatrixMode(mode);
1217 }
1218 
ContextPrivateMultMatrixf(PrivateState * privateState,PrivateStateCache * privateStateCache,const GLfloat * m)1219 inline void ContextPrivateMultMatrixf(PrivateState *privateState,
1220                                       PrivateStateCache *privateStateCache,
1221                                       const GLfloat *m)
1222 {
1223     privateState->getMutableGLES1State()->multMatrix(angle::Mat4(m));
1224 }
1225 
ContextPrivateMultMatrixx(PrivateState * privateState,PrivateStateCache * privateStateCache,const GLfixed * m)1226 inline void ContextPrivateMultMatrixx(PrivateState *privateState,
1227                                       PrivateStateCache *privateStateCache,
1228                                       const GLfixed *m)
1229 {
1230     privateState->getMutableGLES1State()->multMatrix(FixedMatrixToMat4(m));
1231 }
1232 
ContextPrivateMultiTexCoord4f(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)1233 inline void ContextPrivateMultiTexCoord4f(PrivateState *privateState,
1234                                           PrivateStateCache *privateStateCache,
1235                                           GLenum target,
1236                                           GLfloat s,
1237                                           GLfloat t,
1238                                           GLfloat r,
1239                                           GLfloat q)
1240 {
1241     unsigned int unit = target - GL_TEXTURE0;
1242     ASSERT(target >= GL_TEXTURE0 && unit < privateState->getCaps().maxMultitextureUnits);
1243     privateState->getMutableGLES1State()->setCurrentTextureCoords(unit, {s, t, r, q});
1244 }
1245 
ContextPrivateMultiTexCoord4x(PrivateState * privateState,PrivateStateCache * privateStateCache,GLenum texture,GLfixed s,GLfixed t,GLfixed r,GLfixed q)1246 inline void ContextPrivateMultiTexCoord4x(PrivateState *privateState,
1247                                           PrivateStateCache *privateStateCache,
1248                                           GLenum texture,
1249                                           GLfixed s,
1250                                           GLfixed t,
1251                                           GLfixed r,
1252                                           GLfixed q)
1253 {
1254     ContextPrivateMultiTexCoord4f(privateState, privateStateCache, texture, ConvertFixedToFloat(s),
1255                                   ConvertFixedToFloat(t), ConvertFixedToFloat(r),
1256                                   ConvertFixedToFloat(q));
1257 }
1258 
ContextPrivateNormal3f(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat nx,GLfloat ny,GLfloat nz)1259 inline void ContextPrivateNormal3f(PrivateState *privateState,
1260                                    PrivateStateCache *privateStateCache,
1261                                    GLfloat nx,
1262                                    GLfloat ny,
1263                                    GLfloat nz)
1264 {
1265     privateState->getMutableGLES1State()->setCurrentNormal({nx, ny, nz});
1266 }
1267 
ContextPrivateNormal3x(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed nx,GLfixed ny,GLfixed nz)1268 inline void ContextPrivateNormal3x(PrivateState *privateState,
1269                                    PrivateStateCache *privateStateCache,
1270                                    GLfixed nx,
1271                                    GLfixed ny,
1272                                    GLfixed nz)
1273 {
1274     ContextPrivateNormal3f(privateState, privateStateCache, ConvertFixedToFloat(nx),
1275                            ConvertFixedToFloat(ny), ConvertFixedToFloat(nz));
1276 }
1277 
ContextPrivateOrthof(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat left,GLfloat right,GLfloat bottom,GLfloat top,GLfloat zNear,GLfloat zFar)1278 inline void ContextPrivateOrthof(PrivateState *privateState,
1279                                  PrivateStateCache *privateStateCache,
1280                                  GLfloat left,
1281                                  GLfloat right,
1282                                  GLfloat bottom,
1283                                  GLfloat top,
1284                                  GLfloat zNear,
1285                                  GLfloat zFar)
1286 {
1287     privateState->getMutableGLES1State()->multMatrix(
1288         angle::Mat4::Ortho(left, right, bottom, top, zNear, zFar));
1289 }
1290 
ContextPrivateOrthox(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed left,GLfixed right,GLfixed bottom,GLfixed top,GLfixed zNear,GLfixed zFar)1291 inline void ContextPrivateOrthox(PrivateState *privateState,
1292                                  PrivateStateCache *privateStateCache,
1293                                  GLfixed left,
1294                                  GLfixed right,
1295                                  GLfixed bottom,
1296                                  GLfixed top,
1297                                  GLfixed zNear,
1298                                  GLfixed zFar)
1299 {
1300     ContextPrivateOrthof(privateState, privateStateCache, ConvertFixedToFloat(left),
1301                          ConvertFixedToFloat(right), ConvertFixedToFloat(bottom),
1302                          ConvertFixedToFloat(top), ConvertFixedToFloat(zNear),
1303                          ConvertFixedToFloat(zFar));
1304 }
1305 
ContextPrivatePointParameterf(PrivateState * privateState,PrivateStateCache * privateStateCache,PointParameter pname,GLfloat param)1306 inline void ContextPrivatePointParameterf(PrivateState *privateState,
1307                                           PrivateStateCache *privateStateCache,
1308                                           PointParameter pname,
1309                                           GLfloat param)
1310 {
1311     ContextPrivatePointParameterfv(privateState, privateStateCache, pname, &param);
1312 }
1313 
ContextPrivatePointParameterfv(PrivateState * privateState,PrivateStateCache * privateStateCache,PointParameter pname,const GLfloat * params)1314 inline void ContextPrivatePointParameterfv(PrivateState *privateState,
1315                                            PrivateStateCache *privateStateCache,
1316                                            PointParameter pname,
1317                                            const GLfloat *params)
1318 {
1319     SetPointParameter(privateState->getMutableGLES1State(), pname, params);
1320 }
1321 
ContextPrivatePointParameterx(PrivateState * privateState,PrivateStateCache * privateStateCache,PointParameter pname,GLfixed param)1322 inline void ContextPrivatePointParameterx(PrivateState *privateState,
1323                                           PrivateStateCache *privateStateCache,
1324                                           PointParameter pname,
1325                                           GLfixed param)
1326 {
1327     ContextPrivatePointParameterf(privateState, privateStateCache, pname,
1328                                   ConvertFixedToFloat(param));
1329 }
1330 
ContextPrivatePointParameterxv(PrivateState * privateState,PrivateStateCache * privateStateCache,PointParameter pname,const GLfixed * params)1331 inline void ContextPrivatePointParameterxv(PrivateState *privateState,
1332                                            PrivateStateCache *privateStateCache,
1333                                            PointParameter pname,
1334                                            const GLfixed *params)
1335 {
1336     GLfloat paramsf[4] = {};
1337     for (unsigned int i = 0; i < GetPointParameterCount(pname); i++)
1338     {
1339         paramsf[i] = ConvertFixedToFloat(params[i]);
1340     }
1341     ContextPrivatePointParameterfv(privateState, privateStateCache, pname, paramsf);
1342 }
1343 
ContextPrivatePointSize(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat size)1344 inline void ContextPrivatePointSize(PrivateState *privateState,
1345                                     PrivateStateCache *privateStateCache,
1346                                     GLfloat size)
1347 {
1348     SetPointSize(privateState->getMutableGLES1State(), size);
1349 }
1350 
ContextPrivatePointSizex(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed size)1351 inline void ContextPrivatePointSizex(PrivateState *privateState,
1352                                      PrivateStateCache *privateStateCache,
1353                                      GLfixed size)
1354 {
1355     ContextPrivatePointSize(privateState, privateStateCache, ConvertFixedToFloat(size));
1356 }
1357 
ContextPrivatePopMatrix(PrivateState * privateState,PrivateStateCache * privateStateCache)1358 inline void ContextPrivatePopMatrix(PrivateState *privateState,
1359                                     PrivateStateCache *privateStateCache)
1360 {
1361     privateState->getMutableGLES1State()->popMatrix();
1362 }
1363 
ContextPrivatePushMatrix(PrivateState * privateState,PrivateStateCache * privateStateCache)1364 inline void ContextPrivatePushMatrix(PrivateState *privateState,
1365                                      PrivateStateCache *privateStateCache)
1366 {
1367     privateState->getMutableGLES1State()->pushMatrix();
1368 }
1369 
ContextPrivateRotatef(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat angle,GLfloat x,GLfloat y,GLfloat z)1370 inline void ContextPrivateRotatef(PrivateState *privateState,
1371                                   PrivateStateCache *privateStateCache,
1372                                   GLfloat angle,
1373                                   GLfloat x,
1374                                   GLfloat y,
1375                                   GLfloat z)
1376 {
1377     privateState->getMutableGLES1State()->multMatrix(
1378         angle::Mat4::Rotate(angle, angle::Vector3(x, y, z)));
1379 }
1380 
ContextPrivateRotatex(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed angle,GLfixed x,GLfixed y,GLfixed z)1381 inline void ContextPrivateRotatex(PrivateState *privateState,
1382                                   PrivateStateCache *privateStateCache,
1383                                   GLfixed angle,
1384                                   GLfixed x,
1385                                   GLfixed y,
1386                                   GLfixed z)
1387 {
1388     ContextPrivateRotatef(privateState, privateStateCache, ConvertFixedToFloat(angle),
1389                           ConvertFixedToFloat(x), ConvertFixedToFloat(y), ConvertFixedToFloat(z));
1390 }
1391 
ContextPrivateScalef(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat x,GLfloat y,GLfloat z)1392 inline void ContextPrivateScalef(PrivateState *privateState,
1393                                  PrivateStateCache *privateStateCache,
1394                                  GLfloat x,
1395                                  GLfloat y,
1396                                  GLfloat z)
1397 {
1398     privateState->getMutableGLES1State()->multMatrix(angle::Mat4::Scale(angle::Vector3(x, y, z)));
1399 }
1400 
ContextPrivateScalex(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed x,GLfixed y,GLfixed z)1401 inline void ContextPrivateScalex(PrivateState *privateState,
1402                                  PrivateStateCache *privateStateCache,
1403                                  GLfixed x,
1404                                  GLfixed y,
1405                                  GLfixed z)
1406 {
1407     ContextPrivateScalef(privateState, privateStateCache, ConvertFixedToFloat(x),
1408                          ConvertFixedToFloat(y), ConvertFixedToFloat(z));
1409 }
1410 
ContextPrivateShadeModel(PrivateState * privateState,PrivateStateCache * privateStateCache,ShadingModel model)1411 inline void ContextPrivateShadeModel(PrivateState *privateState,
1412                                      PrivateStateCache *privateStateCache,
1413                                      ShadingModel model)
1414 {
1415     privateState->getMutableGLES1State()->setShadeModel(model);
1416 }
1417 
ContextPrivateTexEnvf(PrivateState * privateState,PrivateStateCache * privateStateCache,TextureEnvTarget target,TextureEnvParameter pname,GLfloat param)1418 inline void ContextPrivateTexEnvf(PrivateState *privateState,
1419                                   PrivateStateCache *privateStateCache,
1420                                   TextureEnvTarget target,
1421                                   TextureEnvParameter pname,
1422                                   GLfloat param)
1423 {
1424     ContextPrivateTexEnvfv(privateState, privateStateCache, target, pname, &param);
1425 }
1426 
ContextPrivateTexEnvfv(PrivateState * privateState,PrivateStateCache * privateStateCache,TextureEnvTarget target,TextureEnvParameter pname,const GLfloat * params)1427 inline void ContextPrivateTexEnvfv(PrivateState *privateState,
1428                                    PrivateStateCache *privateStateCache,
1429                                    TextureEnvTarget target,
1430                                    TextureEnvParameter pname,
1431                                    const GLfloat *params)
1432 {
1433     SetTextureEnv(privateState->getActiveSampler(), privateState->getMutableGLES1State(), target,
1434                   pname, params);
1435 }
1436 
ContextPrivateTexEnvi(PrivateState * privateState,PrivateStateCache * privateStateCache,TextureEnvTarget target,TextureEnvParameter pname,GLint param)1437 inline void ContextPrivateTexEnvi(PrivateState *privateState,
1438                                   PrivateStateCache *privateStateCache,
1439                                   TextureEnvTarget target,
1440                                   TextureEnvParameter pname,
1441                                   GLint param)
1442 {
1443     ContextPrivateTexEnviv(privateState, privateStateCache, target, pname, &param);
1444 }
1445 
ContextPrivateTexEnviv(PrivateState * privateState,PrivateStateCache * privateStateCache,TextureEnvTarget target,TextureEnvParameter pname,const GLint * params)1446 inline void ContextPrivateTexEnviv(PrivateState *privateState,
1447                                    PrivateStateCache *privateStateCache,
1448                                    TextureEnvTarget target,
1449                                    TextureEnvParameter pname,
1450                                    const GLint *params)
1451 {
1452     GLfloat paramsf[4] = {};
1453     ConvertTextureEnvFromInt(pname, params, paramsf);
1454     ContextPrivateTexEnvfv(privateState, privateStateCache, target, pname, paramsf);
1455 }
1456 
ContextPrivateTexEnvx(PrivateState * privateState,PrivateStateCache * privateStateCache,TextureEnvTarget target,TextureEnvParameter pname,GLfixed param)1457 inline void ContextPrivateTexEnvx(PrivateState *privateState,
1458                                   PrivateStateCache *privateStateCache,
1459                                   TextureEnvTarget target,
1460                                   TextureEnvParameter pname,
1461                                   GLfixed param)
1462 {
1463     ContextPrivateTexEnvxv(privateState, privateStateCache, target, pname, &param);
1464 }
1465 
ContextPrivateTexEnvxv(PrivateState * privateState,PrivateStateCache * privateStateCache,TextureEnvTarget target,TextureEnvParameter pname,const GLfixed * params)1466 inline void ContextPrivateTexEnvxv(PrivateState *privateState,
1467                                    PrivateStateCache *privateStateCache,
1468                                    TextureEnvTarget target,
1469                                    TextureEnvParameter pname,
1470                                    const GLfixed *params)
1471 {
1472     GLfloat paramsf[4] = {};
1473     ConvertTextureEnvFromFixed(pname, params, paramsf);
1474     ContextPrivateTexEnvfv(privateState, privateStateCache, target, pname, paramsf);
1475 }
1476 
ContextPrivateTranslatef(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfloat x,GLfloat y,GLfloat z)1477 inline void ContextPrivateTranslatef(PrivateState *privateState,
1478                                      PrivateStateCache *privateStateCache,
1479                                      GLfloat x,
1480                                      GLfloat y,
1481                                      GLfloat z)
1482 {
1483     privateState->getMutableGLES1State()->multMatrix(
1484         angle::Mat4::Translate(angle::Vector3(x, y, z)));
1485 }
1486 
ContextPrivateTranslatex(PrivateState * privateState,PrivateStateCache * privateStateCache,GLfixed x,GLfixed y,GLfixed z)1487 inline void ContextPrivateTranslatex(PrivateState *privateState,
1488                                      PrivateStateCache *privateStateCache,
1489                                      GLfixed x,
1490                                      GLfixed y,
1491                                      GLfixed z)
1492 {
1493     ContextPrivateTranslatef(privateState, privateStateCache, ConvertFixedToFloat(x),
1494                              ConvertFixedToFloat(y), ConvertFixedToFloat(z));
1495 }
1496 }  // namespace gl
1497