Move member initializers from Caps.cpp into the struct definitions.

BUG=angleproject:3663

Change-Id: I13a1a920173e3f2e5360e6d7253f24a44bdc5e13
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1690675
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Caps.cpp b/src/libANGLE/Caps.cpp
index 08db01d..436983f 100644
--- a/src/libANGLE/Caps.cpp
+++ b/src/libANGLE/Caps.cpp
@@ -29,13 +29,7 @@
 namespace gl
 {
 
-TextureCaps::TextureCaps()
-    : texturable(false),
-      filterable(false),
-      textureAttachment(false),
-      renderbuffer(false),
-      sampleCounts()
-{}
+TextureCaps::TextureCaps() = default;
 
 TextureCaps::TextureCaps(const TextureCaps &other) = default;
 
@@ -138,136 +132,7 @@
     }
 }
 
-Extensions::Extensions()
-    : elementIndexUint(false),
-      packedDepthStencil(false),
-      getProgramBinary(false),
-      rgb8rgba8(false),
-      textureFormatBGRA8888(false),
-      readFormatBGRA(false),
-      pixelBufferObject(false),
-      mapBuffer(false),
-      mapBufferRange(false),
-      colorBufferHalfFloat(false),
-      textureHalfFloat(false),
-      textureHalfFloatLinear(false),
-      textureFloat(false),
-      textureFloatLinear(false),
-      textureRG(false),
-      textureCompressionDXT1(false),
-      textureCompressionDXT3(false),
-      textureCompressionDXT5(false),
-      textureCompressionS3TCsRGB(false),
-      textureCompressionASTCHDR(false),
-      textureCompressionASTCLDR(false),
-      textureCompressionBPTC(false),
-      compressedETC1RGB8Texture(false),
-      compressedETC2RGB8Texture(false),
-      compressedETC2sRGB8Texture(false),
-      compressedETC2PunchthroughARGB8Texture(false),
-      compressedETC2PunchthroughAsRGB8AlphaTexture(false),
-      compressedETC2RGBA8Texture(false),
-      compressedETC2sRGB8Alpha8Texture(false),
-      compressedEACR11UnsignedTexture(false),
-      compressedEACR11SignedTexture(false),
-      compressedEACRG11UnsignedTexture(false),
-      compressedEACRG11SignedTexture(false),
-      compressedTextureETC(false),
-      sRGB(false),
-      depthTextureANGLE(false),
-      depthTextureOES(false),
-      depth24OES(false),
-      depth32(false),
-      texture3DOES(false),
-      textureStorage(false),
-      textureNPOT(false),
-      drawBuffers(false),
-      textureFilterAnisotropic(false),
-      maxTextureAnisotropy(0.0f),
-      occlusionQueryBoolean(false),
-      fence(false),
-      disjointTimerQuery(false),
-      queryCounterBitsTimeElapsed(0),
-      queryCounterBitsTimestamp(0),
-      robustness(false),
-      robustBufferAccessBehavior(false),
-      blendMinMax(false),
-      framebufferBlit(false),
-      framebufferMultisample(false),
-      instancedArraysANGLE(false),
-      instancedArraysEXT(false),
-      packReverseRowOrder(false),
-      standardDerivatives(false),
-      shaderTextureLOD(false),
-      fragDepth(false),
-      multiview(false),
-      maxViews(1u),
-      multiview2(false),
-      textureUsage(false),
-      translatedShaderSource(false),
-      fboRenderMipmap(false),
-      discardFramebuffer(false),
-      debugMarker(false),
-      eglImage(false),
-      eglImageExternal(false),
-      eglImageExternalEssl3(false),
-      eglSync(false),
-      memoryObject(false),
-      memoryObjectFd(false),
-      semaphore(false),
-      semaphoreFd(false),
-      eglStreamConsumerExternal(false),
-      unpackSubimage(false),
-      packSubimage(false),
-      vertexArrayObject(false),
-      debug(false),
-      maxDebugMessageLength(0),
-      maxDebugLoggedMessages(0),
-      maxDebugGroupStackDepth(0),
-      maxLabelLength(0),
-      noError(false),
-      lossyETCDecode(false),
-      bindUniformLocation(false),
-      syncQuery(false),
-      copyTexture(false),
-      copyCompressedTexture(false),
-      copyTexture3d(false),
-      webglCompatibility(false),
-      requestExtension(false),
-      bindGeneratesResource(false),
-      robustClientMemory(false),
-      textureBorderClamp(false),
-      textureSRGBDecode(false),
-      sRGBWriteControl(false),
-      colorBufferFloatRGB(false),
-      colorBufferFloatRGBA(false),
-      colorBufferFloat(false),
-      multisampleCompatibility(false),
-      framebufferMixedSamples(false),
-      textureNorm16(false),
-      pathRendering(false),
-      surfacelessContext(false),
-      clientArrays(false),
-      robustResourceInitialization(false),
-      programCacheControl(false),
-      textureRectangle(false),
-      geometryShader(false),
-      pointSizeArray(false),
-      textureCubeMap(false),
-      pointSprite(false),
-      drawTexture(false),
-      explicitContextGles1(false),
-      explicitContext(false),
-      parallelShaderCompile(false),
-      textureStorageMultisample2DArray(false),
-      multiviewMultisample(false),
-      blendFuncExtended(false),
-      maxDualSourceDrawBuffers(0),
-      floatBlend(false),
-      memorySize(false),
-      textureMultisample(false),
-      multiDraw(false)
-{}
+Extensions::Extensions() = default;
 
 Extensions::Extensions(const Extensions &other) = default;
 
@@ -286,17 +151,7 @@
     return extensionStrings;
 }
 
-Limitations::Limitations()
-    : noFrontFacingSupport(false),
-      noSampleAlphaToCoverageSupport(false),
-      attributeZeroRequiresZeroDivisorInEXT(false),
-      noSeparateStencilRefsAndMasks(false),
-      shadersRequireIndexedLoopValidation(false),
-      noSimultaneousConstantColorAndAlphaBlendFunc(false),
-      noFlexibleVaryingPacking(false),
-      noDoubleBoundTransformFeedbackBuffers(false),
-      noVertexAttributeAliasing(false)
-{}
+Limitations::Limitations() = default;
 
 static bool GetFormatSupportBase(const TextureCapsMap &textureCaps,
                                  const GLenum *requiredFormats,
@@ -971,7 +826,7 @@
     return extensionInfo;
 }
 
-TypePrecision::TypePrecision() : range({{0, 0}}), precision(0) {}
+TypePrecision::TypePrecision() = default;
 
 TypePrecision::TypePrecision(const TypePrecision &other) = default;
 
@@ -1005,136 +860,7 @@
     *returnPrecision = precision;
 }
 
-Caps::Caps()
-    : maxElementIndex(0),
-      max3DTextureSize(0),
-      max2DTextureSize(0),
-      maxRectangleTextureSize(0),
-      maxArrayTextureLayers(0),
-      maxLODBias(0),
-      maxCubeMapTextureSize(0),
-      maxRenderbufferSize(0),
-      minAliasedPointSize(1.0f),
-      maxAliasedPointSize(1.0f),
-      minAliasedLineWidth(0),
-      maxAliasedLineWidth(0),
-
-      // Table 20.40
-      maxDrawBuffers(0),
-      maxFramebufferWidth(0),
-      maxFramebufferHeight(0),
-      maxFramebufferSamples(0),
-      maxColorAttachments(0),
-      maxViewportWidth(0),
-      maxViewportHeight(0),
-      maxSampleMaskWords(0),
-      maxColorTextureSamples(0),
-      maxDepthTextureSamples(0),
-      maxIntegerSamples(0),
-      maxServerWaitTimeout(0),
-
-      // Table 20.41
-      maxVertexAttribRelativeOffset(0),
-      maxVertexAttribBindings(0),
-      maxVertexAttribStride(0),
-      maxElementsIndices(0),
-      maxElementsVertices(0),
-
-      // Table 20.43
-      // Table 20.44
-      // Table 20.45
-      // Table 20.43gs (GL_EXT_geometry_shader)
-      // Table 20.46 (GL_EXT_geometry_shader)
-      maxShaderUniformBlocks({}),
-      maxShaderTextureImageUnits({}),
-      maxShaderStorageBlocks({}),
-      maxShaderUniformComponents({}),
-      maxShaderAtomicCounterBuffers({}),
-      maxShaderAtomicCounters({}),
-      maxShaderImageUniforms({}),
-      maxCombinedShaderUniformComponents({}),
-
-      // Table 20.43
-      maxVertexAttributes(0),
-      maxVertexUniformVectors(0),
-      maxVertexOutputComponents(0),
-
-      // Table 20.44
-      maxFragmentUniformVectors(0),
-      maxFragmentInputComponents(0),
-      minProgramTextureGatherOffset(0),
-      maxProgramTextureGatherOffset(0),
-      minProgramTexelOffset(0),
-      maxProgramTexelOffset(0),
-
-      // Table 20.45
-      maxComputeWorkGroupInvocations(0),
-      maxComputeSharedMemorySize(0),
-
-      // Table 20.46
-      maxUniformBufferBindings(0),
-      maxUniformBlockSize(0),
-      uniformBufferOffsetAlignment(0),
-      maxCombinedUniformBlocks(0),
-      maxVaryingComponents(0),
-      maxVaryingVectors(0),
-      maxCombinedTextureImageUnits(0),
-      maxCombinedShaderOutputResources(0),
-
-      // Table 20.47
-      maxUniformLocations(0),
-      maxAtomicCounterBufferBindings(0),
-      maxAtomicCounterBufferSize(0),
-      maxCombinedAtomicCounterBuffers(0),
-      maxCombinedAtomicCounters(0),
-      maxImageUnits(0),
-      maxCombinedImageUniforms(0),
-      maxShaderStorageBufferBindings(0),
-      maxShaderStorageBlockSize(0),
-      maxCombinedShaderStorageBlocks(0),
-      shaderStorageBufferOffsetAlignment(0),
-
-      // Table 20.48
-      maxTransformFeedbackInterleavedComponents(0),
-      maxTransformFeedbackSeparateAttributes(0),
-      maxTransformFeedbackSeparateComponents(0),
-
-      // Table 20.49
-      maxSamples(0),
-
-      // Table 20.40 (cont.) (GL_EXT_geometry_shader)
-      maxFramebufferLayers(0),
-      layerProvokingVertex(0),
-
-      // Table 20.43gs (GL_EXT_geometry_shader)
-      maxGeometryInputComponents(0),
-      maxGeometryOutputComponents(0),
-      maxGeometryOutputVertices(0),
-      maxGeometryTotalOutputComponents(0),
-      maxGeometryShaderInvocations(0),
-
-      subPixelBits(4),
-
-      // GLES1 emulation: Table 6.20 / 6.22 (ES 1.1 spec)
-      maxMultitextureUnits(0),
-      maxClipPlanes(0),
-      maxLights(0),
-      maxModelviewMatrixStackDepth(0),
-      maxProjectionMatrixStackDepth(0),
-      maxTextureMatrixStackDepth(0),
-      minSmoothPointSize(0),
-      maxSmoothPointSize(0),
-      minSmoothLineWidth(0),
-      maxSmoothLineWidth(0)
-
-{
-    for (size_t i = 0; i < 3; ++i)
-    {
-        maxComputeWorkGroupCount[i] = 0;
-        maxComputeWorkGroupSize[i]  = 0;
-    }
-}
-
+Caps::Caps()                  = default;
 Caps::Caps(const Caps &other) = default;
 Caps::~Caps()                 = default;
 
@@ -1376,58 +1102,9 @@
 namespace egl
 {
 
-Caps::Caps() : textureNPOT(false) {}
+Caps::Caps() = default;
 
-DisplayExtensions::DisplayExtensions()
-    : createContextRobustness(false),
-      d3dShareHandleClientBuffer(false),
-      d3dTextureClientBuffer(false),
-      surfaceD3DTexture2DShareHandle(false),
-      querySurfacePointer(false),
-      windowFixedSize(false),
-      keyedMutex(false),
-      surfaceOrientation(false),
-      postSubBuffer(false),
-      createContext(false),
-      deviceQuery(false),
-      image(false),
-      imageBase(false),
-      imagePixmap(false),
-      glTexture2DImage(false),
-      glTextureCubemapImage(false),
-      glTexture3DImage(false),
-      glRenderbufferImage(false),
-      getAllProcAddresses(false),
-      flexibleSurfaceCompatibility(false),
-      directComposition(false),
-      windowsUIComposition(false),
-      createContextNoError(false),
-      stream(false),
-      streamConsumerGLTexture(false),
-      streamConsumerGLTextureYUV(false),
-      streamProducerD3DTexture(false),
-      fenceSync(false),
-      waitSync(false),
-      createContextWebGLCompatibility(false),
-      createContextBindGeneratesResource(false),
-      getSyncValues(false),
-      swapBuffersWithDamage(false),
-      pixelFormatFloat(false),
-      surfacelessContext(false),
-      displayTextureShareGroup(false),
-      createContextClientArrays(false),
-      programCacheControl(false),
-      robustResourceInitialization(false),
-      iosurfaceClientBuffer(false),
-      createContextExtensionsEnabled(false),
-      presentationTime(false),
-      blobCache(false),
-      imageNativeBuffer(false),
-      getFrameTimestamps(false),
-      recordable(false),
-      powerPreference(false),
-      imageD3D11Texture(false)
-{}
+DisplayExtensions::DisplayExtensions() = default;
 
 std::vector<std::string> DisplayExtensions::getStrings() const
 {
@@ -1490,7 +1167,7 @@
     return extensionStrings;
 }
 
-DeviceExtensions::DeviceExtensions() : deviceD3D(false) {}
+DeviceExtensions::DeviceExtensions() = default;
 
 std::vector<std::string> DeviceExtensions::getStrings() const
 {
@@ -1504,25 +1181,7 @@
     return extensionStrings;
 }
 
-ClientExtensions::ClientExtensions()
-    : clientExtensions(false),
-      platformBase(false),
-      platformDevice(false),
-      platformANGLE(false),
-      platformANGLED3D(false),
-      platformANGLEOpenGL(false),
-      platformANGLEVulkan(false),
-      platformANGLEContextVirtualization(false),
-      deviceCreation(false),
-      deviceCreationD3D11(false),
-      x11Visual(false),
-      experimentalPresentPath(false),
-      clientGetAllProcAddresses(false),
-      debug(false),
-      explicitContext(false),
-      featureControlANGLE(false)
-{}
-
+ClientExtensions::ClientExtensions()                              = default;
 ClientExtensions::ClientExtensions(const ClientExtensions &other) = default;
 
 std::vector<std::string> ClientExtensions::getStrings() const
diff --git a/src/libANGLE/Caps.h b/src/libANGLE/Caps.h
index c4d4977..b99c7b8 100644
--- a/src/libANGLE/Caps.h
+++ b/src/libANGLE/Caps.h
@@ -30,16 +30,16 @@
     ~TextureCaps();
 
     // Supports for basic texturing: glTexImage, glTexSubImage, etc
-    bool texturable;
+    bool texturable = false;
 
     // Support for linear or anisotropic filtering
-    bool filterable;
+    bool filterable = false;
 
     // Support for being used as a framebuffer attachment, i.e. glFramebufferTexture2D
-    bool textureAttachment;
+    bool textureAttachment = false;
 
     // Support for being used as a renderbuffer format, i.e. glFramebufferRenderbuffer
-    bool renderbuffer;
+    bool renderbuffer = false;
 
     // Set of supported sample counts, only guaranteed to be valid in ES3.
     SupportedSampleSet sampleCounts;
@@ -121,388 +121,391 @@
     // ES2 Extension support
 
     // GL_OES_element_index_uint
-    bool elementIndexUint;
+    bool elementIndexUint = false;
 
     // GL_OES_packed_depth_stencil
-    bool packedDepthStencil;
+    bool packedDepthStencil = false;
 
     // GL_OES_get_program_binary
-    bool getProgramBinary;
+    bool getProgramBinary = false;
 
     // GL_OES_rgb8_rgba8
     // Implies that TextureCaps for GL_RGB8 and GL_RGBA8 exist
-    bool rgb8rgba8;
+    bool rgb8rgba8 = false;
 
     // GL_EXT_texture_format_BGRA8888
     // Implies that TextureCaps for GL_BGRA8 exist
-    bool textureFormatBGRA8888;
+    bool textureFormatBGRA8888 = false;
 
     // GL_EXT_read_format_bgra
-    bool readFormatBGRA;
+    bool readFormatBGRA = false;
 
     // GL_NV_pixel_buffer_object
-    bool pixelBufferObject;
+    bool pixelBufferObject = false;
 
     // GL_OES_mapbuffer and GL_EXT_map_buffer_range
-    bool mapBuffer;
-    bool mapBufferRange;
+    bool mapBuffer      = false;
+    bool mapBufferRange = false;
 
     // GL_EXT_color_buffer_half_float
     // Together with GL_OES_texture_half_float in a GLES 2.0 context, implies that half-float
     // textures are renderable.
-    bool colorBufferHalfFloat;
+    bool colorBufferHalfFloat = false;
 
     // GL_OES_texture_half_float and GL_OES_texture_half_float_linear
     // Implies that TextureCaps for GL_RGB16F, GL_RGBA16F, GL_ALPHA32F_EXT, GL_LUMINANCE32F_EXT and
     // GL_LUMINANCE_ALPHA32F_EXT exist
-    bool textureHalfFloat;
-    bool textureHalfFloatLinear;
+    bool textureHalfFloat       = false;
+    bool textureHalfFloatLinear = false;
 
     // GL_OES_texture_float and GL_OES_texture_float_linear
     // Implies that TextureCaps for GL_RGB32F, GL_RGBA32F, GL_ALPHA16F_EXT, GL_LUMINANCE16F_EXT and
     // GL_LUMINANCE_ALPHA16F_EXT exist
-    bool textureFloat;
-    bool textureFloatLinear;
+    bool textureFloat       = false;
+    bool textureFloatLinear = false;
 
     // GL_EXT_texture_rg
     // Implies that TextureCaps for GL_R8, GL_RG8 (and floating point R/RG texture formats if
     // floating point extensions are also present) exist
-    bool textureRG;
+    bool textureRG = false;
 
     // GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3 and
     // GL_ANGLE_texture_compression_dxt5 Implies that TextureCaps exist for
     // GL_COMPRESSED_RGB_S3TC_DXT1_EXT, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
     // GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE and GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE
-    bool textureCompressionDXT1;
-    bool textureCompressionDXT3;
-    bool textureCompressionDXT5;
+    bool textureCompressionDXT1 = false;
+    bool textureCompressionDXT3 = false;
+    bool textureCompressionDXT5 = false;
 
     // GL_EXT_texture_compression_s3tc_srgb
     // Implies that TextureCaps exist for GL_COMPRESSED_SRGB_S3TC_DXT1_EXT,
     // GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, and
     // GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
-    bool textureCompressionS3TCsRGB;
+    bool textureCompressionS3TCsRGB = false;
 
     // GL_KHR_texture_compression_astc_hdr
-    bool textureCompressionASTCHDR;
+    bool textureCompressionASTCHDR = false;
 
     // GL_KHR_texture_compression_astc_ldr
-    bool textureCompressionASTCLDR;
+    bool textureCompressionASTCLDR = false;
 
     // GL_EXT_texture_compression_bptc
-    bool textureCompressionBPTC;
+    bool textureCompressionBPTC = false;
 
     // GL_OES_compressed_ETC1_RGB8_texture
     // Implies that TextureCaps for GL_ETC1_RGB8_OES exist
-    bool compressedETC1RGB8Texture;
+    bool compressedETC1RGB8Texture = false;
 
     // OES_compressed_ETC2_RGB8_texture
-    bool compressedETC2RGB8Texture;
+    bool compressedETC2RGB8Texture = false;
 
     // OES_compressed_ETC2_sRGB8_texture
-    bool compressedETC2sRGB8Texture;
+    bool compressedETC2sRGB8Texture = false;
 
     // OES_compressed_ETC2_punchthroughA_RGBA8_texture
-    bool compressedETC2PunchthroughARGB8Texture;
+    bool compressedETC2PunchthroughARGB8Texture = false;
 
     // OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture
-    bool compressedETC2PunchthroughAsRGB8AlphaTexture;
+    bool compressedETC2PunchthroughAsRGB8AlphaTexture = false;
 
     // OES_compressed_ETC2_RGBA8_texture
-    bool compressedETC2RGBA8Texture;
+    bool compressedETC2RGBA8Texture = false;
 
     // OES_compressed_ETC2_sRGB8_alpha8_texture
-    bool compressedETC2sRGB8Alpha8Texture;
+    bool compressedETC2sRGB8Alpha8Texture = false;
 
     // OES_compressed_EAC_R11_unsigned_texture
-    bool compressedEACR11UnsignedTexture;
+    bool compressedEACR11UnsignedTexture = false;
 
     // OES_compressed_EAC_R11_signed_texture
-    bool compressedEACR11SignedTexture;
+    bool compressedEACR11SignedTexture = false;
 
     // OES_compressed_EAC_RG11_unsigned_texture
-    bool compressedEACRG11UnsignedTexture;
+    bool compressedEACRG11UnsignedTexture = false;
 
     // OES_compressed_EAC_RG11_signed_texture
-    bool compressedEACRG11SignedTexture;
+    bool compressedEACRG11SignedTexture = false;
 
     // GL_CHROMIUM_compressed_texture_etc
     // ONLY exposed if ETC texture formats are natively supported without decompression
     // Backends should enable this extension explicitly. It is not enabled with
     // setTextureExtensionSupport, use DetermineCompressedTextureETCSupport to check if all of the
     // individual formats required to support this extension are available.
-    bool compressedTextureETC;
+    bool compressedTextureETC = false;
 
     // GL_EXT_sRGB
     // Implies that TextureCaps for GL_SRGB8_ALPHA8 and GL_SRGB8 exist
     // TODO: Don't advertise this extension in ES3
-    bool sRGB;
+    bool sRGB = false;
 
     // GL_ANGLE_depth_texture
-    bool depthTextureANGLE;
+    bool depthTextureANGLE = false;
 
     // OES_depth_texture
-    bool depthTextureOES;
+    bool depthTextureOES = false;
 
     // GL_OES_depth24
     // Allows DEPTH_COMPONENT24_OES as a valid Renderbuffer format.
-    bool depth24OES;
+    bool depth24OES = false;
 
     // GL_OES_depth32
     // Allows DEPTH_COMPONENT32_OES as a valid Renderbuffer format.
-    bool depth32;
+    bool depth32 = false;
 
     // GL_OES_texture_3D
-    bool texture3DOES;
+    bool texture3DOES = false;
 
     // GL_EXT_texture_storage
-    bool textureStorage;
+    bool textureStorage = false;
 
     // GL_OES_texture_npot
-    bool textureNPOT;
+    bool textureNPOT = false;
 
     // GL_EXT_draw_buffers
-    bool drawBuffers;
+    bool drawBuffers = false;
 
     // GL_EXT_texture_filter_anisotropic
-    bool textureFilterAnisotropic;
-    GLfloat maxTextureAnisotropy;
+    bool textureFilterAnisotropic = false;
+    GLfloat maxTextureAnisotropy  = 0.0f;
 
     // GL_EXT_occlusion_query_boolean
-    bool occlusionQueryBoolean;
+    bool occlusionQueryBoolean = false;
 
     // GL_NV_fence
-    bool fence;
+    bool fence = false;
 
     // GL_EXT_disjoint_timer_query
-    bool disjointTimerQuery;
-    GLuint queryCounterBitsTimeElapsed;
-    GLuint queryCounterBitsTimestamp;
+    bool disjointTimerQuery            = false;
+    GLuint queryCounterBitsTimeElapsed = 0;
+    GLuint queryCounterBitsTimestamp   = 0;
 
     // GL_EXT_robustness
-    bool robustness;
+    bool robustness = false;
 
     // GL_KHR_robust_buffer_access_behavior
-    bool robustBufferAccessBehavior;
+    bool robustBufferAccessBehavior = false;
 
     // GL_EXT_blend_minmax
-    bool blendMinMax;
+    bool blendMinMax = false;
 
     // GL_ANGLE_framebuffer_blit
-    bool framebufferBlit;
+    bool framebufferBlit = false;
 
     // GL_ANGLE_framebuffer_multisample
-    bool framebufferMultisample;
+    bool framebufferMultisample = false;
 
     // GL_ANGLE_instanced_arrays
-    bool instancedArraysANGLE;
+    bool instancedArraysANGLE = false;
     // GL_EXT_instanced_arrays
-    bool instancedArraysEXT;
+    bool instancedArraysEXT = false;
     // Any version of the instanced arrays extension
     bool instancedArraysAny() const { return (instancedArraysANGLE || instancedArraysEXT); }
 
     // GL_ANGLE_pack_reverse_row_order
-    bool packReverseRowOrder;
+    bool packReverseRowOrder = false;
 
     // GL_OES_standard_derivatives
-    bool standardDerivatives;
+    bool standardDerivatives = false;
 
     // GL_EXT_shader_texture_lod
-    bool shaderTextureLOD;
+    bool shaderTextureLOD = false;
 
     // GL_EXT_frag_depth
-    bool fragDepth;
+    bool fragDepth = false;
 
     // OVR_multiview
-    bool multiview;
-    GLuint maxViews;
+    bool multiview  = false;
+    GLuint maxViews = 1;
 
     // OVR_multiview2
-    bool multiview2;
+    bool multiview2 = false;
 
     // GL_ANGLE_texture_usage
-    bool textureUsage;
+    bool textureUsage = false;
 
     // GL_ANGLE_translated_shader_source
-    bool translatedShaderSource;
+    bool translatedShaderSource = false;
 
     // GL_OES_fbo_render_mipmap
-    bool fboRenderMipmap;
+    bool fboRenderMipmap = false;
 
     // GL_EXT_discard_framebuffer
-    bool discardFramebuffer;
+    bool discardFramebuffer = false;
 
     // EXT_debug_marker
-    bool debugMarker;
+    bool debugMarker = false;
 
     // GL_OES_EGL_image
-    bool eglImage;
+    bool eglImage = false;
 
     // GL_OES_EGL_image_external
-    bool eglImageExternal;
+    bool eglImageExternal = false;
 
     // GL_OES_EGL_image_external_essl3
-    bool eglImageExternalEssl3;
+    bool eglImageExternalEssl3 = false;
 
     // GL_OES_EGL_sync
-    bool eglSync;
+    bool eglSync = false;
 
     // GL_EXT_memory_object
-    bool memoryObject;
+    bool memoryObject = false;
 
     // GL_EXT_memory_object_fd
-    bool memoryObjectFd;
+    bool memoryObjectFd = false;
 
     // GL_EXT_semaphore
-    bool semaphore;
+    bool semaphore = false;
 
     // GL_EXT_semaphore_fd
-    bool semaphoreFd;
+    bool semaphoreFd = false;
 
     // NV_EGL_stream_consumer_external
-    bool eglStreamConsumerExternal;
+    bool eglStreamConsumerExternal = false;
 
     // EXT_unpack_subimage
-    bool unpackSubimage;
+    bool unpackSubimage = false;
 
     // NV_pack_subimage
-    bool packSubimage;
+    bool packSubimage = false;
 
     // GL_OES_vertex_array_object
-    bool vertexArrayObject;
+    bool vertexArrayObject = false;
 
     // GL_KHR_debug
-    bool debug;
-    GLuint maxDebugMessageLength;
-    GLuint maxDebugLoggedMessages;
-    GLuint maxDebugGroupStackDepth;
-    GLuint maxLabelLength;
+    bool debug                     = false;
+    GLuint maxDebugMessageLength   = 0;
+    GLuint maxDebugLoggedMessages  = 0;
+    GLuint maxDebugGroupStackDepth = 0;
+    GLuint maxLabelLength          = 0;
 
     // KHR_no_error
-    bool noError;
+    bool noError = false;
 
     // GL_ANGLE_lossy_etc_decode
-    bool lossyETCDecode;
+    bool lossyETCDecode = false;
 
     // GL_CHROMIUM_bind_uniform_location
-    bool bindUniformLocation;
+    bool bindUniformLocation = false;
 
     // GL_CHROMIUM_sync_query
-    bool syncQuery;
+    bool syncQuery = false;
 
     // GL_CHROMIUM_copy_texture
-    bool copyTexture;
+    bool copyTexture = false;
 
     // GL_CHROMIUM_copy_compressed_texture
-    bool copyCompressedTexture;
+    bool copyCompressedTexture = false;
 
     // GL_ANGLE_copy_texture_3d
-    bool copyTexture3d;
+    bool copyTexture3d = false;
 
     // GL_ANGLE_webgl_compatibility
-    bool webglCompatibility;
+    bool webglCompatibility = false;
 
     // GL_ANGLE_request_extension
-    bool requestExtension;
+    bool requestExtension = false;
 
     // GL_CHROMIUM_bind_generates_resource
-    bool bindGeneratesResource;
+    bool bindGeneratesResource = false;
 
     // GL_ANGLE_robust_client_memory
-    bool robustClientMemory;
+    bool robustClientMemory = false;
 
     // GL_OES_texture_border_clamp
-    bool textureBorderClamp;
+    bool textureBorderClamp = false;
 
     // GL_EXT_texture_sRGB_decode
-    bool textureSRGBDecode;
+    bool textureSRGBDecode = false;
 
     // GL_EXT_sRGB_write_control
-    bool sRGBWriteControl;
+    bool sRGBWriteControl = false;
 
     // GL_CHROMIUM_color_buffer_float_rgb
-    bool colorBufferFloatRGB;
+    bool colorBufferFloatRGB = false;
 
     // GL_CHROMIUM_color_buffer_float_rgba
-    bool colorBufferFloatRGBA;
+    bool colorBufferFloatRGBA = false;
 
     // ES3 Extension support
 
     // GL_EXT_color_buffer_float
-    bool colorBufferFloat;
+    bool colorBufferFloat = false;
 
     // GL_EXT_multisample_compatibility.
     // written against ES 3.1 but can apply to earlier versions.
-    bool multisampleCompatibility;
+    bool multisampleCompatibility = false;
 
     // GL_CHROMIUM_framebuffer_mixed_samples
-    bool framebufferMixedSamples;
+    bool framebufferMixedSamples = false;
 
     // GL_EXT_texture_norm16
     // written against ES 3.1 but can apply to ES 3.0 as well.
-    bool textureNorm16;
+    bool textureNorm16 = false;
 
     // GL_CHROMIUM_path_rendering
-    bool pathRendering;
+    bool pathRendering = false;
 
     // GL_OES_surfaceless_context
-    bool surfacelessContext;
+    bool surfacelessContext = false;
 
     // GL_ANGLE_client_arrays
-    bool clientArrays;
+    bool clientArrays = false;
 
     // GL_ANGLE_robust_resource_initialization
-    bool robustResourceInitialization;
+    bool robustResourceInitialization = false;
 
     // GL_ANGLE_program_cache_control
-    bool programCacheControl;
+    bool programCacheControl = false;
 
     // GL_ANGLE_texture_rectangle
-    bool textureRectangle;
+    bool textureRectangle = false;
 
     // GL_EXT_geometry_shader
-    bool geometryShader;
+    bool geometryShader = false;
 
     // GLES1 emulation: GLES1 extensions
     // GL_OES_point_size_array
-    bool pointSizeArray;
+    bool pointSizeArray = false;
+
     // GL_OES_texture_cube_map
-    bool textureCubeMap;
+    bool textureCubeMap = false;
+
     // GL_OES_point_sprite
-    bool pointSprite;
+    bool pointSprite = false;
+
     // GL_OES_draw_texture
-    bool drawTexture;
+    bool drawTexture = false;
 
     // EGL_ANGLE_explicit_context GL subextensions
     // GL_ANGLE_explicit_context_gles1
-    bool explicitContextGles1;
+    bool explicitContextGles1 = false;
     // GL_ANGLE_explicit_context
-    bool explicitContext;
+    bool explicitContext = false;
 
     // GL_KHR_parallel_shader_compile
-    bool parallelShaderCompile;
+    bool parallelShaderCompile = false;
 
     // GL_OES_texture_storage_multisample_2d_array
-    bool textureStorageMultisample2DArray;
+    bool textureStorageMultisample2DArray = false;
 
     // GL_ANGLE_multiview_multisample
-    bool multiviewMultisample;
+    bool multiviewMultisample = false;
 
     // GL_EXT_blend_func_extended
-    bool blendFuncExtended;
-    GLuint maxDualSourceDrawBuffers;
+    bool blendFuncExtended          = false;
+    GLuint maxDualSourceDrawBuffers = 0;
 
     // GL_EXT_float_blend
-    bool floatBlend;
+    bool floatBlend = false;
 
     // GL_ANGLE_memory_size
-    bool memorySize;
+    bool memorySize = false;
 
     // GL_ANGLE_texture_multisample
-    bool textureMultisample;
+    bool textureMultisample = false;
 
     // GL_ANGLE_multi_draw
-    bool multiDraw;
+    bool multiDraw = false;
 
     // GL_ANGLE_provoking_vertex
     bool provokingVertex = false;
@@ -532,32 +535,32 @@
     Limitations();
 
     // Renderer doesn't support gl_FrontFacing in fragment shaders
-    bool noFrontFacingSupport;
+    bool noFrontFacingSupport = false;
 
     // Renderer doesn't support GL_SAMPLE_ALPHA_TO_COVERAGE
-    bool noSampleAlphaToCoverageSupport;
+    bool noSampleAlphaToCoverageSupport = false;
 
     // In glVertexAttribDivisorANGLE, attribute zero must have a zero divisor
-    bool attributeZeroRequiresZeroDivisorInEXT;
+    bool attributeZeroRequiresZeroDivisorInEXT = false;
 
     // Unable to support different values for front and back faces for stencil refs and masks
-    bool noSeparateStencilRefsAndMasks;
+    bool noSeparateStencilRefsAndMasks = false;
 
     // Renderer doesn't support non-constant indexing loops in fragment shader
-    bool shadersRequireIndexedLoopValidation;
+    bool shadersRequireIndexedLoopValidation = false;
 
     // Renderer doesn't support Simultaneous use of GL_CONSTANT_ALPHA/GL_ONE_MINUS_CONSTANT_ALPHA
     // and GL_CONSTANT_COLOR/GL_ONE_MINUS_CONSTANT_COLOR blend functions.
-    bool noSimultaneousConstantColorAndAlphaBlendFunc;
+    bool noSimultaneousConstantColorAndAlphaBlendFunc = false;
 
     // D3D9 does not support flexible varying register packing.
-    bool noFlexibleVaryingPacking;
+    bool noFlexibleVaryingPacking = false;
 
     // D3D does not support having multiple transform feedback outputs go to the same buffer.
-    bool noDoubleBoundTransformFeedbackBuffers;
+    bool noDoubleBoundTransformFeedbackBuffers = false;
 
     // D3D does not support vertex attribute aliasing
-    bool noVertexAttributeAliasing;
+    bool noVertexAttributeAliasing = false;
 };
 
 struct TypePrecision
@@ -572,8 +575,8 @@
 
     void get(GLint *returnRange, GLint *returnPrecision) const;
 
-    std::array<GLint, 2> range;
-    GLint precision;
+    std::array<GLint, 2> range = {0, 0};
+    GLint precision            = 0;
 };
 
 struct Caps
@@ -583,39 +586,39 @@
     ~Caps();
 
     // ES 3.1 (April 29, 2015) 20.39: implementation dependent values
-    GLuint64 maxElementIndex;
-    GLuint max3DTextureSize;
-    GLuint max2DTextureSize;
-    GLuint maxRectangleTextureSize;
-    GLuint maxArrayTextureLayers;
-    GLfloat maxLODBias;
-    GLuint maxCubeMapTextureSize;
-    GLuint maxRenderbufferSize;
-    GLfloat minAliasedPointSize;
-    GLfloat maxAliasedPointSize;
-    GLfloat minAliasedLineWidth;
-    GLfloat maxAliasedLineWidth;
+    GLuint64 maxElementIndex       = 0;
+    GLuint max3DTextureSize        = 0;
+    GLuint max2DTextureSize        = 0;
+    GLuint maxRectangleTextureSize = 0;
+    GLuint maxArrayTextureLayers   = 0;
+    GLfloat maxLODBias             = 0.0f;
+    GLuint maxCubeMapTextureSize   = 0;
+    GLuint maxRenderbufferSize     = 0;
+    GLfloat minAliasedPointSize    = 1.0f;
+    GLfloat maxAliasedPointSize    = 1.0f;
+    GLfloat minAliasedLineWidth    = 0.0f;
+    GLfloat maxAliasedLineWidth    = 0.0f;
 
     // ES 3.1 (April 29, 2015) 20.40: implementation dependent values (cont.)
-    GLuint maxDrawBuffers;
-    GLuint maxFramebufferWidth;
-    GLuint maxFramebufferHeight;
-    GLuint maxFramebufferSamples;
-    GLuint maxColorAttachments;
-    GLuint maxViewportWidth;
-    GLuint maxViewportHeight;
-    GLuint maxSampleMaskWords;
-    GLuint maxColorTextureSamples;
-    GLuint maxDepthTextureSamples;
-    GLuint maxIntegerSamples;
-    GLuint64 maxServerWaitTimeout;
+    GLuint maxDrawBuffers         = 0;
+    GLuint maxFramebufferWidth    = 0;
+    GLuint maxFramebufferHeight   = 0;
+    GLuint maxFramebufferSamples  = 0;
+    GLuint maxColorAttachments    = 0;
+    GLuint maxViewportWidth       = 0;
+    GLuint maxViewportHeight      = 0;
+    GLuint maxSampleMaskWords     = 0;
+    GLuint maxColorTextureSamples = 0;
+    GLuint maxDepthTextureSamples = 0;
+    GLuint maxIntegerSamples      = 0;
+    GLuint64 maxServerWaitTimeout = 0;
 
     // ES 3.1 (April 29, 2015) Table 20.41: Implementation dependent values (cont.)
-    GLint maxVertexAttribRelativeOffset;
-    GLuint maxVertexAttribBindings;
-    GLint maxVertexAttribStride;
-    GLuint maxElementsIndices;
-    GLuint maxElementsVertices;
+    GLint maxVertexAttribRelativeOffset = 0;
+    GLuint maxVertexAttribBindings      = 0;
+    GLint maxVertexAttribStride         = 0;
+    GLuint maxElementsIndices           = 0;
+    GLuint maxElementsVertices          = 0;
     std::vector<GLenum> compressedTextureFormats;
     std::vector<GLenum> programBinaryFormats;
     std::vector<GLenum> shaderBinaryFormats;
@@ -641,95 +644,95 @@
     // limits
     // GL_EXT_geometry_shader (May 31, 2016) Table 20.46: Implementation dependent aggregate shader
     // limits
-    ShaderMap<GLuint> maxShaderUniformBlocks;
-    ShaderMap<GLuint> maxShaderTextureImageUnits;
-    ShaderMap<GLuint> maxShaderStorageBlocks;
-    ShaderMap<GLuint> maxShaderUniformComponents;
-    ShaderMap<GLuint> maxShaderAtomicCounterBuffers;
-    ShaderMap<GLuint> maxShaderAtomicCounters;
-    ShaderMap<GLuint> maxShaderImageUniforms;
+    ShaderMap<GLuint> maxShaderUniformBlocks        = {};
+    ShaderMap<GLuint> maxShaderTextureImageUnits    = {};
+    ShaderMap<GLuint> maxShaderStorageBlocks        = {};
+    ShaderMap<GLuint> maxShaderUniformComponents    = {};
+    ShaderMap<GLuint> maxShaderAtomicCounterBuffers = {};
+    ShaderMap<GLuint> maxShaderAtomicCounters       = {};
+    ShaderMap<GLuint> maxShaderImageUniforms        = {};
     // Note that we can query MAX_COMPUTE_UNIFORM_COMPONENTS and MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT
     // by GetIntegerv, but we can only use GetInteger64v on MAX_VERTEX_UNIFORM_COMPONENTS and
     // MAX_FRAGMENT_UNIFORM_COMPONENTS. Currently we use GLuint64 to store all these values so that
     // we can put them together into one ShaderMap.
-    ShaderMap<GLuint64> maxCombinedShaderUniformComponents;
+    ShaderMap<GLuint64> maxCombinedShaderUniformComponents = {};
 
     // ES 3.1 (April 29, 2015) Table 20.43: Implementation dependent Vertex shader limits
-    GLuint maxVertexAttributes;
-    GLuint maxVertexUniformVectors;
-    GLuint maxVertexOutputComponents;
+    GLuint maxVertexAttributes       = 0;
+    GLuint maxVertexUniformVectors   = 0;
+    GLuint maxVertexOutputComponents = 0;
 
     // ES 3.1 (April 29, 2015) Table 20.44: Implementation dependent Fragment shader limits
-    GLuint maxFragmentUniformVectors;
-    GLuint maxFragmentInputComponents;
-    GLint minProgramTextureGatherOffset;
-    GLuint maxProgramTextureGatherOffset;
-    GLint minProgramTexelOffset;
-    GLint maxProgramTexelOffset;
+    GLuint maxFragmentUniformVectors     = 0;
+    GLuint maxFragmentInputComponents    = 0;
+    GLint minProgramTextureGatherOffset  = 0;
+    GLuint maxProgramTextureGatherOffset = 0;
+    GLint minProgramTexelOffset          = 0;
+    GLint maxProgramTexelOffset          = 0;
 
     // ES 3.1 (April 29, 2015) Table 20.45: implementation dependent compute shader limits
-    std::array<GLuint, 3> maxComputeWorkGroupCount;
-    std::array<GLuint, 3> maxComputeWorkGroupSize;
-    GLuint maxComputeWorkGroupInvocations;
-    GLuint maxComputeSharedMemorySize;
+    std::array<GLuint, 3> maxComputeWorkGroupCount = {0, 0, 0};
+    std::array<GLuint, 3> maxComputeWorkGroupSize  = {0, 0, 0};
+    GLuint maxComputeWorkGroupInvocations          = 0;
+    GLuint maxComputeSharedMemorySize              = 0;
 
     // ES 3.1 (April 29, 2015) Table 20.46: implementation dependent aggregate shader limits
-    GLuint maxUniformBufferBindings;
-    GLuint64 maxUniformBlockSize;
-    GLuint uniformBufferOffsetAlignment;
-    GLuint maxCombinedUniformBlocks;
-    GLuint maxVaryingComponents;
-    GLuint maxVaryingVectors;
-    GLuint maxCombinedTextureImageUnits;
-    GLuint maxCombinedShaderOutputResources;
+    GLuint maxUniformBufferBindings         = 0;
+    GLuint64 maxUniformBlockSize            = 0;
+    GLuint uniformBufferOffsetAlignment     = 0;
+    GLuint maxCombinedUniformBlocks         = 0;
+    GLuint maxVaryingComponents             = 0;
+    GLuint maxVaryingVectors                = 0;
+    GLuint maxCombinedTextureImageUnits     = 0;
+    GLuint maxCombinedShaderOutputResources = 0;
 
     // ES 3.1 (April 29, 2015) Table 20.47: implementation dependent aggregate shader limits (cont.)
-    GLuint maxUniformLocations;
-    GLuint maxAtomicCounterBufferBindings;
-    GLuint maxAtomicCounterBufferSize;
-    GLuint maxCombinedAtomicCounterBuffers;
-    GLuint maxCombinedAtomicCounters;
-    GLuint maxImageUnits;
-    GLuint maxCombinedImageUniforms;
-    GLuint maxShaderStorageBufferBindings;
-    GLuint64 maxShaderStorageBlockSize;
-    GLuint maxCombinedShaderStorageBlocks;
-    GLuint shaderStorageBufferOffsetAlignment;
+    GLuint maxUniformLocations                = 0;
+    GLuint maxAtomicCounterBufferBindings     = 0;
+    GLuint maxAtomicCounterBufferSize         = 0;
+    GLuint maxCombinedAtomicCounterBuffers    = 0;
+    GLuint maxCombinedAtomicCounters          = 0;
+    GLuint maxImageUnits                      = 0;
+    GLuint maxCombinedImageUniforms           = 0;
+    GLuint maxShaderStorageBufferBindings     = 0;
+    GLuint64 maxShaderStorageBlockSize        = 0;
+    GLuint maxCombinedShaderStorageBlocks     = 0;
+    GLuint shaderStorageBufferOffsetAlignment = 0;
 
     // ES 3.1 (April 29, 2015) Table 20.48: implementation dependent transform feedback limits
-    GLuint maxTransformFeedbackInterleavedComponents;
-    GLuint maxTransformFeedbackSeparateAttributes;
-    GLuint maxTransformFeedbackSeparateComponents;
+    GLuint maxTransformFeedbackInterleavedComponents = 0;
+    GLuint maxTransformFeedbackSeparateAttributes    = 0;
+    GLuint maxTransformFeedbackSeparateComponents    = 0;
 
     // ES 3.1 (April 29, 2015) Table 20.49: Framebuffer Dependent Values
-    GLuint maxSamples;
+    GLuint maxSamples = 0;
 
     // GL_EXT_geometry_shader (May 31, 2016) Table 20.40: Implementation-Dependent Values (cont.)
-    GLuint maxFramebufferLayers;
-    GLuint layerProvokingVertex;
+    GLuint maxFramebufferLayers = 0;
+    GLuint layerProvokingVertex = 0;
 
     // GL_EXT_geometry_shader (May 31, 2016) Table 20.43gs: Implementation dependent geometry shader
     // limits
-    GLuint maxGeometryInputComponents;
-    GLuint maxGeometryOutputComponents;
-    GLuint maxGeometryOutputVertices;
-    GLuint maxGeometryTotalOutputComponents;
-    GLuint maxGeometryShaderInvocations;
+    GLuint maxGeometryInputComponents       = 0;
+    GLuint maxGeometryOutputComponents      = 0;
+    GLuint maxGeometryOutputVertices        = 0;
+    GLuint maxGeometryTotalOutputComponents = 0;
+    GLuint maxGeometryShaderInvocations     = 0;
 
-    GLuint subPixelBits;
+    GLuint subPixelBits = 4;
 
     // GLES1 emulation: Caps for ES 1.1. Taken from Table 6.20 / 6.22 in the OpenGL ES 1.1 spec.
-    GLuint maxMultitextureUnits;
-    GLuint maxClipPlanes;
-    GLuint maxLights;
+    GLuint maxMultitextureUnits                 = 0;
+    GLuint maxClipPlanes                        = 0;
+    GLuint maxLights                            = 0;
     static constexpr int GlobalMatrixStackDepth = 16;
-    GLuint maxModelviewMatrixStackDepth;
-    GLuint maxProjectionMatrixStackDepth;
-    GLuint maxTextureMatrixStackDepth;
-    GLfloat minSmoothPointSize;
-    GLfloat maxSmoothPointSize;
-    GLfloat minSmoothLineWidth;
-    GLfloat maxSmoothLineWidth;
+    GLuint maxModelviewMatrixStackDepth         = 0;
+    GLuint maxProjectionMatrixStackDepth        = 0;
+    GLuint maxTextureMatrixStackDepth           = 0;
+    GLfloat minSmoothPointSize                  = 0.0f;
+    GLfloat maxSmoothPointSize                  = 0.0f;
+    GLfloat minSmoothLineWidth                  = 0.0f;
+    GLfloat maxSmoothLineWidth                  = 0.0f;
 };
 
 Caps GenerateMinimumCaps(const Version &clientVersion, const Extensions &extensions);
@@ -754,148 +757,148 @@
     std::vector<std::string> getStrings() const;
 
     // EGL_EXT_create_context_robustness
-    bool createContextRobustness;
+    bool createContextRobustness = false;
 
     // EGL_ANGLE_d3d_share_handle_client_buffer
-    bool d3dShareHandleClientBuffer;
+    bool d3dShareHandleClientBuffer = false;
 
     // EGL_ANGLE_d3d_texture_client_buffer
-    bool d3dTextureClientBuffer;
+    bool d3dTextureClientBuffer = false;
 
     // EGL_ANGLE_surface_d3d_texture_2d_share_handle
-    bool surfaceD3DTexture2DShareHandle;
+    bool surfaceD3DTexture2DShareHandle = false;
 
     // EGL_ANGLE_query_surface_pointer
-    bool querySurfacePointer;
+    bool querySurfacePointer = false;
 
     // EGL_ANGLE_window_fixed_size
-    bool windowFixedSize;
+    bool windowFixedSize = false;
 
     // EGL_ANGLE_keyed_mutex
-    bool keyedMutex;
+    bool keyedMutex = false;
 
     // EGL_ANGLE_surface_orientation
-    bool surfaceOrientation;
+    bool surfaceOrientation = false;
 
     // EGL_NV_post_sub_buffer
-    bool postSubBuffer;
+    bool postSubBuffer = false;
 
     // EGL_KHR_create_context
-    bool createContext;
+    bool createContext = false;
 
     // EGL_EXT_device_query
-    bool deviceQuery;
+    bool deviceQuery = false;
 
     // EGL_KHR_image
-    bool image;
+    bool image = false;
 
     // EGL_KHR_image_base
-    bool imageBase;
+    bool imageBase = false;
 
     // EGL_KHR_image_pixmap
-    bool imagePixmap;
+    bool imagePixmap = false;
 
     // EGL_KHR_gl_texture_2D_image
-    bool glTexture2DImage;
+    bool glTexture2DImage = false;
 
     // EGL_KHR_gl_texture_cubemap_image
-    bool glTextureCubemapImage;
+    bool glTextureCubemapImage = false;
 
     // EGL_KHR_gl_texture_3D_image
-    bool glTexture3DImage;
+    bool glTexture3DImage = false;
 
     // EGL_KHR_gl_renderbuffer_image
-    bool glRenderbufferImage;
+    bool glRenderbufferImage = false;
 
     // EGL_KHR_get_all_proc_addresses
-    bool getAllProcAddresses;
+    bool getAllProcAddresses = false;
 
     // EGL_ANGLE_flexible_surface_compatibility
-    bool flexibleSurfaceCompatibility;
+    bool flexibleSurfaceCompatibility = false;
 
     // EGL_ANGLE_direct_composition
-    bool directComposition;
+    bool directComposition = false;
 
     // EGL_ANGLE_windows_ui_composition
-    bool windowsUIComposition;
+    bool windowsUIComposition = false;
 
     // KHR_create_context_no_error
-    bool createContextNoError;
+    bool createContextNoError = false;
 
     // EGL_KHR_stream
-    bool stream;
+    bool stream = false;
 
     // EGL_KHR_stream_consumer_gltexture
-    bool streamConsumerGLTexture;
+    bool streamConsumerGLTexture = false;
 
     // EGL_NV_stream_consumer_gltexture_yuv
-    bool streamConsumerGLTextureYUV;
+    bool streamConsumerGLTextureYUV = false;
 
     // EGL_ANGLE_stream_producer_d3d_texture
-    bool streamProducerD3DTexture;
+    bool streamProducerD3DTexture = false;
 
     // EGL_KHR_fence_sync
-    bool fenceSync;
+    bool fenceSync = false;
 
     // EGL_KHR_wait_sync
-    bool waitSync;
+    bool waitSync = false;
 
     // EGL_ANGLE_create_context_webgl_compatibility
-    bool createContextWebGLCompatibility;
+    bool createContextWebGLCompatibility = false;
 
     // EGL_CHROMIUM_create_context_bind_generates_resource
-    bool createContextBindGeneratesResource;
+    bool createContextBindGeneratesResource = false;
 
     // EGL_CHROMIUM_get_sync_values
-    bool getSyncValues;
+    bool getSyncValues = false;
 
     // EGL_KHR_swap_buffers_with_damage
-    bool swapBuffersWithDamage;
+    bool swapBuffersWithDamage = false;
 
     // EGL_EXT_pixel_format_float
-    bool pixelFormatFloat;
+    bool pixelFormatFloat = false;
 
     // EGL_KHR_surfaceless_context
-    bool surfacelessContext;
+    bool surfacelessContext = false;
 
     // EGL_ANGLE_display_texture_share_group
-    bool displayTextureShareGroup;
+    bool displayTextureShareGroup = false;
 
     // EGL_ANGLE_create_context_client_arrays
-    bool createContextClientArrays;
+    bool createContextClientArrays = false;
 
     // EGL_ANGLE_program_cache_control
-    bool programCacheControl;
+    bool programCacheControl = false;
 
     // EGL_ANGLE_robust_resource_initialization
-    bool robustResourceInitialization;
+    bool robustResourceInitialization = false;
 
     // EGL_ANGLE_iosurface_client_buffer
-    bool iosurfaceClientBuffer;
+    bool iosurfaceClientBuffer = false;
 
     // EGL_ANGLE_create_context_extensions_enabled
-    bool createContextExtensionsEnabled;
+    bool createContextExtensionsEnabled = false;
 
     // EGL_ANDROID_presentation_time
-    bool presentationTime;
+    bool presentationTime = false;
 
     // EGL_ANDROID_blob_cache
-    bool blobCache;
+    bool blobCache = false;
 
     // EGL_ANDROID_image_native_buffer
-    bool imageNativeBuffer;
+    bool imageNativeBuffer = false;
 
     // EGL_ANDROID_get_frame_timestamps
-    bool getFrameTimestamps;
+    bool getFrameTimestamps = false;
 
     // EGL_ANDROID_recordable
-    bool recordable;
+    bool recordable = false;
 
     // EGL_ANGLE_power_preference
-    bool powerPreference;
+    bool powerPreference = false;
 
     // EGL_ANGLE_image_d3d11_texture
-    bool imageD3D11Texture;
+    bool imageD3D11Texture = false;
 
     // EGL_ANDROID_get_native_client_buffer
     bool getNativeClientBufferANDROID = false;
@@ -909,7 +912,7 @@
     std::vector<std::string> getStrings() const;
 
     // EGL_ANGLE_device_d3d
-    bool deviceD3D;
+    bool deviceD3D = false;
 };
 
 struct ClientExtensions
@@ -921,55 +924,55 @@
     std::vector<std::string> getStrings() const;
 
     // EGL_EXT_client_extensions
-    bool clientExtensions;
+    bool clientExtensions = false;
 
     // EGL_EXT_platform_base
-    bool platformBase;
+    bool platformBase = false;
 
     // EGL_EXT_platform_device
-    bool platformDevice;
+    bool platformDevice = false;
 
     // EGL_ANGLE_platform_angle
-    bool platformANGLE;
+    bool platformANGLE = false;
 
     // EGL_ANGLE_platform_angle_d3d
-    bool platformANGLED3D;
+    bool platformANGLED3D = false;
 
     // EGL_ANGLE_platform_angle_opengl
-    bool platformANGLEOpenGL;
+    bool platformANGLEOpenGL = false;
 
     // EGL_ANGLE_platform_angle_null
-    bool platformANGLENULL;
+    bool platformANGLENULL = false;
 
     // EGL_ANGLE_platform_angle_vulkan
-    bool platformANGLEVulkan;
+    bool platformANGLEVulkan = false;
 
     // EGL_ANGLE_platform_angle_context_virtualization
-    bool platformANGLEContextVirtualization;
+    bool platformANGLEContextVirtualization = false;
 
     // EGL_ANGLE_device_creation
-    bool deviceCreation;
+    bool deviceCreation = false;
 
     // EGL_ANGLE_device_creation_d3d11
-    bool deviceCreationD3D11;
+    bool deviceCreationD3D11 = false;
 
     // EGL_ANGLE_x11_visual
-    bool x11Visual;
+    bool x11Visual = false;
 
     // EGL_ANGLE_experimental_present_path
-    bool experimentalPresentPath;
+    bool experimentalPresentPath = false;
 
     // EGL_KHR_client_get_all_proc_addresses
-    bool clientGetAllProcAddresses;
+    bool clientGetAllProcAddresses = false;
 
     // EGL_KHR_debug
-    bool debug;
+    bool debug = false;
 
     // EGL_ANGLE_explicit_context
-    bool explicitContext;
+    bool explicitContext = false;
 
     // EGL_ANGLE_feature_control
-    bool featureControlANGLE;
+    bool featureControlANGLE = false;
 };
 
 }  // namespace egl