UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
OpenGLES.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 OpenGLES2.h: Public OpenGL ES 2.0 definitions for non-common functionality
5=============================================================================*/
6
7#pragma once
8
9#include "OpenGLPlatform.h"
10
11#if UGL_PLATFORM_SUPPORTS_GLES
12
13#include "OpenGLBase.h"
14#include "OpenGLUtil.h" // for VERIFY_GL
15
17{
19}
20
21struct FOpenGLES : public FOpenGLBase
22{
23 static FORCEINLINE bool IsES31Usable()
24 {
25 check(CurrentFeatureLevelSupport != EFeatureLevelSupport::Invalid);
26 return CurrentFeatureLevelSupport >= EFeatureLevelSupport::ES31;
27 }
28
29 static FORCEINLINE bool IsES32Usable()
30 {
31 check(CurrentFeatureLevelSupport != EFeatureLevelSupport::Invalid);
32 return CurrentFeatureLevelSupport == EFeatureLevelSupport::ES32;
33 }
34
35 static void ProcessQueryGLInt();
36 static void ProcessExtensions(const FString& ExtensionsString);
37
38 static FORCEINLINE bool SupportsUniformBuffers() { return true; }
39 static FORCEINLINE bool SupportsStructuredBuffers() { return true; }
40 static FORCEINLINE bool SupportsExactOcclusionQueries() { return false; }
41 // MLCHANGES BEGIN -- changed to use bSupportsDisjointTimeQueries
43 // MLCHANGES END
44 static bool SupportsDisjointTimeQueries();
45 static FORCEINLINE bool SupportsDepthStencilRead() { return false; }
47 static FORCEINLINE bool SupportsWideMRT() { return true; }
48 static FORCEINLINE bool SupportsPolygonMode() { return false; }
49 static FORCEINLINE bool SupportsTexture3D() { return true; }
50 static FORCEINLINE bool SupportsMobileMultiView() { return bSupportsMobileMultiView; }
51 static FORCEINLINE bool SupportsImageExternal() { return false; }
52 static FORCEINLINE bool SupportsTextureLODBias() { return false; }
53 static FORCEINLINE bool SupportsTextureCompare() { return false; }
54 static FORCEINLINE bool SupportsDrawIndexOffset() { return false; }
55 static FORCEINLINE bool SupportsDiscardFrameBuffer() { return true; }
56 static FORCEINLINE bool SupportsIndexedExtensions() { return false; }
59 static FORCEINLINE bool SupportsShaderFramebufferFetch() { return bSupportsShaderFramebufferFetch; }
65 static FORCEINLINE bool SupportsVertexArrayBGRA() { return false; }
66 static FORCEINLINE bool SupportsBGRA8888() { return bSupportsBGRA8888; }
67 static FORCEINLINE bool SupportsDXT() { return false; }
68 static FORCEINLINE bool SupportsETC2() { return bSupportsETC2; }
71 static FORCEINLINE bool SupportsFramebufferSRGBEnable() { return false; }
72 static FORCEINLINE bool SupportsRGB10A2() { return bSupportsRGB10A2; }
73 static FORCEINLINE bool SupportsDrawIndirect() { return true; }
75 static FORCEINLINE bool SupportsDepthClamp() { return bSupportsDepthClamp; }
76
77
79 static FORCEINLINE bool RequiresDisabledEarlyFragmentTests() { return bRequiresDisabledEarlyFragmentTests; }
80 static FORCEINLINE bool RequiresReadOnlyBuffersWorkaround() { return bRequiresReadOnlyBuffersWorkaround; }
81 static FORCEINLINE bool RequiresPreciseQualifierWorkaround() { return bRequiresPreciseQualifierWorkaround; }
82 static FORCEINLINE bool RequiresARMShaderFramebufferFetchDepthStencilUndef() { return bRequiresARMShaderFramebufferFetchDepthStencilUndef; }
83
84 // Adreno doesn't support HALF_FLOAT
87
88 // On iOS both glMapBufferOES() and glBufferSubData() for immediate vertex and index data
89 // is the slow path (they both hit GPU sync and data cache flush in driver according to profiling in driver symbols).
90 // Turning this to false reverts back to not using vertex and index buffers
91 // for glDrawArrays() and glDrawElements() on dynamic data.
92 static FORCEINLINE bool SupportsFastBufferData() { return false; }
93
95
96 // Optional
97 static FORCEINLINE void BeginQuery(GLenum QueryType, GLuint QueryId)
98 {
99 glBeginQuery(QueryType, QueryId);
100 }
101
102 static FORCEINLINE void EndQuery(GLenum QueryType)
103 {
104 glEndQuery(QueryType);
105 }
106
107 static FORCEINLINE void GenQueries(GLsizei NumQueries, GLuint* QueryIDs)
108 {
109 glGenQueries(NumQueries, QueryIDs);
110 }
111
112 static FORCEINLINE void DeleteQueries(GLsizei NumQueries, const GLuint* QueryIDs)
113 {
114 glDeleteQueries(NumQueries, QueryIDs);
115 }
116
117 static FORCEINLINE void QueryTimestampCounter(GLuint QueryID)
118 {
120 }
121
122 using FOpenGLBase::GetQueryObject;
123
124 static FORCEINLINE void GetQueryObject(GLuint QueryId, EQueryMode QueryMode, GLuint* OutResult)
125 {
126 GLenum QueryName = (QueryMode == QM_Result) ? GL_QUERY_RESULT : GL_QUERY_RESULT_AVAILABLE;
128 }
129
130 static FORCEINLINE void GetQueryObject(GLuint QueryId, EQueryMode QueryMode, GLuint64* OutResult)
131 {
132 GLenum QueryName = (QueryMode == QM_Result) ? GL_QUERY_RESULT : GL_QUERY_RESULT_AVAILABLE;
134 }
135
136 static FORCEINLINE void LabelObject(GLenum Type, GLuint Object, const ANSICHAR* Name)
137 {
138 if (glLabelObjectEXT != nullptr)
139 {
140 glLabelObjectEXT(Type, Object, 0, Name);
141 }
142 }
143
145 {
146 GLsizei Length = 0;
147 if (glGetObjectLabelEXT != nullptr)
148 {
149 glGetObjectLabelEXT(Type, Object, BufferSize, &Length, OutName);
150 }
151 return Length;
152 }
153
154 static FORCEINLINE void PushGroupMarker(const ANSICHAR* Name)
155 {
156 if (glPushGroupMarkerEXT != nullptr)
157 {
159 }
160 }
161
162 static FORCEINLINE void PopGroupMarker()
163 {
164 if (glPopGroupMarkerEXT != nullptr)
165 {
167 }
168 }
169
170 static FORCEINLINE void* MapBufferRange(GLenum Type, uint32 InOffset, uint32 InSize, EResourceLockMode LockMode)
171 {
172 GLenum Access;
173 switch (LockMode)
174 {
176 Access = GL_MAP_READ_BIT;
177 break;
180 break;
183 break;
186 break;
189 break;
191 default:
193 }
194 return glMapBufferRange(Type, InOffset, InSize, Access);
195 }
196
197 static FORCEINLINE void UnmapBuffer(GLenum Type)
198 {
199 glUnmapBuffer(Type);
200 }
201
202 static FORCEINLINE void UnmapBufferRange(GLenum Type, uint32 InOffset, uint32 InSize)
203 {
204 UnmapBuffer(Type);
205 }
206
207 static FORCEINLINE void TexImage3D(GLenum Target, GLint Level, GLint InternalFormat, GLsizei Width, GLsizei Height, GLsizei Depth, GLint Border, GLenum Format, GLenum Type, const GLvoid* PixelData)
208 {
209 glTexImage3D(Target, Level, InternalFormat, Width, Height, Depth, Border, Format, Type, PixelData);
210 }
211
212 static FORCEINLINE void CompressedTexImage3D(GLenum Target, GLint Level, GLenum InternalFormat, GLsizei Width, GLsizei Height, GLsizei Depth, GLint Border, GLsizei ImageSize, const GLvoid* PixelData)
213 {
214 glCompressedTexImage3D(Target, Level, InternalFormat, Width, Height, Depth, Border, ImageSize, PixelData);
215 }
216
217 static FORCEINLINE void CompressedTexSubImage3D(GLenum Target, GLint Level, GLint XOffset, GLint YOffset, GLint ZOffset, GLsizei Width, GLsizei Height, GLsizei Depth, GLenum Format, GLsizei ImageSize, const GLvoid* PixelData)
218 {
219 glCompressedTexSubImage3D( Target, Level, XOffset, YOffset, ZOffset, Width, Height, Depth, Format, ImageSize, PixelData);
220 }
221
222 static FORCEINLINE void TexSubImage3D(GLenum Target, GLint Level, GLint XOffset, GLint YOffset, GLint ZOffset, GLsizei Width, GLsizei Height, GLsizei Depth, GLenum Format, GLenum Type, const GLvoid* PixelData)
223 {
224 glTexSubImage3D(Target, Level, XOffset, YOffset, ZOffset, Width, Height, Depth, Format, Type, PixelData);
225 }
226
227 static FORCEINLINE void CopyTexSubImage1D(GLenum Target, GLint Level, GLint XOffset, GLint X, GLint Y, GLsizei Width)
228 {
229 }
230
231 static FORCEINLINE void CopyTexSubImage2D(GLenum Target, GLint Level, GLint XOffset, GLint YOffset, GLint X, GLint Y, GLsizei Width, GLsizei Height)
232 {
233 glCopyTexSubImage2D(Target, Level, XOffset, YOffset, X, Y, Width, Height);
234 }
235
236 static FORCEINLINE void CopyTexSubImage3D(GLenum Target, GLint Level, GLint XOffset, GLint YOffset, GLint ZOffset, GLint X, GLint Y, GLsizei Width, GLsizei Height)
237 {
238 glCopyTexSubImage3D(Target, Level, XOffset, YOffset, ZOffset, X, Y, Width, Height);
239 }
240
242 {
243 glCopyImageSubData(SrcName, SrcTarget, SrcLevel, SrcX, SrcY, SrcZ, DstName, DstTarget, DstLevel, DstX, DstY, DstZ, Width, Height, Depth);
244 }
245
246 static FORCEINLINE bool TexStorage2DMultisample(GLenum Target, GLsizei Samples, GLint InternalFormat, GLsizei Width, GLsizei Height, GLboolean FixedSampleLocations)
247 {
248 glTexStorage2DMultisample(Target, Samples, InternalFormat, Width, Height, FixedSampleLocations);
249 return true;
250 }
251
252 static FORCEINLINE void RenderbufferStorageMultisample(GLenum Target, GLsizei Samples, GLint InternalFormat, GLsizei Width, GLsizei Height)
253 {
254 check(glRenderbufferStorageMultisampleEXT);
255 glRenderbufferStorageMultisampleEXT(Target, Samples, InternalFormat, Width, Height);
256 }
257
258 static FORCEINLINE void ClearBufferfv(GLenum Buffer, GLint DrawBufferIndex, const GLfloat* Value)
259 {
260 glClearBufferfv(Buffer, DrawBufferIndex, Value);
261 }
262
263 static FORCEINLINE void ClearBufferfi(GLenum Buffer, GLint DrawBufferIndex, GLfloat Depth, GLint Stencil)
264 {
265 glClearBufferfi(Buffer, DrawBufferIndex, Depth, Stencil);
266 }
267
268 static FORCEINLINE void ClearBufferiv(GLenum Buffer, GLint DrawBufferIndex, const GLint* Value)
269 {
270 glClearBufferiv(Buffer, DrawBufferIndex, Value);
271 }
272
273 static FORCEINLINE void DrawBuffers(GLsizei NumBuffers, const GLenum* Buffers)
274 {
275 glDrawBuffers(NumBuffers, Buffers);
276 }
277
278 static FORCEINLINE void ReadBuffer(GLenum Mode)
279 {
280 glReadBuffer(Mode);
281 }
282
283 static FORCEINLINE void DrawBuffer(GLenum Mode)
284 {
285 DrawBuffers(1, &Mode);
286 }
287
288 static FORCEINLINE void EnableIndexed(GLenum Parameter, GLuint Index)
289 {
290 if (bSupportsDrawBuffersBlend)
291 {
292 // ES 3.2 or extension
293 glEnableiEXT(Parameter, Index);
294 }
295 else
296 {
297 check(Index == 0);
298 glEnable(Parameter);
299 }
300 }
301 static FORCEINLINE void DisableIndexed(GLenum Parameter, GLuint Index)
302 {
303 if (bSupportsDrawBuffersBlend)
304 {
305 // ES 3.2 or extension
306 glDisableiEXT(Parameter, Index);
307 }
308 else
309 {
310 check(Index == 0);
311 glDisable(Parameter);
312 }
313 }
315 {
316 if (bSupportsDrawBuffersBlend)
317 {
318 // ES 3.2 or extension
320 }
321 else
322 {
323 check(Index == 0);
325 }
326 }
327 static FORCEINLINE void BlendEquationi(GLuint Buf, GLenum Mode)
328 {
329 // ES 3.2 or extension
331 }
333 {
334 // ES 3.2 or extension
336 }
337 static FORCEINLINE void BlendFunci(GLuint Buf, GLenum Src, GLenum Dst)
338 {
339 // ES 3.2 or extension
340 glBlendFunciEXT(Buf, Src, Dst);
341 }
343 {
344 // ES 3.2 or extension
346 }
347
348 static FORCEINLINE void TexBuffer(GLenum Target, GLenum InternalFormat, GLuint Buffer)
349 {
350 // ES 3.2 or extension
351 glTexBufferEXT(Target, InternalFormat, Buffer);
352 }
353
354 static FORCEINLINE void TexBufferRange(GLenum Target, GLenum InternalFormat, GLuint Buffer, GLintptr Offset, GLsizeiptr Size)
355 {
356 // ES 3.2 or extension
357 glTexBufferRangeEXT(Target, InternalFormat, Buffer, Offset, Size);
358 }
359
361 {
362 glUniform4uiv(Location, Count, Value);
363 }
364
366
367 static FORCEINLINE void GetProgramBinary(GLuint Program, GLsizei BufSize, GLsizei* Length, GLenum* BinaryFormat, void* Binary)
368 {
369 glGetProgramBinary(Program, BufSize, Length, BinaryFormat, Binary);
370 }
371
372 static FORCEINLINE void ProgramBinary(GLuint Program, GLenum BinaryFormat, const void* Binary, GLsizei Length)
373 {
374 glProgramBinary(Program, BinaryFormat, Binary, Length);
375 }
376
378 {
380 }
381
383 {
384 glBindBufferBase(Target, Index, Buffer);
385 }
386
388 {
390 }
391
393 {
395 }
396
398 {
400 }
401
402 static FORCEINLINE void BufferSubData(GLenum Target, GLintptr Offset, GLsizeiptr Size, const GLvoid* Data)
403 {
404 glBufferSubData(Target, Offset, Size, Data);
405 }
406
407 static FORCEINLINE void VertexAttribIPointer(GLuint Index, GLint Size, GLenum Type, GLsizei Stride, const GLvoid* Pointer)
408 {
409 glVertexAttribIPointer(Index, Size, Type, Stride, Pointer);
410 }
411
412 static FORCEINLINE void GenSamplers(GLsizei Count, GLuint* Samplers)
413 {
414 glGenSamplers(Count, Samplers);
415 }
416
417 static FORCEINLINE void DeleteSamplers(GLsizei Count, GLuint* Samplers)
418 {
419 glDeleteSamplers(Count, Samplers);
420 }
421
423 {
424 glSamplerParameteri(Sampler, Parameter, Value);
425 }
426
427 static FORCEINLINE void BindSampler(GLuint Unit, GLuint Sampler)
428 {
429 glBindSampler(Unit, Sampler);
430 }
431
432 static FORCEINLINE void MemoryBarrier(GLbitfield Barriers)
433 {
434 glMemoryBarrier(Barriers);
435 }
436
438 {
440 }
441
443 {
445 }
446
448 {
449 glBindImageTexture(Unit, Texture, Level, Layered, Layer, Access, Format);
450 }
451
453 {
455 }
456
457 static FORCEINLINE void VertexAttribPointer(GLuint Index, GLint Size, GLenum Type, GLboolean Normalized, GLsizei Stride, const GLvoid* Pointer)
458 {
459 Size = (Size == GL_BGRA) ? 4 : Size;
460 glVertexAttribPointer(Index, Size, Type, Normalized, Stride, Pointer);
461 }
462
463 static FORCEINLINE void ClearDepth(GLdouble Depth)
464 {
466 }
467
468 static FORCEINLINE void GenerateMipmap( GLenum Target )
469 {
470 glGenerateMipmap( Target);
471 }
472
473 static FORCEINLINE GLuint GetMajorVersion()
474 {
475 return 3;
476 }
477
478 static FORCEINLINE GLuint GetMinorVersion()
479 {
480 return 1;
481 }
482
483 static FORCEINLINE EShaderPlatform GetShaderPlatform()
484 {
486 }
487
488 static FORCEINLINE ERHIFeatureLevel::Type GetFeatureLevel()
489 {
491 }
492
493 static FORCEINLINE FString GetAdapterName()
494 {
496 }
497
498 static FORCEINLINE void TexParameter(GLenum Target, GLenum Parameter, GLint Value)
499 {
500 glTexParameteri(Target, Parameter, Value);
501 }
502
503 static FORCEINLINE void FramebufferTexture(GLenum Target, GLenum Attachment, GLuint Texture, GLint Level)
504 {
505 // ES 3.2
506 glFramebufferTexture(Target, Attachment, Texture, Level);
507 }
508
509 static FORCEINLINE void FramebufferTexture3D(GLenum Target, GLenum Attachment, GLenum TexTarget, GLuint Texture, GLint Level, GLint ZOffset)
510 {
511 // glFramebufferTexture3D is not supported on GLES
512 glFramebufferTextureLayer(Target, Attachment, Texture, Level, ZOffset);
513 }
514
515 static FORCEINLINE void FramebufferTextureLayer(GLenum Target, GLenum Attachment, GLuint Texture, GLint Level, GLint Layer)
516 {
517 glFramebufferTextureLayer(Target, Attachment, Texture, Level, Layer);
518 }
519
520 static FORCEINLINE void FramebufferTexture2D(GLenum Target, GLenum Attachment, GLenum TexTarget, GLuint Texture, GLint Level)
521 {
522 check(Attachment == GL_COLOR_ATTACHMENT0 ||
523 Attachment == GL_DEPTH_ATTACHMENT ||
524 Attachment == GL_STENCIL_ATTACHMENT ||
525 Attachment == GL_DEPTH_STENCIL_ATTACHMENT ||
526 (Attachment >= GL_COLOR_ATTACHMENT0 && Attachment <= GL_COLOR_ATTACHMENT7));
527
528 glFramebufferTexture2D(Target, Attachment, TexTarget, Texture, Level);
530 }
531
532 static FORCEINLINE void FramebufferTexture2DMultisample(GLenum Target, GLenum Attachment, GLenum TexTarget, GLuint Texture, GLint Level, GLint NumSamples)
533 {
534 check(glFramebufferTexture2DMultisampleEXT != nullptr);
535 glFramebufferTexture2DMultisampleEXT(Target, Attachment, TexTarget, Texture, Level, NumSamples);
536 }
537
538 static FORCEINLINE void FramebufferTextureMultiviewOVR(GLenum Target, GLenum Attachment, GLuint Texture, GLint Level, GLint BaseViewIndex, GLsizei NumViews)
539 {
540 check(glFramebufferTextureMultiviewOVR);
541 glFramebufferTextureMultiviewOVR(Target, Attachment, Texture, Level, BaseViewIndex, NumViews);
542 }
543
544 static FORCEINLINE void FramebufferTextureMultisampleMultiviewOVR(GLenum Target, GLenum Attachment, GLuint Texture, GLint Level, GLsizei NumSamples, GLint BaseViewIndex, GLsizei NumViews)
545 {
546 check(glFramebufferTextureMultisampleMultiviewOVR);
547 glFramebufferTextureMultisampleMultiviewOVR(Target, Attachment, Texture, Level, NumSamples, BaseViewIndex, NumViews);
548 }
549
551 {
553 }
554
555 static FORCEINLINE bool TexStorage2D(GLenum Target, GLint Levels, GLint InternalFormat, GLsizei Width, GLsizei Height, GLenum Format, GLenum Type, ETextureCreateFlags Flags)
556 {
557 glTexStorage2D(Target, Levels, InternalFormat, Width, Height);
559 return true;
560 }
561
562 static FORCEINLINE void DrawArraysInstanced(GLenum Mode, GLint First, GLsizei Count, GLsizei InstanceCount)
563 {
564 glDrawArraysInstanced(Mode, First, Count, InstanceCount);
565 }
566
567 static FORCEINLINE void DrawElementsInstanced(GLenum Mode, GLsizei Count, GLenum Type, const GLvoid* Indices, GLsizei InstanceCount)
568 {
569 glDrawElementsInstanced(Mode, Count, Type, Indices, InstanceCount);
570 }
571
572 static FORCEINLINE void CopyBufferSubData(GLenum ReadTarget, GLenum WriteTarget, GLintptr ReadOffset, GLintptr WriteOffset, GLsizeiptr Size)
573 {
574 glCopyBufferSubData(ReadTarget, WriteTarget, ReadOffset, WriteOffset, Size);
575 }
576
577 static FORCEINLINE void DrawArraysIndirect(GLenum Mode, const void* Offset)
578 {
580 }
581
582 static FORCEINLINE void DrawElementsIndirect(GLenum Mode, GLenum Type, const void* Offset)
583 {
584 glDrawElementsIndirect(Mode, Type, Offset);
585 }
586
588 {
590 }
591
592 static FORCEINLINE void TexStorage3D(GLenum Target, GLint Levels, GLint InternalFormat, GLsizei Width, GLsizei Height, GLsizei Depth, GLenum Format, GLenum Type)
593 {
594 glTexStorage3D(Target, Levels, InternalFormat, Width, Height, Depth);
595 }
596
597 static FPlatformOpenGLDevice* CreateDevice() UGL_REQUIRED(NULL)
598 static FPlatformOpenGLContext* CreateContext(FPlatformOpenGLDevice* Device, void* WindowHandle) UGL_REQUIRED(NULL)
599
600 static FORCEINLINE void InvalidateFramebuffer(GLenum Target, GLsizei NumAttachments, const GLenum* Attachments)
601 {
602 glInvalidateFramebuffer(Target, NumAttachments, Attachments);
603 }
604
606 {
608 }
609
611 {
613 }
614
615 static FORCEINLINE bool TimerQueryDisjoint()
616 {
617 bool Disjoint = false;
618
620 {
621 GLint WasDisjoint = 0;
623 Disjoint = (WasDisjoint != 0);
624 }
625
626 return Disjoint;
627 }
628
629 static FORCEINLINE void BindVertexBuffer(GLuint BindingIndex, GLuint Buffer, GLintptr Offset, GLsizei Stride)
630 {
631 glBindVertexBuffer(BindingIndex, Buffer, Offset, Stride);
632 }
634 {
635 glVertexAttribFormat(AttribIndex, Size, Type, Normalized, RelativeOffset);
636 }
637 static FORCEINLINE void VertexAttribIFormat(GLuint AttribIndex, GLint Size, GLenum Type, GLuint RelativeOffset)
638 {
639 glVertexAttribIFormat(AttribIndex, Size, Type, RelativeOffset);
640 }
641 static FORCEINLINE void VertexAttribBinding(GLuint AttribIndex, GLuint BindingIndex)
642 {
643 glVertexAttribBinding(AttribIndex, BindingIndex);
644 }
645 static FORCEINLINE void VertexBindingDivisor(GLuint BindingIndex, GLuint Divisor)
646 {
647 glVertexBindingDivisor(BindingIndex, Divisor);
648 }
649
650 static FORCEINLINE void BufferStorage(GLenum Target, GLsizeiptr Size, const void* Data, GLbitfield Flags)
651 {
652 glBufferStorageEXT(Target, Size, Data, Flags);
653 }
654protected:
657
659 static bool bTimerQueryCanBeDisjoint;
660
662 static bool bSupportsBGRA8888;
663
665 static bool bSupportsETC2;
666
668 static bool bSupportsColorBufferFloat;
669
672
674 static bool bSupportsShaderFramebufferFetch;
675
678
679
682
685
687 static bool bSupportsPixelLocalStorage;
688
690 static int ShaderLowPrecision;
691
693 static int ShaderMediumPrecision;
694
696 static int ShaderHighPrecision;
697
699 static bool bSupportsNVFrameBufferBlit;
700
703
706
708 static bool bSupportsASTCDecodeMode;
709
710public:
711 /* This indicates failure when attempting to retrieve driver's binary representation of the hack program */
713
714 /* Some Mali devices do not work correctly with early_fragment_test enabled */
715 static bool bRequiresDisabledEarlyFragmentTests;
716
717 /* This is a workaround for a Mali bug where read-only buffers do not work when passed to functions*/
718 static bool bRequiresReadOnlyBuffersWorkaround;
719
720 /* This is a workaround for Samsung xclipse that fails to compile shaders that use the 'precise' qualifier*/
721 static bool bRequiresPreciseQualifierWorkaround;
722
723 /* This is to avoid a bug in Adreno drivers that define GL_ARM_shader_framebuffer_fetch_depth_stencil even when device does not support this extension */
724 static bool bRequiresARMShaderFramebufferFetchDepthStencilUndef;
725
728
730 static bool bSupportsRGB10A2;
731
733 static bool bSupportsProgramBinary;
734
736 static bool bSupportsBufferStorage;
737
739 static bool bSupportsDepthClamp;
740
741 enum class EFeatureLevelSupport : uint8
742 {
743 Invalid, // no feature level has yet been determined
744 ES2,
745 ES31,
746 ES32
747 };
748
751
754
756 static bool bSupportsMobileMultiView;
757
759
762 static GLint MaxPixelUAVUnits;
763};
764
765#endif // UGL_PLATFORM_SUPPORTS_GLES
#define NULL
Definition oodle2base.h:134
typedef GLboolean(GL_APIENTRYP PFNeglPresentationTimeANDROID)(EGLDisplay dpy
#define GLdouble
Definition AndroidOpenGLPlatform.h:12
#define GL_BGRA
Definition AndroidOpenGLPlatform.h:61
khronos_uint64_t GLuint64
Definition AndroidOpenGLPlatform.h:14
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define X(Name, Desc)
Definition FormatStringSan.h:47
#define UGL_REQUIRED(ReturnValue)
Definition OpenGLBase.h:20
#define GL_GPU_DISJOINT_EXT
Definition OpenGLPlatform.h:220
#define GL_MAP_COHERENT_BIT
Definition OpenGLPlatform.h:165
#define GL_MAP_PERSISTENT_BIT
Definition OpenGLPlatform.h:162
#define GL_MAP_WRITE_BIT
Definition OpenGLPlatform.h:159
#define GL_TIMESTAMP_EXT
Definition OpenGLPlatform.h:150
#define VERIFY_GL(...)
Definition OpenGLUtil.h:132
EResourceLockMode
Definition RHIDefinitions.h:785
ETextureCreateFlags
Definition RHIDefinitions.h:1091
EShaderPlatform
Definition RHIShaderPlatform.h:11
@ SP_OPENGL_ES3_1_ANDROID
Definition RHIShaderPlatform.h:25
void SetSamplerParameter(FRHIBatchedShaderParameters &BatchedParameters, const FShaderResourceParameter &Parameter, FRHISamplerState *SamplerStateRHI)
Definition ShaderParameterUtils.h:94
#define ANSI_TO_TCHAR(str)
Definition StringConv.h:1020
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition OpenGLBase.h:38
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void DeleteSamplers(GLsizei Count, GLuint *Samplers) UGL_OPTIONAL_VOID static FORCEINLINE void SetSamplerParameter(GLuint Sampler
static FORCEINLINE bool SupportsColorBufferFloat()
Definition OpenGLBase.h:85
static FORCEINLINE bool SupportsIndexedExtensions()
Definition OpenGLBase.h:84
static FORCEINLINE bool SupportsShaderFramebufferFetchProgrammableBlending()
Definition OpenGLBase.h:89
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void GLuint Index static UGL_REQUIRED_VOID FORCEINLINE void GLboolean GLboolean GLboolean GLboolean Alpha static UGL_REQUIRED_VOID FORCEINLINE void GLint GLenum GLsizei const GLvoid *Pointer static UGL_REQUIRED_VOID FORCEINLINE void const GLshort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLushort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLubyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLint *Values static UGL_REQUIRED_VOID FORCEINLINE void GLint GLsizei GLsizei InstanceCount static UGL_REQUIRED_VOID FORCEINLINE void DrawElementsInstanced(GLenum Mode, GLsizei Count, GLenum Type, const GLvoid *Indices, GLsizei InstanceCount) UGL_REQUIRED_VOID static FORCEINLINE void DrawRangeElements(GLenum Mode
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void GLenum GLint Value static UGL_OPTIONAL_VOID FORCEINLINE void GLenum Mode static UGL_OPTIONAL_VOID FORCEINLINE void VertexAttribDivisor(GLuint Index, GLuint Divisor) UGL_OPTIONAL_VOID static FORCEINLINE void PushGroupMarker(const ANSICHAR *Name) UGL_OPTIONAL_VOID static FORCEINLINE void PopGroupMarker() UGL_OPTIONAL_VOID static FORCEINLINE void LabelObject(GLenum Type
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void GLuint Index static UGL_REQUIRED_VOID FORCEINLINE void DisableIndexed(GLenum Parameter, GLuint Index) UGL_REQUIRED_VOID static FORCEINLINE void ColorMaskIndexed(GLuint Index
static FORCEINLINE bool SupportsImageExternal()
Definition OpenGLBase.h:79
static FORCEINLINE bool SupportsBufferStorage()
Definition OpenGLBase.h:107
static FORCEINLINE bool SupportsExactOcclusionQueries()
Definition OpenGLBase.h:72
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void GLenum GLint Value static UGL_OPTIONAL_VOID FORCEINLINE void GLenum Mode static UGL_OPTIONAL_VOID FORCEINLINE void GLuint const ANSICHAR *Name static UGL_OPTIONAL_VOID FORCEINLINE GLsizei GLsizei const GLenum *Attachments static UGL_OPTIONAL_VOID FORCEINLINE void uint32 uint32 InSize static UGL_REQUIRED_VOID FORCEINLINE void GLuint *QueryIDs static UGL_REQUIRED_VOID FORCEINLINE void EQueryMode GLuint *OutResult static UGL_REQUIRED_VOID FORCEINLINE void BindBufferBase(GLenum Target, GLuint Index, GLuint Buffer) UGL_REQUIRED_VOID static FORCEINLINE void BindBufferRange(GLenum Target
static FORCEINLINE bool SupportsDepthClamp()
Definition OpenGLBase.h:113
static FORCEINLINE bool SupportsShaderMRTFramebufferFetch()
Definition OpenGLBase.h:90
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void GLuint Index static UGL_REQUIRED_VOID FORCEINLINE void GLboolean GLboolean GLboolean GLboolean Alpha static UGL_REQUIRED_VOID FORCEINLINE void GLint GLenum GLsizei const GLvoid *Pointer static UGL_REQUIRED_VOID FORCEINLINE void const GLshort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLushort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLubyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLint *Values static UGL_REQUIRED_VOID FORCEINLINE void GLint GLsizei GLsizei InstanceCount static UGL_REQUIRED_VOID FORCEINLINE void GLuint GLuint GLsizei GLenum const GLvoid *Indices static UGL_REQUIRED_VOID FORCEINLINE void GLint GLfloat GLint Stencil static UGL_REQUIRED_VOID FORCEINLINE void GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid *PixelData static UGL_REQUIRED_VOID FORCEINLINE void CompressedTexImage3D(GLenum Target, GLint Level, GLenum InternalFormat, GLsizei Width, GLsizei Height, GLsizei Depth, GLint Border, GLsizei ImageSize, const GLvoid *PixelData) UGL_REQUIRED_VOID static FORCEINLINE void TexImage2DMultisample(GLenum Target
static FORCEINLINE bool SupportsETC2()
Definition OpenGLBase.h:98
static FORCEINLINE bool TimerQueryDisjoint()
Definition OpenGLBase.h:328
static FORCEINLINE bool SupportsStructuredBuffers()
Definition OpenGLBase.h:69
static FORCEINLINE GLenum GetShadowDepthFormat()
Definition OpenGLBase.h:118
static FORCEINLINE void BufferSubData(GLenum Target, GLintptr Offset, GLsizeiptr Size, const GLvoid *Data)
Definition OpenGLBase.h:322
static FORCEINLINE GLenum GetDepthFormat()
Definition OpenGLBase.h:117
static FORCEINLINE bool SupportsBGRA8888()
Definition OpenGLBase.h:94
static FORCEINLINE bool SupportsTextureCompare()
Definition OpenGLBase.h:81
static FORCEINLINE bool SupportsPolygonMode()
Definition OpenGLBase.h:76
static FORCEINLINE bool SupportsDiscardFrameBuffer()
Definition OpenGLBase.h:83
static FORCEINLINE void GLenum GLint *Params static UGL_OPTIONAL_VOID FORCEINLINE void GLsizei GLsizei GLchar *InfoLog static UGL_OPTIONAL_VOID FORCEINLINE bool GLuint Sampler GLuint64 Value static UGL_REQUIRED_VOID FORCEINLINE void GetProgramBinary(GLuint Program, GLsizei BufSize, GLsizei *Length, GLenum *BinaryFormat, void *Binary) UGL_OPTIONAL_VOID static FORCEINLINE void ProgramBinary(GLuint Program
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void GLuint Index static UGL_REQUIRED_VOID FORCEINLINE void GLboolean GLboolean GLboolean GLboolean Alpha static UGL_REQUIRED_VOID FORCEINLINE void GLint GLenum GLsizei const GLvoid *Pointer static UGL_REQUIRED_VOID FORCEINLINE void const GLshort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLushort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLubyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLint *Values static UGL_REQUIRED_VOID FORCEINLINE void GLint GLsizei GLsizei InstanceCount static UGL_REQUIRED_VOID FORCEINLINE void GLuint GLuint GLsizei GLenum const GLvoid *Indices static UGL_REQUIRED_VOID FORCEINLINE void GLint GLfloat GLint Stencil static UGL_REQUIRED_VOID FORCEINLINE void GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid *PixelData static UGL_REQUIRED_VOID FORCEINLINE void GLsizei GLint GLsizei GLsizei GLboolean FixedSampleLocations static UGL_REQUIRED_VOID FORCEINLINE void GLenum GLuint GLintptr GLsizeiptr Size static UGL_REQUIRED_VOID FORCEINLINE void GLint GLint GLint GLint GLint GLsizei GLsizei Height static UGL_REQUIRED_VOID FORCEINLINE void CopyTexSubImage3D(GLenum Target, GLint Level, GLint XOffset, GLint YOffset, GLint ZOffset, GLint X, GLint Y, GLsizei Width, GLsizei Height) UGL_REQUIRED_VOID static FORCEINLINE void GetCompressedTexImage(GLenum Target
static void ProcessQueryGLInt()
Definition OpenGLDrv.cpp:580
@ QM_Result
Definition OpenGLBase.h:52
static FORCEINLINE bool SupportsColorBufferHalfFloat()
Definition OpenGLBase.h:86
static FORCEINLINE bool SupportsUniformBuffers()
Definition OpenGLBase.h:68
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void GLenum GLint Value static UGL_OPTIONAL_VOID FORCEINLINE void GLenum Mode static UGL_OPTIONAL_VOID FORCEINLINE void GLuint const ANSICHAR *Name static UGL_OPTIONAL_VOID FORCEINLINE GLsizei GLsizei const GLenum *Attachments static UGL_OPTIONAL_VOID FORCEINLINE void * MapBufferRange(GLenum Type, uint32 InOffset, uint32 InSize, EResourceLockMode LockMode) UGL_REQUIRED(NULL) static FORCEINLINE void UnmapBufferRange(GLenum Type
static FORCEINLINE bool SupportsShaderDepthStencilFetch()
Definition OpenGLBase.h:91
static FORCEINLINE bool SupportsShaderFramebufferFetch()
Definition OpenGLBase.h:88
static FORCEINLINE bool SupportsProgramBinary()
Definition OpenGLBase.h:112
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void GLuint Index static UGL_REQUIRED_VOID FORCEINLINE void GLboolean GLboolean GLboolean GLboolean Alpha static UGL_REQUIRED_VOID FORCEINLINE void VertexAttribPointer(GLuint Index, GLint Size, GLenum Type, GLboolean Normalized, GLsizei Stride, const GLvoid *Pointer) UGL_REQUIRED_VOID static FORCEINLINE void VertexAttribIPointer(GLuint Index
static FORCEINLINE bool SupportsVertexArrayBGRA()
Definition OpenGLBase.h:93
static FORCEINLINE bool SupportsPixelLocalStorage()
Definition OpenGLBase.h:92
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void GLuint Index static UGL_REQUIRED_VOID FORCEINLINE void GLboolean GLboolean GLboolean GLboolean Alpha static UGL_REQUIRED_VOID FORCEINLINE void GLint GLenum GLsizei const GLvoid *Pointer static UGL_REQUIRED_VOID FORCEINLINE void const GLshort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLushort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLubyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLint *Values static UGL_REQUIRED_VOID FORCEINLINE void GLint GLsizei GLsizei InstanceCount static UGL_REQUIRED_VOID FORCEINLINE void GLuint GLuint GLsizei GLenum const GLvoid *Indices static UGL_REQUIRED_VOID FORCEINLINE void ClearBufferfv(GLenum Buffer, GLint DrawBufferIndex, const GLfloat *Value) UGL_REQUIRED_VOID static FORCEINLINE void ClearBufferfi(GLenum Buffer
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void GLenum GLint Value static UGL_OPTIONAL_VOID FORCEINLINE void GLenum Mode static UGL_OPTIONAL_VOID FORCEINLINE void GLuint const ANSICHAR *Name static UGL_OPTIONAL_VOID FORCEINLINE GLsizei GLsizei const GLenum *Attachments static UGL_OPTIONAL_VOID FORCEINLINE void uint32 uint32 InSize static UGL_REQUIRED_VOID FORCEINLINE void GLuint *QueryIDs static UGL_REQUIRED_VOID FORCEINLINE void DeleteQueries(GLsizei NumQueries, const GLuint *QueryIDs) UGL_REQUIRED_VOID static FORCEINLINE void GetQueryObject(GLuint QueryId
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void GLenum GLint Value static UGL_OPTIONAL_VOID FORCEINLINE void GLenum Mode static UGL_OPTIONAL_VOID FORCEINLINE void GLuint const ANSICHAR *Name static UGL_OPTIONAL_VOID FORCEINLINE GLsizei GLsizei const GLenum *Attachments static UGL_OPTIONAL_VOID FORCEINLINE void uint32 uint32 InSize static UGL_REQUIRED_VOID FORCEINLINE void UnmapBuffer(GLenum Type) UGL_REQUIRED_VOID static FORCEINLINE void GenQueries(GLsizei NumQueries
static FORCEINLINE bool SupportsFloatReadSurface()
Definition OpenGLBase.h:74
static FORCEINLINE bool SupportsDrawIndexOffset()
Definition OpenGLBase.h:82
static FORCEINLINE bool SupportsASTCDecodeMode()
Definition OpenGLBase.h:115
static FORCEINLINE bool SupportsMobileMultiView()
Definition OpenGLBase.h:78
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void GLenum GLint Value static UGL_OPTIONAL_VOID FORCEINLINE void GLenum Mode static UGL_OPTIONAL_VOID FORCEINLINE void GLuint const ANSICHAR *Name static UGL_OPTIONAL_VOID FORCEINLINE GLsizei GLsizei const GLenum *Attachments static UGL_OPTIONAL_VOID FORCEINLINE void uint32 uint32 InSize static UGL_REQUIRED_VOID FORCEINLINE void GLuint *QueryIDs static UGL_REQUIRED_VOID FORCEINLINE void EQueryMode GLuint *OutResult static UGL_REQUIRED_VOID FORCEINLINE void GLuint GLuint GLintptr GLsizeiptr Size static UGL_REQUIRED_VOID FORCEINLINE GLuint GetUniformBlockIndex(GLuint Program, const GLchar *UniformBlockName) UGL_REQUIRED(-1) static FORCEINLINE void UniformBlockBinding(GLuint Program
static FORCEINLINE bool SupportsTexture3D()
Definition OpenGLBase.h:77
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void GLuint Index static UGL_REQUIRED_VOID FORCEINLINE void GLboolean GLboolean GLboolean GLboolean Alpha static UGL_REQUIRED_VOID FORCEINLINE void GLint GLenum GLsizei const GLvoid *Pointer static UGL_REQUIRED_VOID FORCEINLINE void const GLshort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLushort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLubyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLint *Values static UGL_REQUIRED_VOID FORCEINLINE void GLint GLsizei GLsizei InstanceCount static UGL_REQUIRED_VOID FORCEINLINE void GLuint GLuint GLsizei GLenum const GLvoid *Indices static UGL_REQUIRED_VOID FORCEINLINE void GLint GLfloat GLint Stencil static UGL_REQUIRED_VOID FORCEINLINE void ClearBufferiv(GLenum Buffer, GLint DrawBufferIndex, const GLint *Value) UGL_REQUIRED_VOID static FORCEINLINE void ClearDepth(GLdouble Depth) UGL_REQUIRED_VOID static FORCEINLINE void TexImage3D(GLenum Target
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EndQuery(GLenum QueryType) UGL_OPTIONAL_VOID static FORCEINLINE void GetQueryObject(GLuint QueryId
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void GLuint Index static UGL_REQUIRED_VOID FORCEINLINE void GLboolean GLboolean GLboolean GLboolean Alpha static UGL_REQUIRED_VOID FORCEINLINE void GLint GLenum GLsizei const GLvoid *Pointer static UGL_REQUIRED_VOID FORCEINLINE void const GLshort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLushort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLubyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLint *Values static UGL_REQUIRED_VOID FORCEINLINE void GLint GLsizei GLsizei InstanceCount static UGL_REQUIRED_VOID FORCEINLINE void GLuint GLuint GLsizei GLenum const GLvoid *Indices static UGL_REQUIRED_VOID FORCEINLINE void GLint GLfloat GLint Stencil static UGL_REQUIRED_VOID FORCEINLINE void GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid *PixelData static UGL_REQUIRED_VOID FORCEINLINE void GLsizei GLint GLsizei GLsizei GLboolean FixedSampleLocations static UGL_REQUIRED_VOID FORCEINLINE void TexBuffer(GLenum Target, GLenum InternalFormat, GLuint Buffer) UGL_REQUIRED_VOID static FORCEINLINE void TexBufferRange(GLenum Target
static FORCEINLINE void FramebufferTexture2DMultisample(GLenum Target, GLenum Attachment, GLenum TexTarget, GLuint Texture, GLint Level, GLint NumSamples) UGL_REQUIRED_VOID static FORCEINLINE void FramebufferTexture3D(GLenum Target
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void BlitFramebuffer(GLint SrcX0, GLint SrcY0, GLint SrcX1, GLint SrcY1, GLint DstX0, GLint DstY0, GLint DstX1, GLint DstY1, GLbitfield Mask, GLenum Filter) UGL_REQUIRED_VOID static FORCEINLINE void DrawBuffers(GLsizei NumBuffers
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void GLenum GLint Value static UGL_OPTIONAL_VOID FORCEINLINE void GLenum Mode static UGL_OPTIONAL_VOID FORCEINLINE void GLuint const ANSICHAR *Name static UGL_OPTIONAL_VOID FORCEINLINE GLsizei GetLabelObject(GLenum Type, GLuint Object, GLsizei BufferSize, ANSICHAR *OutName) UGL_OPTIONAL(0) static FORCEINLINE void InvalidateFramebuffer(GLenum Target
static FORCEINLINE bool SupportsFastBufferData()
Definition OpenGLBase.h:100
static FORCEINLINE bool SupportsDisjointTimeQueries()
Definition OpenGLBase.h:71
static FORCEINLINE bool SupportsFramebufferSRGBEnable()
Definition OpenGLBase.h:99
static FORCEINLINE bool SupportsDrawIndirect()
Definition OpenGLBase.h:106
static void ProcessExtensions(const FString &ExtensionsString)
Definition OpenGLDrv.cpp:588
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void GLuint Index static UGL_REQUIRED_VOID FORCEINLINE void GLboolean GLboolean GLboolean GLboolean Alpha static UGL_REQUIRED_VOID FORCEINLINE void GLint GLenum GLsizei const GLvoid *Pointer static UGL_REQUIRED_VOID FORCEINLINE void const GLshort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLushort *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLubyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLbyte *Values static UGL_REQUIRED_VOID FORCEINLINE void const GLint *Values static UGL_REQUIRED_VOID FORCEINLINE void GLint GLsizei GLsizei InstanceCount static UGL_REQUIRED_VOID FORCEINLINE void GLuint GLuint GLsizei GLenum const GLvoid *Indices static UGL_REQUIRED_VOID FORCEINLINE void GLint GLfloat GLint Stencil static UGL_REQUIRED_VOID FORCEINLINE void GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid *PixelData static UGL_REQUIRED_VOID FORCEINLINE void GLsizei GLint GLsizei GLsizei GLboolean FixedSampleLocations static UGL_REQUIRED_VOID FORCEINLINE void GLenum GLuint GLintptr GLsizeiptr Size static UGL_REQUIRED_VOID FORCEINLINE void TexSubImage3D(GLenum Target, GLint Level, GLint XOffset, GLint YOffset, GLint ZOffset, GLsizei Width, GLsizei Height, GLsizei Depth, GLenum Format, GLenum Type, const GLvoid *PixelData) UGL_REQUIRED_VOID static FORCEINLINE void CopyTexSubImage2D(GLenum Target
static FORCEINLINE bool SupportsTextureLODBias()
Definition OpenGLBase.h:80
static FORCEINLINE void GLenum GLuint GLint GLsizei GLint GLsizei NumViews static UGL_REQUIRED_VOID FORCEINLINE void const GLenum *Buffers static UGL_REQUIRED_VOID FORCEINLINE void DepthRange(GLdouble Near, GLdouble Far) UGL_REQUIRED_VOID static FORCEINLINE void EnableIndexed(GLenum Parameter
static FORCEINLINE bool SupportsDXT()
Definition OpenGLBase.h:95
static FORCEINLINE void GLenum GLenum GLuint GLint GLint ZOffset static UGL_REQUIRED_VOID FORCEINLINE void FramebufferTextureLayer(GLenum Target, GLenum Attachment, GLuint Texture, GLint Level, GLint Layer) UGL_REQUIRED_VOID static FORCEINLINE void FramebufferRenderbuffer(GLenum Target
static FORCEINLINE void GLenum GLint *Params static UGL_OPTIONAL_VOID FORCEINLINE void GLsizei GLsizei * Length
Definition OpenGLBase.h:294
static FORCEINLINE bool SupportsTimestampQueries()
Definition OpenGLBase.h:70
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void GLenum GLint Value static UGL_OPTIONAL_VOID FORCEINLINE void BindSampler(GLuint Unit, GLuint Sampler) UGL_OPTIONAL_VOID static FORCEINLINE void PolygonMode(GLenum Face
static FORCEINLINE void QueryTimestampCounter(GLuint QueryID) UGL_OPTIONAL_VOID static FORCEINLINE void BeginQuery(GLenum QueryType
static FORCEINLINE void FramebufferTextureMultiviewOVR(GLenum Target, GLenum Attachment, GLuint Texture, GLint Level, GLint BaseViewIndex, GLsizei NumViews) UGL_REQUIRED_VOID static FORCEINLINE void FramebufferTextureMultisampleMultiviewOVR(GLenum Target
static FORCEINLINE void ProgramUniform4uiv(GLuint Program, GLint Location, GLsizei Count, const GLuint *Value) UGL_REQUIRED_VOID static FORCEINLINE void GetProgramPipelineiv(GLuint Pipeline
static FORCEINLINE int32 GetReadHalfFloatPixelsEnum() UGL_REQUIRED(0) static FORCEINLINE GLint GetMaxMSAASamplesTileMem()
Definition OpenGLBase.h:154
static FORCEINLINE bool SupportsWideMRT()
Definition OpenGLBase.h:75
static FORCEINLINE void GLuint QueryId static UGL_OPTIONAL_VOID FORCEINLINE void EQueryMode GLuint64 *OutResult static UGL_OPTIONAL_VOID FORCEINLINE void GLbitfield Flags GLbitfield GLuint64 Timeout GLuint *Samplers static UGL_OPTIONAL_VOID FORCEINLINE void GLenum GLint Value static UGL_OPTIONAL_VOID FORCEINLINE void GLenum Mode static UGL_OPTIONAL_VOID FORCEINLINE void GLuint const ANSICHAR *Name static UGL_OPTIONAL_VOID FORCEINLINE GLsizei GLsizei const GLenum *Attachments static UGL_OPTIONAL_VOID FORCEINLINE void uint32 uint32 InSize static UGL_REQUIRED_VOID FORCEINLINE void GLuint *QueryIDs static UGL_REQUIRED_VOID FORCEINLINE void EQueryMode GLuint *OutResult static UGL_REQUIRED_VOID FORCEINLINE void GLuint GLuint GLintptr GLsizeiptr Size static UGL_REQUIRED_VOID FORCEINLINE GLuint GLuint GLuint UniformBlockBinding static UGL_REQUIRED_VOID FORCEINLINE void GLenum GLint Value static UGL_REQUIRED_VOID FORCEINLINE void FramebufferTexture(GLenum Target, GLenum Attachment, GLuint Texture, GLint Level) UGL_REQUIRED_VOID static FORCEINLINE void FramebufferTexture2D(GLenum Target
Type
Definition RHIFeatureLevel.h:20
@ ES3_1
Definition RHIFeatureLevel.h:25
PFNGLCOLORMASKIEXTPROC glColorMaskiEXT
Definition AndroidOpenGLFunctions.cpp:63
PFNGLBLENDEQUATIONIEXTPROC glBlendEquationiEXT
Definition AndroidOpenGLFunctions.cpp:59
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glRenderbufferStorageMultisampleEXT
Definition AndroidOpenGLFunctions.cpp:28
PFNGLCOPYIMAGESUBDATAEXTPROC glCopyImageSubData
Definition AndroidOpenGLFunctions.cpp:56
PFNGLBUFFERSTORAGEEXTPROC glBufferStorageEXT
Definition AndroidOpenGLFunctions.cpp:35
PFNGLTEXBUFFEREXTPROC glTexBufferEXT
Definition AndroidOpenGLFunctions.cpp:54
PFNGLENABLEIEXTPROC glEnableiEXT
Definition AndroidOpenGLFunctions.cpp:57
PFNGLPOPGROUPMARKEREXTPROC glPopGroupMarkerEXT
Definition AndroidOpenGLFunctions.cpp:31
PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture
Definition AndroidOpenGLFunctions.cpp:64
PFNGLTEXBUFFERRANGEEXTPROC glTexBufferRangeEXT
Definition AndroidOpenGLFunctions.cpp:55
PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glFramebufferTextureMultiviewOVR
Definition AndroidOpenGLFunctions.cpp:66
PFNGLBLENDFUNCIEXTPROC glBlendFunciEXT
Definition AndroidOpenGLFunctions.cpp:61
PFNGLPUSHGROUPMARKEREXTPROC glPushGroupMarkerEXT
Definition AndroidOpenGLFunctions.cpp:30
PFNGLGETOBJECTLABELEXTPROC glGetObjectLabelEXT
Definition AndroidOpenGLFunctions.cpp:33
PFNGLBLENDFUNCSEPARATEIEXTPROC glBlendFuncSeparateiEXT
Definition AndroidOpenGLFunctions.cpp:62
PFNGLBLENDEQUATIONSEPARATEIEXTPROC glBlendEquationSeparateiEXT
Definition AndroidOpenGLFunctions.cpp:60
PFNGLGETQUERYOBJECTUI64VEXTPROC glGetQueryObjectui64vEXT
Definition AndroidOpenGLFunctions.cpp:51
PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC glFramebufferTextureMultisampleMultiviewOVR
Definition AndroidOpenGLFunctions.cpp:67
PFNGLLABELOBJECTEXTPROC glLabelObjectEXT
Definition AndroidOpenGLFunctions.cpp:32
PFNGLQUERYCOUNTEREXTPROC glQueryCounterEXT
Definition AndroidOpenGLFunctions.cpp:50
PFNGLDISABLEIEXTPROC glDisableiEXT
Definition AndroidOpenGLFunctions.cpp:58
PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC glFramebufferTexture2DMultisampleEXT
Definition AndroidOpenGLFunctions.cpp:27
Definition OpenGLBuffer.cpp:16
int32 bUseUnsynchronizedBufferMapping
Definition OpenGLCommands.cpp:87
U16 Index
Definition radfft.cpp:71
Definition LinuxOpenGLPlatform.cpp:39
Definition LinuxOpenGLPlatform.cpp:175