Capture/Replay: Pass gl::State to capture functions.

This replaces passing gl::Context. Using a gl::State directly will more
easily let the mid-execution replay code pass a mocked gl::State
instead of having to modify the real underlying Context state. For
example when capturing pixel pack and unpack parameters the states
could not be overridden without changing the gl::Context itself.
Similarly when capturing client side data.

Also moves a query parameter info function into queryutils so it can be
accessible to the State-based capture.

Refactoring change only.

Bug: angleproject:3611
Change-Id: I3c064001cfa83ebbb67a2b8fc8b6180491edd215
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1899728
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/include/angle_gl.h b/include/angle_gl.h
index 06eb3f1..4ff294b 100644
--- a/include/angle_gl.h
+++ b/include/angle_gl.h
@@ -18,4 +18,10 @@
 #include "GLES3/gl31.h"
 #include "GLES3/gl32.h"
 
+// TODO(http://anglebug.com/3730): Autogenerate these enums from gl.xml
+// HACK: Defines for queries that are not in GLES
+#define GL_CONTEXT_PROFILE_MASK 0x9126
+#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
+#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
+
 #endif  // ANGLEGL_H_
diff --git a/scripts/code_generation_hashes/GL_EGL_entry_points.json b/scripts/code_generation_hashes/GL_EGL_entry_points.json
index ba8b0e8..3927f7c 100644
--- a/scripts/code_generation_hashes/GL_EGL_entry_points.json
+++ b/scripts/code_generation_hashes/GL_EGL_entry_points.json
@@ -6,7 +6,7 @@
   "scripts/entry_point_packed_gl_enums.json":
     "3b72a1d43df45cf53784b2a0002b93e5",
   "scripts/generate_entry_points.py":
-    "fef06e2feec72f9e4bf4f2b8c9c76c17",
+    "36f89f5514fff27ecb4baeded89ae64d",
   "scripts/gl.xml":
     "b470cb06b06cbbe7adb2c8129ec85708",
   "scripts/gl_angle_ext.xml":
@@ -66,29 +66,29 @@
   "src/libANGLE/Context_gles_ext_autogen.h":
     "4a24e91315986187921051585d04f66f",
   "src/libANGLE/capture_gles_1_0_autogen.cpp":
-    "cdf61f5bb245ec4b7976922ad3c983b4",
+    "01eb0a76c176e5cdba3102cae58334af",
   "src/libANGLE/capture_gles_1_0_autogen.h":
-    "942cece5d16510b77529dd549fc8ffb6",
+    "d5ecca8738a27e2b35fd61889fb4a017",
   "src/libANGLE/capture_gles_2_0_autogen.cpp":
-    "6abbbf043ab061141516ec0a78d83414",
+    "c2b906c8ea8eca4d4791d124bd7135ad",
   "src/libANGLE/capture_gles_2_0_autogen.h":
-    "1d7c76f7dfcb666161bc4675932511c5",
+    "af53b8ded1e0d85db9e53c4997c6e995",
   "src/libANGLE/capture_gles_3_0_autogen.cpp":
-    "8c29bbcc49be5d9792b65a98dde38c81",
+    "0cbaed1327ba5f361e04ceb0537e3948",
   "src/libANGLE/capture_gles_3_0_autogen.h":
-    "47530c15422e03b9cc224533eed1f2f7",
+    "c76e9098943e28c0e9b68ac76b22d5a1",
   "src/libANGLE/capture_gles_3_1_autogen.cpp":
-    "2a941ced0f0721fb0256accbf07fc4c3",
+    "6d1662f483cee2d166c4ead3824b8d4c",
   "src/libANGLE/capture_gles_3_1_autogen.h":
-    "389c0212c9d2da8bdc159aecee243551",
+    "1739a558c3e77bef37d9fa710eb78932",
   "src/libANGLE/capture_gles_3_2_autogen.cpp":
-    "105d24635bacbd3e464da5056c328987",
+    "f74e229e52cc19b0678207e6204b563d",
   "src/libANGLE/capture_gles_3_2_autogen.h":
-    "670fe346f46607380fc7cf8234657123",
+    "8d96d227765ee9b0d7b532edcc9f3bf1",
   "src/libANGLE/capture_gles_ext_autogen.cpp":
-    "b3e07e16ed33b55ca00e06167d361efa",
+    "3bd6fcda980f381cbbad2956b896afd9",
   "src/libANGLE/capture_gles_ext_autogen.h":
-    "072f50469f77d3ecb9fa2145e9f100f6",
+    "2626f039751578bd51c1cbbc1e233f5d",
   "src/libANGLE/entry_points_enum_autogen.cpp":
     "6f259507f339880bf81920738e82e688",
   "src/libANGLE/entry_points_enum_autogen.h":
diff --git a/scripts/generate_entry_points.py b/scripts/generate_entry_points.py
index 37f9637..8fdffd7 100755
--- a/scripts/generate_entry_points.py
+++ b/scripts/generate_entry_points.py
@@ -276,8 +276,6 @@
 
 namespace gl
 {{
-class Context;
-
 {prototypes}
 }}  // namespace gl
 
@@ -898,9 +896,9 @@
     packed_gl_enums = get_packed_enums(cmd_packed_gl_enums, cmd_name)
 
     params_with_type = get_internal_params(
-        cmd_name, ["const Context *context", "bool isCallValid"] + params, cmd_packed_gl_enums)
+        cmd_name, ["const State &glState", "bool isCallValid"] + params, cmd_packed_gl_enums)
     params_just_name = ", ".join(
-        ["context", "isCallValid"] +
+        ["glState", "isCallValid"] +
         [just_the_name_packed(param, packed_gl_enums) for param in params])
 
     parameter_captures = []
@@ -995,7 +993,7 @@
 
 def format_capture_proto(cmd_name, proto, params, cmd_packed_gl_enums):
     internal_params = get_internal_params(
-        cmd_name, ["const Context *context", "bool isCallValid"] + params, cmd_packed_gl_enums)
+        cmd_name, ["const State &glState", "bool isCallValid"] + params, cmd_packed_gl_enums)
     return_type = proto[:-len(cmd_name)].strip()
     if return_type != "void":
         internal_params += ", %s returnValue" % return_type
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 6f0bc5e..8750e69 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -47,12 +47,6 @@
 #include "libANGLE/renderer/Format.h"
 #include "libANGLE/validationES.h"
 
-// TODO(http://anglebug.com/3730): Autogenerate these enums from gl.xml
-// HACK: Defines for queries that are not in GLES
-#define GL_CONTEXT_PROFILE_MASK 0x9126
-#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
-#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
-
 namespace gl
 {
 namespace
@@ -8125,760 +8119,7 @@
 
 bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams) const
 {
-    // Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation
-    // is FLOAT rather than INT, as would be suggested by the GL ES 2.0 spec. This is due
-    // to the fact that it is stored internally as a float, and so would require conversion
-    // if returned from Context::getIntegerv. Since this conversion is already implemented
-    // in the case that one calls glGetIntegerv to retrieve a float-typed state variable, we
-    // place DEPTH_CLEAR_VALUE with the floats. This should make no difference to the calling
-    // application.
-    switch (pname)
-    {
-        case GL_COMPRESSED_TEXTURE_FORMATS:
-        {
-            *type      = GL_INT;
-            *numParams = static_cast<unsigned int>(getCaps().compressedTextureFormats.size());
-            return true;
-        }
-        case GL_SHADER_BINARY_FORMATS:
-        {
-            *type      = GL_INT;
-            *numParams = static_cast<unsigned int>(getCaps().shaderBinaryFormats.size());
-            return true;
-        }
-
-        case GL_MAX_VERTEX_ATTRIBS:
-        case GL_MAX_VERTEX_UNIFORM_VECTORS:
-        case GL_MAX_VARYING_VECTORS:
-        case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
-        case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
-        case GL_MAX_TEXTURE_IMAGE_UNITS:
-        case GL_MAX_FRAGMENT_UNIFORM_VECTORS:
-        case GL_MAX_RENDERBUFFER_SIZE:
-        case GL_NUM_SHADER_BINARY_FORMATS:
-        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
-        case GL_ARRAY_BUFFER_BINDING:
-        case GL_FRAMEBUFFER_BINDING:  // GL_FRAMEBUFFER_BINDING now equivalent to
-                                      // GL_DRAW_FRAMEBUFFER_BINDING_ANGLE
-        case GL_RENDERBUFFER_BINDING:
-        case GL_CURRENT_PROGRAM:
-        case GL_PACK_ALIGNMENT:
-        case GL_UNPACK_ALIGNMENT:
-        case GL_GENERATE_MIPMAP_HINT:
-        case GL_RED_BITS:
-        case GL_GREEN_BITS:
-        case GL_BLUE_BITS:
-        case GL_ALPHA_BITS:
-        case GL_DEPTH_BITS:
-        case GL_STENCIL_BITS:
-        case GL_ELEMENT_ARRAY_BUFFER_BINDING:
-        case GL_CULL_FACE_MODE:
-        case GL_FRONT_FACE:
-        case GL_ACTIVE_TEXTURE:
-        case GL_STENCIL_FUNC:
-        case GL_STENCIL_VALUE_MASK:
-        case GL_STENCIL_REF:
-        case GL_STENCIL_FAIL:
-        case GL_STENCIL_PASS_DEPTH_FAIL:
-        case GL_STENCIL_PASS_DEPTH_PASS:
-        case GL_STENCIL_BACK_FUNC:
-        case GL_STENCIL_BACK_VALUE_MASK:
-        case GL_STENCIL_BACK_REF:
-        case GL_STENCIL_BACK_FAIL:
-        case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
-        case GL_STENCIL_BACK_PASS_DEPTH_PASS:
-        case GL_DEPTH_FUNC:
-        case GL_BLEND_SRC_RGB:
-        case GL_BLEND_SRC_ALPHA:
-        case GL_BLEND_DST_RGB:
-        case GL_BLEND_DST_ALPHA:
-        case GL_BLEND_EQUATION_RGB:
-        case GL_BLEND_EQUATION_ALPHA:
-        case GL_STENCIL_WRITEMASK:
-        case GL_STENCIL_BACK_WRITEMASK:
-        case GL_STENCIL_CLEAR_VALUE:
-        case GL_SUBPIXEL_BITS:
-        case GL_MAX_TEXTURE_SIZE:
-        case GL_MAX_CUBE_MAP_TEXTURE_SIZE:
-        case GL_SAMPLE_BUFFERS:
-        case GL_SAMPLES:
-        case GL_IMPLEMENTATION_COLOR_READ_TYPE:
-        case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
-        case GL_TEXTURE_BINDING_2D:
-        case GL_TEXTURE_BINDING_CUBE_MAP:
-        case GL_RESET_NOTIFICATION_STRATEGY_EXT:
-        {
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        }
-        case GL_PACK_REVERSE_ROW_ORDER_ANGLE:
-        {
-            if (!getExtensions().packReverseRowOrder)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        }
-        case GL_MAX_RECTANGLE_TEXTURE_SIZE_ANGLE:
-        case GL_TEXTURE_BINDING_RECTANGLE_ANGLE:
-        {
-            if (!getExtensions().textureRectangle)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        }
-        case GL_MAX_DRAW_BUFFERS_EXT:
-        case GL_MAX_COLOR_ATTACHMENTS_EXT:
-        {
-            if ((getClientMajorVersion() < 3) && !getExtensions().drawBuffers)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        }
-        case GL_MAX_VIEWPORT_DIMS:
-        {
-            *type      = GL_INT;
-            *numParams = 2;
-            return true;
-        }
-        case GL_VIEWPORT:
-        case GL_SCISSOR_BOX:
-        {
-            *type      = GL_INT;
-            *numParams = 4;
-            return true;
-        }
-        case GL_SHADER_COMPILER:
-        case GL_SAMPLE_COVERAGE_INVERT:
-        case GL_DEPTH_WRITEMASK:
-        case GL_CULL_FACE:                 // CULL_FACE through DITHER are natural to IsEnabled,
-        case GL_POLYGON_OFFSET_FILL:       // but can be retrieved through the Get{Type}v queries.
-        case GL_SAMPLE_ALPHA_TO_COVERAGE:  // For this purpose, they are treated here as
-                                           // bool-natural
-        case GL_SAMPLE_COVERAGE:
-        case GL_SCISSOR_TEST:
-        case GL_STENCIL_TEST:
-        case GL_DEPTH_TEST:
-        case GL_BLEND:
-        case GL_DITHER:
-        case GL_CONTEXT_ROBUST_ACCESS_EXT:
-        {
-            *type      = GL_BOOL;
-            *numParams = 1;
-            return true;
-        }
-        case GL_COLOR_WRITEMASK:
-        {
-            *type      = GL_BOOL;
-            *numParams = 4;
-            return true;
-        }
-        case GL_POLYGON_OFFSET_FACTOR:
-        case GL_POLYGON_OFFSET_UNITS:
-        case GL_SAMPLE_COVERAGE_VALUE:
-        case GL_DEPTH_CLEAR_VALUE:
-        case GL_LINE_WIDTH:
-        {
-            *type      = GL_FLOAT;
-            *numParams = 1;
-            return true;
-        }
-        case GL_ALIASED_LINE_WIDTH_RANGE:
-        case GL_ALIASED_POINT_SIZE_RANGE:
-        case GL_DEPTH_RANGE:
-        {
-            *type      = GL_FLOAT;
-            *numParams = 2;
-            return true;
-        }
-        case GL_COLOR_CLEAR_VALUE:
-        case GL_BLEND_COLOR:
-        {
-            *type      = GL_FLOAT;
-            *numParams = 4;
-            return true;
-        }
-        case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-            if (!getExtensions().textureFilterAnisotropic)
-            {
-                return false;
-            }
-            *type      = GL_FLOAT;
-            *numParams = 1;
-            return true;
-        case GL_TIMESTAMP_EXT:
-            if (!getExtensions().disjointTimerQuery)
-            {
-                return false;
-            }
-            *type      = GL_INT_64_ANGLEX;
-            *numParams = 1;
-            return true;
-        case GL_GPU_DISJOINT_EXT:
-            if (!getExtensions().disjointTimerQuery)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        case GL_COVERAGE_MODULATION_CHROMIUM:
-            if (!getExtensions().framebufferMixedSamples)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        case GL_TEXTURE_BINDING_EXTERNAL_OES:
-            if (!getExtensions().eglStreamConsumerExternal && !getExtensions().eglImageExternal)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-    }
-
-    if (getClientType() == EGL_OPENGL_API)
-    {
-        switch (pname)
-        {
-            case GL_CONTEXT_FLAGS:
-            case GL_CONTEXT_PROFILE_MASK:
-            {
-                *type      = GL_INT;
-                *numParams = 1;
-                return true;
-            }
-        }
-    }
-
-    if (getExtensions().debug)
-    {
-        switch (pname)
-        {
-            case GL_DEBUG_LOGGED_MESSAGES:
-            case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH:
-            case GL_DEBUG_GROUP_STACK_DEPTH:
-            case GL_MAX_DEBUG_MESSAGE_LENGTH:
-            case GL_MAX_DEBUG_LOGGED_MESSAGES:
-            case GL_MAX_DEBUG_GROUP_STACK_DEPTH:
-            case GL_MAX_LABEL_LENGTH:
-                *type      = GL_INT;
-                *numParams = 1;
-                return true;
-
-            case GL_DEBUG_OUTPUT_SYNCHRONOUS:
-            case GL_DEBUG_OUTPUT:
-                *type      = GL_BOOL;
-                *numParams = 1;
-                return true;
-        }
-    }
-
-    if (getExtensions().multisampleCompatibility)
-    {
-        switch (pname)
-        {
-            case GL_MULTISAMPLE_EXT:
-            case GL_SAMPLE_ALPHA_TO_ONE_EXT:
-                *type      = GL_BOOL;
-                *numParams = 1;
-                return true;
-        }
-    }
-
-    if (getExtensions().pathRendering)
-    {
-        switch (pname)
-        {
-            case GL_PATH_MODELVIEW_MATRIX_CHROMIUM:
-            case GL_PATH_PROJECTION_MATRIX_CHROMIUM:
-                *type      = GL_FLOAT;
-                *numParams = 16;
-                return true;
-        }
-    }
-
-    if (getExtensions().bindGeneratesResource)
-    {
-        switch (pname)
-        {
-            case GL_BIND_GENERATES_RESOURCE_CHROMIUM:
-                *type      = GL_BOOL;
-                *numParams = 1;
-                return true;
-        }
-    }
-
-    if (getExtensions().clientArrays)
-    {
-        switch (pname)
-        {
-            case GL_CLIENT_ARRAYS_ANGLE:
-                *type      = GL_BOOL;
-                *numParams = 1;
-                return true;
-        }
-    }
-
-    if (getExtensions().sRGBWriteControl)
-    {
-        switch (pname)
-        {
-            case GL_FRAMEBUFFER_SRGB_EXT:
-                *type      = GL_BOOL;
-                *numParams = 1;
-                return true;
-        }
-    }
-
-    if (getExtensions().robustResourceInitialization &&
-        pname == GL_ROBUST_RESOURCE_INITIALIZATION_ANGLE)
-    {
-        *type      = GL_BOOL;
-        *numParams = 1;
-        return true;
-    }
-
-    if (getExtensions().programCacheControl && pname == GL_PROGRAM_CACHE_ENABLED_ANGLE)
-    {
-        *type      = GL_BOOL;
-        *numParams = 1;
-        return true;
-    }
-
-    if (getExtensions().parallelShaderCompile && pname == GL_MAX_SHADER_COMPILER_THREADS_KHR)
-    {
-        *type      = GL_INT;
-        *numParams = 1;
-        return true;
-    }
-
-    if (getExtensions().blendFuncExtended && pname == GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT)
-    {
-        *type      = GL_INT;
-        *numParams = 1;
-        return true;
-    }
-
-    // Check for ES3.0+ parameter names which are also exposed as ES2 extensions
-    switch (pname)
-    {
-        // GL_DRAW_FRAMEBUFFER_BINDING_ANGLE equivalent to FRAMEBUFFER_BINDING
-        case GL_READ_FRAMEBUFFER_BINDING_ANGLE:
-            if ((getClientMajorVersion() < 3) && !getExtensions().framebufferBlit)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-
-        case GL_NUM_PROGRAM_BINARY_FORMATS_OES:
-            if ((getClientMajorVersion() < 3) && !getExtensions().getProgramBinary)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-
-        case GL_PROGRAM_BINARY_FORMATS_OES:
-            if ((getClientMajorVersion() < 3) && !getExtensions().getProgramBinary)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = static_cast<unsigned int>(getCaps().programBinaryFormats.size());
-            return true;
-
-        case GL_PACK_ROW_LENGTH:
-        case GL_PACK_SKIP_ROWS:
-        case GL_PACK_SKIP_PIXELS:
-            if ((getClientMajorVersion() < 3) && !getExtensions().packSubimage)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        case GL_UNPACK_ROW_LENGTH:
-        case GL_UNPACK_SKIP_ROWS:
-        case GL_UNPACK_SKIP_PIXELS:
-            if ((getClientMajorVersion() < 3) && !getExtensions().unpackSubimage)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        case GL_VERTEX_ARRAY_BINDING:
-            if ((getClientMajorVersion() < 3) && !getExtensions().vertexArrayObject)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        case GL_PIXEL_PACK_BUFFER_BINDING:
-        case GL_PIXEL_UNPACK_BUFFER_BINDING:
-            if ((getClientMajorVersion() < 3) && !getExtensions().pixelBufferObject)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        case GL_MAX_SAMPLES:
-        {
-            static_assert(GL_MAX_SAMPLES_ANGLE == GL_MAX_SAMPLES,
-                          "GL_MAX_SAMPLES_ANGLE not equal to GL_MAX_SAMPLES");
-            if ((getClientMajorVersion() < 3) && !(getExtensions().framebufferMultisample ||
-                                                   getExtensions().multisampledRenderToTexture))
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-
-            case GL_FRAGMENT_SHADER_DERIVATIVE_HINT:
-                if ((getClientMajorVersion() < 3) && !getExtensions().standardDerivatives)
-                {
-                    return false;
-                }
-                *type      = GL_INT;
-                *numParams = 1;
-                return true;
-        }
-        case GL_TEXTURE_BINDING_3D:
-            if ((getClientMajorVersion() < 3) && !getExtensions().texture3DOES)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        case GL_MAX_3D_TEXTURE_SIZE:
-            if ((getClientMajorVersion() < 3) && !getExtensions().texture3DOES)
-            {
-                return false;
-            }
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-    }
-
-    if (pname >= GL_DRAW_BUFFER0_EXT && pname <= GL_DRAW_BUFFER15_EXT)
-    {
-        if ((getClientVersion() < Version(3, 0)) && !getExtensions().drawBuffers)
-        {
-            return false;
-        }
-        *type      = GL_INT;
-        *numParams = 1;
-        return true;
-    }
-
-    if ((getExtensions().multiview2 || getExtensions().multiview) && pname == GL_MAX_VIEWS_OVR)
-    {
-        *type      = GL_INT;
-        *numParams = 1;
-        return true;
-    }
-
-    if (getClientVersion() < Version(2, 0))
-    {
-        switch (pname)
-        {
-            case GL_ALPHA_TEST_FUNC:
-            case GL_CLIENT_ACTIVE_TEXTURE:
-            case GL_MATRIX_MODE:
-            case GL_MAX_TEXTURE_UNITS:
-            case GL_MAX_MODELVIEW_STACK_DEPTH:
-            case GL_MAX_PROJECTION_STACK_DEPTH:
-            case GL_MAX_TEXTURE_STACK_DEPTH:
-            case GL_MAX_LIGHTS:
-            case GL_MAX_CLIP_PLANES:
-            case GL_VERTEX_ARRAY_STRIDE:
-            case GL_NORMAL_ARRAY_STRIDE:
-            case GL_COLOR_ARRAY_STRIDE:
-            case GL_TEXTURE_COORD_ARRAY_STRIDE:
-            case GL_VERTEX_ARRAY_SIZE:
-            case GL_COLOR_ARRAY_SIZE:
-            case GL_TEXTURE_COORD_ARRAY_SIZE:
-            case GL_VERTEX_ARRAY_TYPE:
-            case GL_NORMAL_ARRAY_TYPE:
-            case GL_COLOR_ARRAY_TYPE:
-            case GL_TEXTURE_COORD_ARRAY_TYPE:
-            case GL_VERTEX_ARRAY_BUFFER_BINDING:
-            case GL_NORMAL_ARRAY_BUFFER_BINDING:
-            case GL_COLOR_ARRAY_BUFFER_BINDING:
-            case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
-            case GL_POINT_SIZE_ARRAY_STRIDE_OES:
-            case GL_POINT_SIZE_ARRAY_TYPE_OES:
-            case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
-            case GL_SHADE_MODEL:
-            case GL_MODELVIEW_STACK_DEPTH:
-            case GL_PROJECTION_STACK_DEPTH:
-            case GL_TEXTURE_STACK_DEPTH:
-            case GL_LOGIC_OP_MODE:
-            case GL_BLEND_SRC:
-            case GL_BLEND_DST:
-            case GL_PERSPECTIVE_CORRECTION_HINT:
-            case GL_POINT_SMOOTH_HINT:
-            case GL_LINE_SMOOTH_HINT:
-            case GL_FOG_HINT:
-                *type      = GL_INT;
-                *numParams = 1;
-                return true;
-            case GL_ALPHA_TEST_REF:
-            case GL_FOG_DENSITY:
-            case GL_FOG_START:
-            case GL_FOG_END:
-            case GL_FOG_MODE:
-            case GL_POINT_SIZE:
-            case GL_POINT_SIZE_MIN:
-            case GL_POINT_SIZE_MAX:
-            case GL_POINT_FADE_THRESHOLD_SIZE:
-                *type      = GL_FLOAT;
-                *numParams = 1;
-                return true;
-            case GL_SMOOTH_POINT_SIZE_RANGE:
-            case GL_SMOOTH_LINE_WIDTH_RANGE:
-                *type      = GL_FLOAT;
-                *numParams = 2;
-                return true;
-            case GL_CURRENT_COLOR:
-            case GL_CURRENT_TEXTURE_COORDS:
-            case GL_LIGHT_MODEL_AMBIENT:
-            case GL_FOG_COLOR:
-                *type      = GL_FLOAT;
-                *numParams = 4;
-                return true;
-            case GL_CURRENT_NORMAL:
-            case GL_POINT_DISTANCE_ATTENUATION:
-                *type      = GL_FLOAT;
-                *numParams = 3;
-                return true;
-            case GL_MODELVIEW_MATRIX:
-            case GL_PROJECTION_MATRIX:
-            case GL_TEXTURE_MATRIX:
-                *type      = GL_FLOAT;
-                *numParams = 16;
-                return true;
-            case GL_LIGHT_MODEL_TWO_SIDE:
-                *type      = GL_BOOL;
-                *numParams = 1;
-                return true;
-        }
-    }
-
-    if (getClientVersion() < Version(3, 0))
-    {
-        return false;
-    }
-
-    // Check for ES3.0+ parameter names
-    switch (pname)
-    {
-        case GL_MAX_UNIFORM_BUFFER_BINDINGS:
-        case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:
-        case GL_UNIFORM_BUFFER_BINDING:
-        case GL_TRANSFORM_FEEDBACK_BINDING:
-        case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
-        case GL_COPY_READ_BUFFER_BINDING:
-        case GL_COPY_WRITE_BUFFER_BINDING:
-        case GL_SAMPLER_BINDING:
-        case GL_READ_BUFFER:
-        case GL_TEXTURE_BINDING_3D:
-        case GL_TEXTURE_BINDING_2D_ARRAY:
-        case GL_MAX_ARRAY_TEXTURE_LAYERS:
-        case GL_MAX_VERTEX_UNIFORM_BLOCKS:
-        case GL_MAX_FRAGMENT_UNIFORM_BLOCKS:
-        case GL_MAX_COMBINED_UNIFORM_BLOCKS:
-        case GL_MAX_VERTEX_OUTPUT_COMPONENTS:
-        case GL_MAX_FRAGMENT_INPUT_COMPONENTS:
-        case GL_MAX_VARYING_COMPONENTS:
-        case GL_MAX_VERTEX_UNIFORM_COMPONENTS:
-        case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:
-        case GL_MIN_PROGRAM_TEXEL_OFFSET:
-        case GL_MAX_PROGRAM_TEXEL_OFFSET:
-        case GL_NUM_EXTENSIONS:
-        case GL_MAJOR_VERSION:
-        case GL_MINOR_VERSION:
-        case GL_MAX_ELEMENTS_INDICES:
-        case GL_MAX_ELEMENTS_VERTICES:
-        case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
-        case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
-        case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
-        case GL_UNPACK_IMAGE_HEIGHT:
-        case GL_UNPACK_SKIP_IMAGES:
-        {
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        }
-
-        case GL_MAX_ELEMENT_INDEX:
-        case GL_MAX_UNIFORM_BLOCK_SIZE:
-        case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:
-        case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:
-        case GL_MAX_SERVER_WAIT_TIMEOUT:
-        {
-            *type      = GL_INT_64_ANGLEX;
-            *numParams = 1;
-            return true;
-        }
-
-        case GL_TRANSFORM_FEEDBACK_ACTIVE:
-        case GL_TRANSFORM_FEEDBACK_PAUSED:
-        case GL_PRIMITIVE_RESTART_FIXED_INDEX:
-        case GL_RASTERIZER_DISCARD:
-        {
-            *type      = GL_BOOL;
-            *numParams = 1;
-            return true;
-        }
-
-        case GL_MAX_TEXTURE_LOD_BIAS:
-        {
-            *type      = GL_FLOAT;
-            *numParams = 1;
-            return true;
-        }
-    }
-
-    if (getExtensions().requestExtension)
-    {
-        switch (pname)
-        {
-            case GL_NUM_REQUESTABLE_EXTENSIONS_ANGLE:
-                *type      = GL_INT;
-                *numParams = 1;
-                return true;
-        }
-    }
-
-    if (getExtensions().textureMultisample)
-    {
-        switch (pname)
-        {
-            case GL_MAX_COLOR_TEXTURE_SAMPLES_ANGLE:
-            case GL_MAX_INTEGER_SAMPLES_ANGLE:
-            case GL_MAX_DEPTH_TEXTURE_SAMPLES_ANGLE:
-            case GL_TEXTURE_BINDING_2D_MULTISAMPLE_ANGLE:
-            case GL_MAX_SAMPLE_MASK_WORDS:
-                *type      = GL_INT;
-                *numParams = 1;
-                return true;
-        }
-    }
-
-    if (getClientVersion() < Version(3, 1))
-    {
-        return false;
-    }
-
-    switch (pname)
-    {
-        case GL_ATOMIC_COUNTER_BUFFER_BINDING:
-        case GL_DRAW_INDIRECT_BUFFER_BINDING:
-        case GL_DISPATCH_INDIRECT_BUFFER_BINDING:
-        case GL_MAX_FRAMEBUFFER_WIDTH:
-        case GL_MAX_FRAMEBUFFER_HEIGHT:
-        case GL_MAX_FRAMEBUFFER_SAMPLES:
-        case GL_MAX_SAMPLE_MASK_WORDS:
-        case GL_MAX_COLOR_TEXTURE_SAMPLES:
-        case GL_MAX_DEPTH_TEXTURE_SAMPLES:
-        case GL_MAX_INTEGER_SAMPLES:
-        case GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET:
-        case GL_MAX_VERTEX_ATTRIB_BINDINGS:
-        case GL_MAX_VERTEX_ATTRIB_STRIDE:
-        case GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS:
-        case GL_MAX_VERTEX_ATOMIC_COUNTERS:
-        case GL_MAX_VERTEX_IMAGE_UNIFORMS:
-        case GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS:
-        case GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS:
-        case GL_MAX_FRAGMENT_ATOMIC_COUNTERS:
-        case GL_MAX_FRAGMENT_IMAGE_UNIFORMS:
-        case GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS:
-        case GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET:
-        case GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET:
-        case GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS:
-        case GL_MAX_COMPUTE_UNIFORM_BLOCKS:
-        case GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS:
-        case GL_MAX_COMPUTE_SHARED_MEMORY_SIZE:
-        case GL_MAX_COMPUTE_UNIFORM_COMPONENTS:
-        case GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS:
-        case GL_MAX_COMPUTE_ATOMIC_COUNTERS:
-        case GL_MAX_COMPUTE_IMAGE_UNIFORMS:
-        case GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS:
-        case GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS:
-        case GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES:
-        case GL_MAX_UNIFORM_LOCATIONS:
-        case GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS:
-        case GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE:
-        case GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS:
-        case GL_MAX_COMBINED_ATOMIC_COUNTERS:
-        case GL_MAX_IMAGE_UNITS:
-        case GL_MAX_COMBINED_IMAGE_UNIFORMS:
-        case GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS:
-        case GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS:
-        case GL_SHADER_STORAGE_BUFFER_BINDING:
-        case GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT:
-        case GL_TEXTURE_BINDING_2D_MULTISAMPLE:
-        case GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY:
-            *type      = GL_INT;
-            *numParams = 1;
-            return true;
-        case GL_MAX_SHADER_STORAGE_BLOCK_SIZE:
-            *type      = GL_INT_64_ANGLEX;
-            *numParams = 1;
-            return true;
-        case GL_SAMPLE_MASK:
-            *type      = GL_BOOL;
-            *numParams = 1;
-            return true;
-    }
-
-    if (getExtensions().geometryShader)
-    {
-        switch (pname)
-        {
-            case GL_MAX_FRAMEBUFFER_LAYERS_EXT:
-            case GL_LAYER_PROVOKING_VERTEX_EXT:
-            case GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT:
-            case GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT:
-            case GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT:
-            case GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT:
-            case GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT:
-            case GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT:
-            case GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT:
-            case GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT:
-            case GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT:
-            case GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT:
-            case GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT:
-            case GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT:
-            case GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT:
-                *type      = GL_INT;
-                *numParams = 1;
-                return true;
-        }
-    }
-
-    return false;
+    return GetQueryParameterInfo(mState, pname, type, numParams);
 }
 
 bool Context::getIndexedQueryParameterInfo(GLenum target,
diff --git a/src/libANGLE/Context.h b/src/libANGLE/Context.h
index fe3a6c0..5668bb4 100644
--- a/src/libANGLE/Context.h
+++ b/src/libANGLE/Context.h
@@ -732,7 +732,6 @@
 
     OverlayType mOverlay;
 };
-
 }  // namespace gl
 
 #endif  // LIBANGLE_CONTEXT_H_
diff --git a/src/libANGLE/FrameCapture.cpp b/src/libANGLE/FrameCapture.cpp
index 863a9a7..2cf3c41 100644
--- a/src/libANGLE/FrameCapture.cpp
+++ b/src/libANGLE/FrameCapture.cpp
@@ -22,6 +22,7 @@
 #include "libANGLE/capture_gles_2_0_autogen.h"
 #include "libANGLE/capture_gles_3_0_autogen.h"
 #include "libANGLE/gl_enum_utils.h"
+#include "libANGLE/queryutils.h"
 
 #if !ANGLE_CAPTURE_ENABLED
 #    error Frame capture must be enbled to include this file.
@@ -713,8 +714,7 @@
 }
 
 template <typename IDType>
-void CaptureUpdateResourceIDs(const gl::Context *context,
-                              const CallCapture &call,
+void CaptureUpdateResourceIDs(const CallCapture &call,
                               const ParamCapture &param,
                               std::vector<CallCapture> *callsOut)
 {
@@ -741,7 +741,7 @@
     }
 }
 
-void MaybeCaptureUpdateResourceIDs(const gl::Context *context, std::vector<CallCapture> *callsOut)
+void MaybeCaptureUpdateResourceIDs(std::vector<CallCapture> *callsOut)
 {
     const CallCapture &call = callsOut->back();
 
@@ -751,7 +751,7 @@
         {
             const ParamCapture &buffers =
                 call.params.getParam("buffersPacked", ParamType::TBufferIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::BufferID>(context, call, buffers, callsOut);
+            CaptureUpdateResourceIDs<gl::BufferID>(call, buffers, callsOut);
             break;
         }
 
@@ -759,7 +759,7 @@
         {
             const ParamCapture &fences =
                 call.params.getParam("fencesPacked", ParamType::TFenceNVIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::FenceNVID>(context, call, fences, callsOut);
+            CaptureUpdateResourceIDs<gl::FenceNVID>(call, fences, callsOut);
             break;
         }
 
@@ -768,7 +768,7 @@
         {
             const ParamCapture &framebuffers =
                 call.params.getParam("framebuffersPacked", ParamType::TFramebufferIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::FramebufferID>(context, call, framebuffers, callsOut);
+            CaptureUpdateResourceIDs<gl::FramebufferID>(call, framebuffers, callsOut);
             break;
         }
 
@@ -782,7 +782,7 @@
         {
             const ParamCapture &pipelines =
                 call.params.getParam("pipelinesPacked", ParamType::TProgramPipelineIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::ProgramPipelineID>(context, call, pipelines, callsOut);
+            CaptureUpdateResourceIDs<gl::ProgramPipelineID>(call, pipelines, callsOut);
             break;
         }
 
@@ -791,7 +791,7 @@
         {
             const ParamCapture &queries =
                 call.params.getParam("idsPacked", ParamType::TQueryIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::QueryID>(context, call, queries, callsOut);
+            CaptureUpdateResourceIDs<gl::QueryID>(call, queries, callsOut);
             break;
         }
 
@@ -800,7 +800,7 @@
         {
             const ParamCapture &renderbuffers =
                 call.params.getParam("renderbuffersPacked", ParamType::TRenderbufferIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::RenderbufferID>(context, call, renderbuffers, callsOut);
+            CaptureUpdateResourceIDs<gl::RenderbufferID>(call, renderbuffers, callsOut);
             break;
         }
 
@@ -808,7 +808,7 @@
         {
             const ParamCapture &samplers =
                 call.params.getParam("samplersPacked", ParamType::TSamplerIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::SamplerID>(context, call, samplers, callsOut);
+            CaptureUpdateResourceIDs<gl::SamplerID>(call, samplers, callsOut);
             break;
         }
 
@@ -816,7 +816,7 @@
         {
             const ParamCapture &semaphores =
                 call.params.getParam("semaphoresPacked", ParamType::TSemaphoreIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::SemaphoreID>(context, call, semaphores, callsOut);
+            CaptureUpdateResourceIDs<gl::SemaphoreID>(call, semaphores, callsOut);
             break;
         }
 
@@ -824,7 +824,7 @@
         {
             const ParamCapture &textures =
                 call.params.getParam("texturesPacked", ParamType::TTextureIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::TextureID>(context, call, textures, callsOut);
+            CaptureUpdateResourceIDs<gl::TextureID>(call, textures, callsOut);
             break;
         }
 
@@ -832,7 +832,7 @@
         {
             const ParamCapture &xfbs =
                 call.params.getParam("idsPacked", ParamType::TTransformFeedbackIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::TransformFeedbackID>(context, call, xfbs, callsOut);
+            CaptureUpdateResourceIDs<gl::TransformFeedbackID>(call, xfbs, callsOut);
             break;
         }
 
@@ -841,7 +841,7 @@
         {
             const ParamCapture &vertexArrays =
                 call.params.getParam("vetexArraysPacked", ParamType::TVertexArrayIDPointer, 1);
-            CaptureUpdateResourceIDs<gl::VertexArrayID>(context, call, vertexArrays, callsOut);
+            CaptureUpdateResourceIDs<gl::VertexArrayID>(call, vertexArrays, callsOut);
             break;
         }
 
@@ -890,12 +890,12 @@
                                GL_MAP_READ_BIT);
 
         // Generate binding.
-        cap(CaptureGenBuffers(context, true, 1, &id));
-        MaybeCaptureUpdateResourceIDs(context, setupCalls);
+        cap(CaptureGenBuffers(glState, true, 1, &id));
+        MaybeCaptureUpdateResourceIDs(setupCalls);
 
         // Always use the array buffer binding point to upload data to keep things simple.
-        cap(CaptureBindBuffer(context, true, gl::BufferBinding::Array, id));
-        cap(CaptureBufferData(context, true, gl::BufferBinding::Array,
+        cap(CaptureBindBuffer(glState, true, gl::BufferBinding::Array, id));
+        cap(CaptureBufferData(glState, true, gl::BufferBinding::Array,
                               static_cast<GLsizeiptr>(buffer->getSize()), buffer->getMapPointer(),
                               buffer->getUsage()));
 
@@ -916,7 +916,7 @@
         bool isArray = binding == gl::BufferBinding::Array;
         if ((isArray && currentArrayBuffer != bufferID) || (!isArray && bufferID.value != 0))
         {
-            cap(CaptureBindBuffer(context, true, binding, bufferID));
+            cap(CaptureBindBuffer(glState, true, binding, bufferID));
         }
     }
 
@@ -937,9 +937,9 @@
         }
 
         // Gen the Texture.
-        cap(CaptureGenTextures(context, true, 1, &id));
-        MaybeCaptureUpdateResourceIDs(context, setupCalls);
-        cap(CaptureBindTexture(context, true, texture->getType(), id));
+        cap(CaptureGenTextures(glState, true, 1, &id));
+        MaybeCaptureUpdateResourceIDs(setupCalls);
+        cap(CaptureBindTexture(glState, true, texture->getType(), id));
 
         currentTextureBindings[texture->getType()] = id;
 
@@ -949,8 +949,8 @@
             gl::SamplerState::CreateDefaultForTarget(texture->getType());
         const gl::SamplerState &textureSamplerState = texture->getSamplerState();
 
-        auto capTexParam = [cap, context, texture](GLenum pname, GLint param) {
-            cap(CaptureTexParameteri(context, true, texture->getType(), pname, param));
+        auto capTexParam = [cap, &glState, texture](GLenum pname, GLint param) {
+            cap(CaptureTexParameteri(glState, true, texture->getType(), pname, param));
         };
 
         if (textureSamplerState.getMinFilter() != defaultSamplerState.getMinFilter())
@@ -1044,13 +1044,13 @@
                 (void)texture->getTexImage(context, packState, nullptr, index.getTarget(),
                                            index.getLevelIndex(), getFormat, getType, data.data());
 
-                cap(CaptureTexImage2D(context, true, index.getTarget(), index.getLevelIndex(),
+                cap(CaptureTexImage2D(glState, true, index.getTarget(), index.getLevelIndex(),
                                       internalFormat, desc.size.width, desc.size.height, 0,
                                       getFormat, getType, data.data()));
             }
             else
             {
-                cap(CaptureTexImage2D(context, true, index.getTarget(), index.getLevelIndex(),
+                cap(CaptureTexImage2D(glState, true, index.getTarget(), index.getLevelIndex(),
                                       format.internalFormat, desc.size.width, desc.size.height, 0,
                                       format.format, format.type, nullptr));
             }
@@ -1070,14 +1070,14 @@
             {
                 if (currentActiveTexture != bindingIndex)
                 {
-                    cap(CaptureActiveTexture(context, true,
+                    cap(CaptureActiveTexture(glState, true,
                                              GL_TEXTURE0 + static_cast<GLenum>(bindingIndex)));
                     currentActiveTexture = bindingIndex;
                 }
 
                 if (currentTextureBindings[textureType] != textureID)
                 {
-                    cap(CaptureBindTexture(context, true, textureType, textureID));
+                    cap(CaptureBindTexture(glState, true, textureType, textureID));
                     currentTextureBindings[textureType] = textureID;
                 }
             }
@@ -1088,7 +1088,7 @@
     size_t stateActiveTexture = glState.getActiveSampler();
     if (currentActiveTexture != stateActiveTexture)
     {
-        cap(CaptureActiveTexture(context, true,
+        cap(CaptureActiveTexture(glState, true,
                                  GL_TEXTURE0 + static_cast<GLenum>(stateActiveTexture)));
     }
 
@@ -1102,9 +1102,9 @@
         const gl::Renderbuffer *renderbuffer = renderbufIter.second;
 
         // Generate renderbuffer id.
-        cap(CaptureGenRenderbuffers(context, true, 1, &id));
-        MaybeCaptureUpdateResourceIDs(context, setupCalls);
-        cap(CaptureBindRenderbuffer(context, true, GL_RENDERBUFFER, id));
+        cap(CaptureGenRenderbuffers(glState, true, 1, &id));
+        MaybeCaptureUpdateResourceIDs(setupCalls);
+        cap(CaptureBindRenderbuffer(glState, true, GL_RENDERBUFFER, id));
 
         currentRenderbuffer = id;
 
@@ -1114,12 +1114,12 @@
         {
             // Note: We could also use extensions if available.
             cap(CaptureRenderbufferStorageMultisample(
-                context, true, GL_RENDERBUFFER, renderbuffer->getSamples(), internalformat,
+                glState, true, GL_RENDERBUFFER, renderbuffer->getSamples(), internalformat,
                 renderbuffer->getWidth(), renderbuffer->getHeight()));
         }
         else
         {
-            cap(CaptureRenderbufferStorage(context, true, GL_RENDERBUFFER, internalformat,
+            cap(CaptureRenderbufferStorage(glState, true, GL_RENDERBUFFER, internalformat,
                                            renderbuffer->getWidth(), renderbuffer->getHeight()));
         }
 
@@ -1129,7 +1129,7 @@
     // Set Renderbuffer binding.
     if (currentRenderbuffer != glState.getRenderbufferId())
     {
-        cap(CaptureBindRenderbuffer(context, true, GL_RENDERBUFFER, glState.getRenderbufferId()));
+        cap(CaptureBindRenderbuffer(glState, true, GL_RENDERBUFFER, glState.getRenderbufferId()));
     }
 
     // Capture Framebuffers.
@@ -1147,9 +1147,9 @@
         if (framebuffer->isDefault())
             continue;
 
-        cap(CaptureGenFramebuffers(context, true, 1, &id));
-        MaybeCaptureUpdateResourceIDs(context, setupCalls);
-        cap(CaptureBindFramebuffer(context, true, GL_FRAMEBUFFER, id));
+        cap(CaptureGenFramebuffers(glState, true, 1, &id));
+        MaybeCaptureUpdateResourceIDs(setupCalls);
+        cap(CaptureBindFramebuffer(glState, true, GL_FRAMEBUFFER, id));
         currentDrawFramebuffer = currentReadFramebuffer = id;
 
         // Color Attachments.
@@ -1167,14 +1167,14 @@
             {
                 gl::ImageIndex index = colorAttachment.getTextureImageIndex();
 
-                cap(CaptureFramebufferTexture2D(context, true, GL_FRAMEBUFFER,
+                cap(CaptureFramebufferTexture2D(glState, true, GL_FRAMEBUFFER,
                                                 colorAttachment.getBinding(), index.getTarget(),
                                                 {resourceID}, index.getLevelIndex()));
             }
             else
             {
                 ASSERT(colorAttachment.type() == GL_RENDERBUFFER);
-                cap(CaptureFramebufferRenderbuffer(context, true, GL_FRAMEBUFFER,
+                cap(CaptureFramebufferRenderbuffer(glState, true, GL_FRAMEBUFFER,
                                                    colorAttachment.getBinding(), GL_RENDERBUFFER,
                                                    {resourceID}));
             }
@@ -1191,7 +1191,7 @@
         if (currentDrawFramebuffer != stateDrawFramebuffer ||
             currentReadFramebuffer != stateReadFramebuffer)
         {
-            cap(CaptureBindFramebuffer(context, true, GL_FRAMEBUFFER, stateDrawFramebuffer));
+            cap(CaptureBindFramebuffer(glState, true, GL_FRAMEBUFFER, stateDrawFramebuffer));
             currentDrawFramebuffer = currentReadFramebuffer = stateDrawFramebuffer;
         }
     }
@@ -1199,13 +1199,13 @@
     {
         if (currentDrawFramebuffer != stateDrawFramebuffer)
         {
-            cap(CaptureBindFramebuffer(context, true, GL_DRAW_FRAMEBUFFER, currentDrawFramebuffer));
+            cap(CaptureBindFramebuffer(glState, true, GL_DRAW_FRAMEBUFFER, currentDrawFramebuffer));
             currentDrawFramebuffer = stateDrawFramebuffer;
         }
 
         if (currentReadFramebuffer != stateReadFramebuffer)
         {
-            cap(CaptureBindFramebuffer(context, true, GL_READ_FRAMEBUFFER,
+            cap(CaptureBindFramebuffer(glState, true, GL_READ_FRAMEBUFFER,
                                        glState.getReadFramebuffer()->id()));
             currentReadFramebuffer = stateReadFramebuffer;
         }
@@ -1237,7 +1237,7 @@
             continue;
         }
 
-        cap(CaptureCreateProgram(context, true, id.value));
+        cap(CaptureCreateProgram(glState, true, id.value));
 
         // Compile with last linked sources.
         for (gl::ShaderType shaderType : program->getState().getLinkedShaderStages())
@@ -1246,14 +1246,14 @@
             const char *sourcePointer       = sourceString.c_str();
 
             // Compile and attach the temporary shader. Then free it immediately.
-            cap(CaptureCreateShader(context, true, shaderType, tempShaderID.value));
-            cap(CaptureShaderSource(context, true, tempShaderID, 1, &sourcePointer, nullptr));
-            cap(CaptureCompileShader(context, true, tempShaderID));
-            cap(CaptureAttachShader(context, true, id, tempShaderID));
-            cap(CaptureDeleteShader(context, true, tempShaderID));
+            cap(CaptureCreateShader(glState, true, shaderType, tempShaderID.value));
+            cap(CaptureShaderSource(glState, true, tempShaderID, 1, &sourcePointer, nullptr));
+            cap(CaptureCompileShader(glState, true, tempShaderID));
+            cap(CaptureAttachShader(glState, true, id, tempShaderID));
+            cap(CaptureDeleteShader(glState, true, tempShaderID));
         }
 
-        cap(CaptureLinkProgram(context, true, id));
+        cap(CaptureLinkProgram(glState, true, id));
     }
 
     // Handle shaders.
@@ -1261,7 +1261,7 @@
     {
         gl::ShaderProgramID id = {shaderIter.first};
         gl::Shader *shader     = shaderIter.second;
-        cap(CaptureCreateShader(context, true, shader->getType(), id.value));
+        cap(CaptureCreateShader(glState, true, shader->getType(), id.value));
 
         std::string shaderSource  = shader->getSourceString();
         const char *sourcePointer = shaderSource.empty() ? nullptr : shaderSource.c_str();
@@ -1281,13 +1281,13 @@
                 sourcePointer = capturedSource.c_str();
             }
 
-            cap(CaptureShaderSource(context, true, id, 1, &sourcePointer, nullptr));
-            cap(CaptureCompileShader(context, true, id));
+            cap(CaptureShaderSource(glState, true, id, 1, &sourcePointer, nullptr));
+            cap(CaptureCompileShader(glState, true, id));
         }
 
         if (sourcePointer && (!shader->isCompiled() || sourcePointer != shaderSource.c_str()))
         {
-            cap(CaptureShaderSource(context, true, id, 1, &sourcePointer, nullptr));
+            cap(CaptureShaderSource(glState, true, id, 1, &sourcePointer, nullptr));
         }
     }
 
@@ -1295,7 +1295,7 @@
     // TODO(jmadill): Handle installed program executable. http://anglebug.com/3662
     if (glState.getProgram())
     {
-        cap(CaptureUseProgram(context, true, glState.getProgram()->id()));
+        cap(CaptureUseProgram(glState, true, glState.getProgram()->id()));
     }
 
     // TODO(http://anglebug.com/3662): ES 3.x objects.
@@ -1308,28 +1308,28 @@
     {
         if (currentRasterState.cullFace)
         {
-            cap(CaptureEnable(context, true, GL_CULL_FACE));
+            cap(CaptureEnable(glState, true, GL_CULL_FACE));
         }
         else
         {
-            cap(CaptureDisable(context, true, GL_CULL_FACE));
+            cap(CaptureDisable(glState, true, GL_CULL_FACE));
         }
     }
 
     if (currentRasterState.cullMode != defaultRasterState.cullMode)
     {
-        cap(CaptureCullFace(context, true, currentRasterState.cullMode));
+        cap(CaptureCullFace(glState, true, currentRasterState.cullMode));
     }
 
     if (currentRasterState.frontFace != defaultRasterState.frontFace)
     {
-        cap(CaptureFrontFace(context, true, currentRasterState.frontFace));
+        cap(CaptureFrontFace(glState, true, currentRasterState.frontFace));
     }
 
     const gl::ColorF &currentClearColor = glState.getColorClearValue();
     if (currentClearColor != gl::ColorF())
     {
-        cap(CaptureClearColor(context, true, currentClearColor.red, currentClearColor.green,
+        cap(CaptureClearColor(glState, true, currentClearColor.red, currentClearColor.green,
                               currentClearColor.blue, currentClearColor.alpha));
     }
 }
@@ -1620,7 +1620,7 @@
     mFrameCalls.emplace_back(std::move(call));
 
     // Process resource ID updates.
-    MaybeCaptureUpdateResourceIDs(context, &mFrameCalls);
+    MaybeCaptureUpdateResourceIDs(&mFrameCalls);
 }
 
 void FrameCapture::captureClientArraySnapshot(const gl::Context *context,
@@ -1795,14 +1795,21 @@
     CaptureMemory(str, strlen(str) + 1, paramCapture);
 }
 
-void CaptureGetParameter(const gl::Context *context,
+gl::Program *GetLinkedProgramForCapture(const gl::State &glState, gl::ShaderProgramID handle)
+{
+    gl::Program *program = glState.getShaderProgramManagerForCapture().getProgram(handle);
+    ASSERT(program->isLinked());
+    return program;
+}
+
+void CaptureGetParameter(const gl::State &glState,
                          GLenum pname,
                          size_t typeSize,
                          ParamCapture *paramCapture)
 {
     GLenum nativeType;
     unsigned int numParams;
-    if (!context->getQueryParameterInfo(pname, &nativeType, &numParams))
+    if (!gl::GetQueryParameterInfo(glState, pname, &nativeType, &numParams))
     {
         numParams = 1;
     }
diff --git a/src/libANGLE/FrameCapture.h b/src/libANGLE/FrameCapture.h
index 6734157..fc6f4ec 100644
--- a/src/libANGLE/FrameCapture.h
+++ b/src/libANGLE/FrameCapture.h
@@ -224,7 +224,7 @@
     if (!frameCapture->enabled())
         return;
 
-    CallCapture call = captureFunc(context, isCallValid, captureParams...);
+    CallCapture call = captureFunc(context->getState(), isCallValid, captureParams...);
     frameCapture->captureCall(context, std::move(call));
 }
 
@@ -254,8 +254,10 @@
 void CaptureMemory(const void *source, size_t size, ParamCapture *paramCapture);
 void CaptureString(const GLchar *str, ParamCapture *paramCapture);
 
+gl::Program *GetLinkedProgramForCapture(const gl::State &glState, gl::ShaderProgramID handle);
+
 // For GetIntegerv, GetFloatv, etc.
-void CaptureGetParameter(const gl::Context *context,
+void CaptureGetParameter(const gl::State &glState,
                          GLenum pname,
                          size_t typeSize,
                          ParamCapture *paramCapture);
diff --git a/src/libANGLE/capture_gles_1_0_autogen.cpp b/src/libANGLE/capture_gles_1_0_autogen.cpp
index eb60e13..9817b33 100644
--- a/src/libANGLE/capture_gles_1_0_autogen.cpp
+++ b/src/libANGLE/capture_gles_1_0_autogen.cpp
@@ -20,7 +20,7 @@
 namespace gl
 {
 
-CallCapture CaptureAlphaFunc(const Context *context,
+CallCapture CaptureAlphaFunc(const State &glState,
                              bool isCallValid,
                              AlphaTestFunc funcPacked,
                              GLfloat ref)
@@ -33,7 +33,7 @@
     return CallCapture(gl::EntryPoint::AlphaFunc, std::move(paramBuffer));
 }
 
-CallCapture CaptureAlphaFuncx(const Context *context,
+CallCapture CaptureAlphaFuncx(const State &glState,
                               bool isCallValid,
                               AlphaTestFunc funcPacked,
                               GLfixed ref)
@@ -46,7 +46,7 @@
     return CallCapture(gl::EntryPoint::AlphaFuncx, std::move(paramBuffer));
 }
 
-CallCapture CaptureClearColorx(const Context *context,
+CallCapture CaptureClearColorx(const State &glState,
                                bool isCallValid,
                                GLfixed red,
                                GLfixed green,
@@ -63,7 +63,7 @@
     return CallCapture(gl::EntryPoint::ClearColorx, std::move(paramBuffer));
 }
 
-CallCapture CaptureClearDepthx(const Context *context, bool isCallValid, GLfixed depth)
+CallCapture CaptureClearDepthx(const State &glState, bool isCallValid, GLfixed depth)
 {
     ParamBuffer paramBuffer;
 
@@ -72,7 +72,7 @@
     return CallCapture(gl::EntryPoint::ClearDepthx, std::move(paramBuffer));
 }
 
-CallCapture CaptureClientActiveTexture(const Context *context, bool isCallValid, GLenum texture)
+CallCapture CaptureClientActiveTexture(const State &glState, bool isCallValid, GLenum texture)
 {
     ParamBuffer paramBuffer;
 
@@ -81,10 +81,7 @@
     return CallCapture(gl::EntryPoint::ClientActiveTexture, std::move(paramBuffer));
 }
 
-CallCapture CaptureClipPlanef(const Context *context,
-                              bool isCallValid,
-                              GLenum p,
-                              const GLfloat *eqn)
+CallCapture CaptureClipPlanef(const State &glState, bool isCallValid, GLenum p, const GLfloat *eqn)
 {
     ParamBuffer paramBuffer;
 
@@ -92,13 +89,13 @@
 
     ParamCapture eqnParam("eqn", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, eqn, &eqnParam.value);
-    CaptureClipPlanef_eqn(context, isCallValid, p, eqn, &eqnParam);
+    CaptureClipPlanef_eqn(glState, isCallValid, p, eqn, &eqnParam);
     paramBuffer.addParam(std::move(eqnParam));
 
     return CallCapture(gl::EntryPoint::ClipPlanef, std::move(paramBuffer));
 }
 
-CallCapture CaptureClipPlanex(const Context *context,
+CallCapture CaptureClipPlanex(const State &glState,
                               bool isCallValid,
                               GLenum plane,
                               const GLfixed *equation)
@@ -109,13 +106,13 @@
 
     ParamCapture equationParam("equation", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, equation, &equationParam.value);
-    CaptureClipPlanex_equation(context, isCallValid, plane, equation, &equationParam);
+    CaptureClipPlanex_equation(glState, isCallValid, plane, equation, &equationParam);
     paramBuffer.addParam(std::move(equationParam));
 
     return CallCapture(gl::EntryPoint::ClipPlanex, std::move(paramBuffer));
 }
 
-CallCapture CaptureColor4f(const Context *context,
+CallCapture CaptureColor4f(const State &glState,
                            bool isCallValid,
                            GLfloat red,
                            GLfloat green,
@@ -132,7 +129,7 @@
     return CallCapture(gl::EntryPoint::Color4f, std::move(paramBuffer));
 }
 
-CallCapture CaptureColor4ub(const Context *context,
+CallCapture CaptureColor4ub(const State &glState,
                             bool isCallValid,
                             GLubyte red,
                             GLubyte green,
@@ -149,7 +146,7 @@
     return CallCapture(gl::EntryPoint::Color4ub, std::move(paramBuffer));
 }
 
-CallCapture CaptureColor4x(const Context *context,
+CallCapture CaptureColor4x(const State &glState,
                            bool isCallValid,
                            GLfixed red,
                            GLfixed green,
@@ -166,7 +163,7 @@
     return CallCapture(gl::EntryPoint::Color4x, std::move(paramBuffer));
 }
 
-CallCapture CaptureColorPointer(const Context *context,
+CallCapture CaptureColorPointer(const State &glState,
                                 bool isCallValid,
                                 GLint size,
                                 VertexAttribType typePacked,
@@ -181,14 +178,14 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
-    CaptureColorPointer_pointer(context, isCallValid, size, typePacked, stride, pointer,
+    CaptureColorPointer_pointer(glState, isCallValid, size, typePacked, stride, pointer,
                                 &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::ColorPointer, std::move(paramBuffer));
 }
 
-CallCapture CaptureDepthRangex(const Context *context, bool isCallValid, GLfixed n, GLfixed f)
+CallCapture CaptureDepthRangex(const State &glState, bool isCallValid, GLfixed n, GLfixed f)
 {
     ParamBuffer paramBuffer;
 
@@ -198,7 +195,7 @@
     return CallCapture(gl::EntryPoint::DepthRangex, std::move(paramBuffer));
 }
 
-CallCapture CaptureDisableClientState(const Context *context,
+CallCapture CaptureDisableClientState(const State &glState,
                                       bool isCallValid,
                                       ClientVertexArrayType arrayPacked)
 {
@@ -209,7 +206,7 @@
     return CallCapture(gl::EntryPoint::DisableClientState, std::move(paramBuffer));
 }
 
-CallCapture CaptureEnableClientState(const Context *context,
+CallCapture CaptureEnableClientState(const State &glState,
                                      bool isCallValid,
                                      ClientVertexArrayType arrayPacked)
 {
@@ -220,7 +217,7 @@
     return CallCapture(gl::EntryPoint::EnableClientState, std::move(paramBuffer));
 }
 
-CallCapture CaptureFogf(const Context *context, bool isCallValid, GLenum pname, GLfloat param)
+CallCapture CaptureFogf(const State &glState, bool isCallValid, GLenum pname, GLfloat param)
 {
     ParamBuffer paramBuffer;
 
@@ -230,7 +227,7 @@
     return CallCapture(gl::EntryPoint::Fogf, std::move(paramBuffer));
 }
 
-CallCapture CaptureFogfv(const Context *context,
+CallCapture CaptureFogfv(const State &glState,
                          bool isCallValid,
                          GLenum pname,
                          const GLfloat *params)
@@ -241,13 +238,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
-    CaptureFogfv_params(context, isCallValid, pname, params, &paramsParam);
+    CaptureFogfv_params(glState, isCallValid, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::Fogfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureFogx(const Context *context, bool isCallValid, GLenum pname, GLfixed param)
+CallCapture CaptureFogx(const State &glState, bool isCallValid, GLenum pname, GLfixed param)
 {
     ParamBuffer paramBuffer;
 
@@ -257,10 +254,7 @@
     return CallCapture(gl::EntryPoint::Fogx, std::move(paramBuffer));
 }
 
-CallCapture CaptureFogxv(const Context *context,
-                         bool isCallValid,
-                         GLenum pname,
-                         const GLfixed *param)
+CallCapture CaptureFogxv(const State &glState, bool isCallValid, GLenum pname, const GLfixed *param)
 {
     ParamBuffer paramBuffer;
 
@@ -268,13 +262,13 @@
 
     ParamCapture paramParam("param", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, param, &paramParam.value);
-    CaptureFogxv_param(context, isCallValid, pname, param, &paramParam);
+    CaptureFogxv_param(glState, isCallValid, pname, param, &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::Fogxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureFrustumf(const Context *context,
+CallCapture CaptureFrustumf(const State &glState,
                             bool isCallValid,
                             GLfloat l,
                             GLfloat r,
@@ -295,7 +289,7 @@
     return CallCapture(gl::EntryPoint::Frustumf, std::move(paramBuffer));
 }
 
-CallCapture CaptureFrustumx(const Context *context,
+CallCapture CaptureFrustumx(const State &glState,
                             bool isCallValid,
                             GLfixed l,
                             GLfixed r,
@@ -316,7 +310,7 @@
     return CallCapture(gl::EntryPoint::Frustumx, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetClipPlanef(const Context *context,
+CallCapture CaptureGetClipPlanef(const State &glState,
                                  bool isCallValid,
                                  GLenum plane,
                                  GLfloat *equation)
@@ -327,13 +321,13 @@
 
     ParamCapture equationParam("equation", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, equation, &equationParam.value);
-    CaptureGetClipPlanef_equation(context, isCallValid, plane, equation, &equationParam);
+    CaptureGetClipPlanef_equation(glState, isCallValid, plane, equation, &equationParam);
     paramBuffer.addParam(std::move(equationParam));
 
     return CallCapture(gl::EntryPoint::GetClipPlanef, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetClipPlanex(const Context *context,
+CallCapture CaptureGetClipPlanex(const State &glState,
                                  bool isCallValid,
                                  GLenum plane,
                                  GLfixed *equation)
@@ -344,16 +338,13 @@
 
     ParamCapture equationParam("equation", ParamType::TGLfixedPointer);
     InitParamValue(ParamType::TGLfixedPointer, equation, &equationParam.value);
-    CaptureGetClipPlanex_equation(context, isCallValid, plane, equation, &equationParam);
+    CaptureGetClipPlanex_equation(glState, isCallValid, plane, equation, &equationParam);
     paramBuffer.addParam(std::move(equationParam));
 
     return CallCapture(gl::EntryPoint::GetClipPlanex, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFixedv(const Context *context,
-                             bool isCallValid,
-                             GLenum pname,
-                             GLfixed *params)
+CallCapture CaptureGetFixedv(const State &glState, bool isCallValid, GLenum pname, GLfixed *params)
 {
     ParamBuffer paramBuffer;
 
@@ -361,13 +352,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedPointer);
     InitParamValue(ParamType::TGLfixedPointer, params, &paramsParam.value);
-    CaptureGetFixedv_params(context, isCallValid, pname, params, &paramsParam);
+    CaptureGetFixedv_params(glState, isCallValid, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetFixedv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetLightfv(const Context *context,
+CallCapture CaptureGetLightfv(const State &glState,
                               bool isCallValid,
                               GLenum light,
                               LightParameter pnamePacked,
@@ -380,13 +371,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetLightfv_params(context, isCallValid, light, pnamePacked, params, &paramsParam);
+    CaptureGetLightfv_params(glState, isCallValid, light, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetLightfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetLightxv(const Context *context,
+CallCapture CaptureGetLightxv(const State &glState,
                               bool isCallValid,
                               GLenum light,
                               LightParameter pnamePacked,
@@ -399,13 +390,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedPointer);
     InitParamValue(ParamType::TGLfixedPointer, params, &paramsParam.value);
-    CaptureGetLightxv_params(context, isCallValid, light, pnamePacked, params, &paramsParam);
+    CaptureGetLightxv_params(glState, isCallValid, light, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetLightxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetMaterialfv(const Context *context,
+CallCapture CaptureGetMaterialfv(const State &glState,
                                  bool isCallValid,
                                  GLenum face,
                                  MaterialParameter pnamePacked,
@@ -418,13 +409,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetMaterialfv_params(context, isCallValid, face, pnamePacked, params, &paramsParam);
+    CaptureGetMaterialfv_params(glState, isCallValid, face, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetMaterialfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetMaterialxv(const Context *context,
+CallCapture CaptureGetMaterialxv(const State &glState,
                                  bool isCallValid,
                                  GLenum face,
                                  MaterialParameter pnamePacked,
@@ -437,13 +428,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedPointer);
     InitParamValue(ParamType::TGLfixedPointer, params, &paramsParam.value);
-    CaptureGetMaterialxv_params(context, isCallValid, face, pnamePacked, params, &paramsParam);
+    CaptureGetMaterialxv_params(glState, isCallValid, face, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetMaterialxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexEnvfv(const Context *context,
+CallCapture CaptureGetTexEnvfv(const State &glState,
                                bool isCallValid,
                                TextureEnvTarget targetPacked,
                                TextureEnvParameter pnamePacked,
@@ -456,14 +447,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetTexEnvfv_params(context, isCallValid, targetPacked, pnamePacked, params,
+    CaptureGetTexEnvfv_params(glState, isCallValid, targetPacked, pnamePacked, params,
                               &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexEnvfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexEnviv(const Context *context,
+CallCapture CaptureGetTexEnviv(const State &glState,
                                bool isCallValid,
                                TextureEnvTarget targetPacked,
                                TextureEnvParameter pnamePacked,
@@ -476,14 +467,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexEnviv_params(context, isCallValid, targetPacked, pnamePacked, params,
+    CaptureGetTexEnviv_params(glState, isCallValid, targetPacked, pnamePacked, params,
                               &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexEnviv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexEnvxv(const Context *context,
+CallCapture CaptureGetTexEnvxv(const State &glState,
                                bool isCallValid,
                                TextureEnvTarget targetPacked,
                                TextureEnvParameter pnamePacked,
@@ -496,14 +487,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedPointer);
     InitParamValue(ParamType::TGLfixedPointer, params, &paramsParam.value);
-    CaptureGetTexEnvxv_params(context, isCallValid, targetPacked, pnamePacked, params,
+    CaptureGetTexEnvxv_params(glState, isCallValid, targetPacked, pnamePacked, params,
                               &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexEnvxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterxv(const Context *context,
+CallCapture CaptureGetTexParameterxv(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked,
                                      GLenum pname,
@@ -516,17 +507,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedPointer);
     InitParamValue(ParamType::TGLfixedPointer, params, &paramsParam.value);
-    CaptureGetTexParameterxv_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetTexParameterxv_params(glState, isCallValid, targetPacked, pname, params,
                                     &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureLightModelf(const Context *context,
-                               bool isCallValid,
-                               GLenum pname,
-                               GLfloat param)
+CallCapture CaptureLightModelf(const State &glState, bool isCallValid, GLenum pname, GLfloat param)
 {
     ParamBuffer paramBuffer;
 
@@ -536,7 +524,7 @@
     return CallCapture(gl::EntryPoint::LightModelf, std::move(paramBuffer));
 }
 
-CallCapture CaptureLightModelfv(const Context *context,
+CallCapture CaptureLightModelfv(const State &glState,
                                 bool isCallValid,
                                 GLenum pname,
                                 const GLfloat *params)
@@ -547,16 +535,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
-    CaptureLightModelfv_params(context, isCallValid, pname, params, &paramsParam);
+    CaptureLightModelfv_params(glState, isCallValid, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::LightModelfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureLightModelx(const Context *context,
-                               bool isCallValid,
-                               GLenum pname,
-                               GLfixed param)
+CallCapture CaptureLightModelx(const State &glState, bool isCallValid, GLenum pname, GLfixed param)
 {
     ParamBuffer paramBuffer;
 
@@ -566,7 +551,7 @@
     return CallCapture(gl::EntryPoint::LightModelx, std::move(paramBuffer));
 }
 
-CallCapture CaptureLightModelxv(const Context *context,
+CallCapture CaptureLightModelxv(const State &glState,
                                 bool isCallValid,
                                 GLenum pname,
                                 const GLfixed *param)
@@ -577,13 +562,13 @@
 
     ParamCapture paramParam("param", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, param, &paramParam.value);
-    CaptureLightModelxv_param(context, isCallValid, pname, param, &paramParam);
+    CaptureLightModelxv_param(glState, isCallValid, pname, param, &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::LightModelxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureLightf(const Context *context,
+CallCapture CaptureLightf(const State &glState,
                           bool isCallValid,
                           GLenum light,
                           LightParameter pnamePacked,
@@ -598,7 +583,7 @@
     return CallCapture(gl::EntryPoint::Lightf, std::move(paramBuffer));
 }
 
-CallCapture CaptureLightfv(const Context *context,
+CallCapture CaptureLightfv(const State &glState,
                            bool isCallValid,
                            GLenum light,
                            LightParameter pnamePacked,
@@ -611,13 +596,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
-    CaptureLightfv_params(context, isCallValid, light, pnamePacked, params, &paramsParam);
+    CaptureLightfv_params(glState, isCallValid, light, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::Lightfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureLightx(const Context *context,
+CallCapture CaptureLightx(const State &glState,
                           bool isCallValid,
                           GLenum light,
                           LightParameter pnamePacked,
@@ -632,7 +617,7 @@
     return CallCapture(gl::EntryPoint::Lightx, std::move(paramBuffer));
 }
 
-CallCapture CaptureLightxv(const Context *context,
+CallCapture CaptureLightxv(const State &glState,
                            bool isCallValid,
                            GLenum light,
                            LightParameter pnamePacked,
@@ -645,13 +630,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, params, &paramsParam.value);
-    CaptureLightxv_params(context, isCallValid, light, pnamePacked, params, &paramsParam);
+    CaptureLightxv_params(glState, isCallValid, light, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::Lightxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureLineWidthx(const Context *context, bool isCallValid, GLfixed width)
+CallCapture CaptureLineWidthx(const State &glState, bool isCallValid, GLfixed width)
 {
     ParamBuffer paramBuffer;
 
@@ -660,38 +645,38 @@
     return CallCapture(gl::EntryPoint::LineWidthx, std::move(paramBuffer));
 }
 
-CallCapture CaptureLoadIdentity(const Context *context, bool isCallValid)
+CallCapture CaptureLoadIdentity(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::LoadIdentity, std::move(paramBuffer));
 }
 
-CallCapture CaptureLoadMatrixf(const Context *context, bool isCallValid, const GLfloat *m)
+CallCapture CaptureLoadMatrixf(const State &glState, bool isCallValid, const GLfloat *m)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture mParam("m", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, m, &mParam.value);
-    CaptureLoadMatrixf_m(context, isCallValid, m, &mParam);
+    CaptureLoadMatrixf_m(glState, isCallValid, m, &mParam);
     paramBuffer.addParam(std::move(mParam));
 
     return CallCapture(gl::EntryPoint::LoadMatrixf, std::move(paramBuffer));
 }
 
-CallCapture CaptureLoadMatrixx(const Context *context, bool isCallValid, const GLfixed *m)
+CallCapture CaptureLoadMatrixx(const State &glState, bool isCallValid, const GLfixed *m)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture mParam("m", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, m, &mParam.value);
-    CaptureLoadMatrixx_m(context, isCallValid, m, &mParam);
+    CaptureLoadMatrixx_m(glState, isCallValid, m, &mParam);
     paramBuffer.addParam(std::move(mParam));
 
     return CallCapture(gl::EntryPoint::LoadMatrixx, std::move(paramBuffer));
 }
 
-CallCapture CaptureLogicOp(const Context *context, bool isCallValid, LogicalOperation opcodePacked)
+CallCapture CaptureLogicOp(const State &glState, bool isCallValid, LogicalOperation opcodePacked)
 {
     ParamBuffer paramBuffer;
 
@@ -700,7 +685,7 @@
     return CallCapture(gl::EntryPoint::LogicOp, std::move(paramBuffer));
 }
 
-CallCapture CaptureMaterialf(const Context *context,
+CallCapture CaptureMaterialf(const State &glState,
                              bool isCallValid,
                              GLenum face,
                              MaterialParameter pnamePacked,
@@ -715,7 +700,7 @@
     return CallCapture(gl::EntryPoint::Materialf, std::move(paramBuffer));
 }
 
-CallCapture CaptureMaterialfv(const Context *context,
+CallCapture CaptureMaterialfv(const State &glState,
                               bool isCallValid,
                               GLenum face,
                               MaterialParameter pnamePacked,
@@ -728,13 +713,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
-    CaptureMaterialfv_params(context, isCallValid, face, pnamePacked, params, &paramsParam);
+    CaptureMaterialfv_params(glState, isCallValid, face, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::Materialfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureMaterialx(const Context *context,
+CallCapture CaptureMaterialx(const State &glState,
                              bool isCallValid,
                              GLenum face,
                              MaterialParameter pnamePacked,
@@ -749,7 +734,7 @@
     return CallCapture(gl::EntryPoint::Materialx, std::move(paramBuffer));
 }
 
-CallCapture CaptureMaterialxv(const Context *context,
+CallCapture CaptureMaterialxv(const State &glState,
                               bool isCallValid,
                               GLenum face,
                               MaterialParameter pnamePacked,
@@ -762,13 +747,13 @@
 
     ParamCapture paramParam("param", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, param, &paramParam.value);
-    CaptureMaterialxv_param(context, isCallValid, face, pnamePacked, param, &paramParam);
+    CaptureMaterialxv_param(glState, isCallValid, face, pnamePacked, param, &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::Materialxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureMatrixMode(const Context *context, bool isCallValid, MatrixType modePacked)
+CallCapture CaptureMatrixMode(const State &glState, bool isCallValid, MatrixType modePacked)
 {
     ParamBuffer paramBuffer;
 
@@ -777,31 +762,31 @@
     return CallCapture(gl::EntryPoint::MatrixMode, std::move(paramBuffer));
 }
 
-CallCapture CaptureMultMatrixf(const Context *context, bool isCallValid, const GLfloat *m)
+CallCapture CaptureMultMatrixf(const State &glState, bool isCallValid, const GLfloat *m)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture mParam("m", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, m, &mParam.value);
-    CaptureMultMatrixf_m(context, isCallValid, m, &mParam);
+    CaptureMultMatrixf_m(glState, isCallValid, m, &mParam);
     paramBuffer.addParam(std::move(mParam));
 
     return CallCapture(gl::EntryPoint::MultMatrixf, std::move(paramBuffer));
 }
 
-CallCapture CaptureMultMatrixx(const Context *context, bool isCallValid, const GLfixed *m)
+CallCapture CaptureMultMatrixx(const State &glState, bool isCallValid, const GLfixed *m)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture mParam("m", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, m, &mParam.value);
-    CaptureMultMatrixx_m(context, isCallValid, m, &mParam);
+    CaptureMultMatrixx_m(glState, isCallValid, m, &mParam);
     paramBuffer.addParam(std::move(mParam));
 
     return CallCapture(gl::EntryPoint::MultMatrixx, std::move(paramBuffer));
 }
 
-CallCapture CaptureMultiTexCoord4f(const Context *context,
+CallCapture CaptureMultiTexCoord4f(const State &glState,
                                    bool isCallValid,
                                    GLenum target,
                                    GLfloat s,
@@ -820,7 +805,7 @@
     return CallCapture(gl::EntryPoint::MultiTexCoord4f, std::move(paramBuffer));
 }
 
-CallCapture CaptureMultiTexCoord4x(const Context *context,
+CallCapture CaptureMultiTexCoord4x(const State &glState,
                                    bool isCallValid,
                                    GLenum texture,
                                    GLfixed s,
@@ -839,7 +824,7 @@
     return CallCapture(gl::EntryPoint::MultiTexCoord4x, std::move(paramBuffer));
 }
 
-CallCapture CaptureNormal3f(const Context *context,
+CallCapture CaptureNormal3f(const State &glState,
                             bool isCallValid,
                             GLfloat nx,
                             GLfloat ny,
@@ -854,7 +839,7 @@
     return CallCapture(gl::EntryPoint::Normal3f, std::move(paramBuffer));
 }
 
-CallCapture CaptureNormal3x(const Context *context,
+CallCapture CaptureNormal3x(const State &glState,
                             bool isCallValid,
                             GLfixed nx,
                             GLfixed ny,
@@ -869,7 +854,7 @@
     return CallCapture(gl::EntryPoint::Normal3x, std::move(paramBuffer));
 }
 
-CallCapture CaptureNormalPointer(const Context *context,
+CallCapture CaptureNormalPointer(const State &glState,
                                  bool isCallValid,
                                  VertexAttribType typePacked,
                                  GLsizei stride,
@@ -882,13 +867,13 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
-    CaptureNormalPointer_pointer(context, isCallValid, typePacked, stride, pointer, &pointerParam);
+    CaptureNormalPointer_pointer(glState, isCallValid, typePacked, stride, pointer, &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::NormalPointer, std::move(paramBuffer));
 }
 
-CallCapture CaptureOrthof(const Context *context,
+CallCapture CaptureOrthof(const State &glState,
                           bool isCallValid,
                           GLfloat l,
                           GLfloat r,
@@ -909,7 +894,7 @@
     return CallCapture(gl::EntryPoint::Orthof, std::move(paramBuffer));
 }
 
-CallCapture CaptureOrthox(const Context *context,
+CallCapture CaptureOrthox(const State &glState,
                           bool isCallValid,
                           GLfixed l,
                           GLfixed r,
@@ -930,7 +915,7 @@
     return CallCapture(gl::EntryPoint::Orthox, std::move(paramBuffer));
 }
 
-CallCapture CapturePointParameterf(const Context *context,
+CallCapture CapturePointParameterf(const State &glState,
                                    bool isCallValid,
                                    PointParameter pnamePacked,
                                    GLfloat param)
@@ -943,7 +928,7 @@
     return CallCapture(gl::EntryPoint::PointParameterf, std::move(paramBuffer));
 }
 
-CallCapture CapturePointParameterfv(const Context *context,
+CallCapture CapturePointParameterfv(const State &glState,
                                     bool isCallValid,
                                     PointParameter pnamePacked,
                                     const GLfloat *params)
@@ -954,13 +939,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
-    CapturePointParameterfv_params(context, isCallValid, pnamePacked, params, &paramsParam);
+    CapturePointParameterfv_params(glState, isCallValid, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::PointParameterfv, std::move(paramBuffer));
 }
 
-CallCapture CapturePointParameterx(const Context *context,
+CallCapture CapturePointParameterx(const State &glState,
                                    bool isCallValid,
                                    PointParameter pnamePacked,
                                    GLfixed param)
@@ -973,7 +958,7 @@
     return CallCapture(gl::EntryPoint::PointParameterx, std::move(paramBuffer));
 }
 
-CallCapture CapturePointParameterxv(const Context *context,
+CallCapture CapturePointParameterxv(const State &glState,
                                     bool isCallValid,
                                     PointParameter pnamePacked,
                                     const GLfixed *params)
@@ -984,13 +969,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, params, &paramsParam.value);
-    CapturePointParameterxv_params(context, isCallValid, pnamePacked, params, &paramsParam);
+    CapturePointParameterxv_params(glState, isCallValid, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::PointParameterxv, std::move(paramBuffer));
 }
 
-CallCapture CapturePointSize(const Context *context, bool isCallValid, GLfloat size)
+CallCapture CapturePointSize(const State &glState, bool isCallValid, GLfloat size)
 {
     ParamBuffer paramBuffer;
 
@@ -999,7 +984,7 @@
     return CallCapture(gl::EntryPoint::PointSize, std::move(paramBuffer));
 }
 
-CallCapture CapturePointSizex(const Context *context, bool isCallValid, GLfixed size)
+CallCapture CapturePointSizex(const State &glState, bool isCallValid, GLfixed size)
 {
     ParamBuffer paramBuffer;
 
@@ -1008,7 +993,7 @@
     return CallCapture(gl::EntryPoint::PointSizex, std::move(paramBuffer));
 }
 
-CallCapture CapturePolygonOffsetx(const Context *context,
+CallCapture CapturePolygonOffsetx(const State &glState,
                                   bool isCallValid,
                                   GLfixed factor,
                                   GLfixed units)
@@ -1021,21 +1006,21 @@
     return CallCapture(gl::EntryPoint::PolygonOffsetx, std::move(paramBuffer));
 }
 
-CallCapture CapturePopMatrix(const Context *context, bool isCallValid)
+CallCapture CapturePopMatrix(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::PopMatrix, std::move(paramBuffer));
 }
 
-CallCapture CapturePushMatrix(const Context *context, bool isCallValid)
+CallCapture CapturePushMatrix(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::PushMatrix, std::move(paramBuffer));
 }
 
-CallCapture CaptureRotatef(const Context *context,
+CallCapture CaptureRotatef(const State &glState,
                            bool isCallValid,
                            GLfloat angle,
                            GLfloat x,
@@ -1052,7 +1037,7 @@
     return CallCapture(gl::EntryPoint::Rotatef, std::move(paramBuffer));
 }
 
-CallCapture CaptureRotatex(const Context *context,
+CallCapture CaptureRotatex(const State &glState,
                            bool isCallValid,
                            GLfixed angle,
                            GLfixed x,
@@ -1069,7 +1054,7 @@
     return CallCapture(gl::EntryPoint::Rotatex, std::move(paramBuffer));
 }
 
-CallCapture CaptureSampleCoveragex(const Context *context,
+CallCapture CaptureSampleCoveragex(const State &glState,
                                    bool isCallValid,
                                    GLclampx value,
                                    GLboolean invert)
@@ -1082,7 +1067,7 @@
     return CallCapture(gl::EntryPoint::SampleCoveragex, std::move(paramBuffer));
 }
 
-CallCapture CaptureScalef(const Context *context, bool isCallValid, GLfloat x, GLfloat y, GLfloat z)
+CallCapture CaptureScalef(const State &glState, bool isCallValid, GLfloat x, GLfloat y, GLfloat z)
 {
     ParamBuffer paramBuffer;
 
@@ -1093,7 +1078,7 @@
     return CallCapture(gl::EntryPoint::Scalef, std::move(paramBuffer));
 }
 
-CallCapture CaptureScalex(const Context *context, bool isCallValid, GLfixed x, GLfixed y, GLfixed z)
+CallCapture CaptureScalex(const State &glState, bool isCallValid, GLfixed x, GLfixed y, GLfixed z)
 {
     ParamBuffer paramBuffer;
 
@@ -1104,7 +1089,7 @@
     return CallCapture(gl::EntryPoint::Scalex, std::move(paramBuffer));
 }
 
-CallCapture CaptureShadeModel(const Context *context, bool isCallValid, ShadingModel modePacked)
+CallCapture CaptureShadeModel(const State &glState, bool isCallValid, ShadingModel modePacked)
 {
     ParamBuffer paramBuffer;
 
@@ -1113,7 +1098,7 @@
     return CallCapture(gl::EntryPoint::ShadeModel, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexCoordPointer(const Context *context,
+CallCapture CaptureTexCoordPointer(const State &glState,
                                    bool isCallValid,
                                    GLint size,
                                    VertexAttribType typePacked,
@@ -1128,14 +1113,14 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
-    CaptureTexCoordPointer_pointer(context, isCallValid, size, typePacked, stride, pointer,
+    CaptureTexCoordPointer_pointer(glState, isCallValid, size, typePacked, stride, pointer,
                                    &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::TexCoordPointer, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexEnvf(const Context *context,
+CallCapture CaptureTexEnvf(const State &glState,
                            bool isCallValid,
                            TextureEnvTarget targetPacked,
                            TextureEnvParameter pnamePacked,
@@ -1150,7 +1135,7 @@
     return CallCapture(gl::EntryPoint::TexEnvf, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexEnvfv(const Context *context,
+CallCapture CaptureTexEnvfv(const State &glState,
                             bool isCallValid,
                             TextureEnvTarget targetPacked,
                             TextureEnvParameter pnamePacked,
@@ -1163,13 +1148,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
-    CaptureTexEnvfv_params(context, isCallValid, targetPacked, pnamePacked, params, &paramsParam);
+    CaptureTexEnvfv_params(glState, isCallValid, targetPacked, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexEnvfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexEnvi(const Context *context,
+CallCapture CaptureTexEnvi(const State &glState,
                            bool isCallValid,
                            TextureEnvTarget targetPacked,
                            TextureEnvParameter pnamePacked,
@@ -1184,7 +1169,7 @@
     return CallCapture(gl::EntryPoint::TexEnvi, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexEnviv(const Context *context,
+CallCapture CaptureTexEnviv(const State &glState,
                             bool isCallValid,
                             TextureEnvTarget targetPacked,
                             TextureEnvParameter pnamePacked,
@@ -1197,13 +1182,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
-    CaptureTexEnviv_params(context, isCallValid, targetPacked, pnamePacked, params, &paramsParam);
+    CaptureTexEnviv_params(glState, isCallValid, targetPacked, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexEnviv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexEnvx(const Context *context,
+CallCapture CaptureTexEnvx(const State &glState,
                            bool isCallValid,
                            TextureEnvTarget targetPacked,
                            TextureEnvParameter pnamePacked,
@@ -1218,7 +1203,7 @@
     return CallCapture(gl::EntryPoint::TexEnvx, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexEnvxv(const Context *context,
+CallCapture CaptureTexEnvxv(const State &glState,
                             bool isCallValid,
                             TextureEnvTarget targetPacked,
                             TextureEnvParameter pnamePacked,
@@ -1231,13 +1216,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, params, &paramsParam.value);
-    CaptureTexEnvxv_params(context, isCallValid, targetPacked, pnamePacked, params, &paramsParam);
+    CaptureTexEnvxv_params(glState, isCallValid, targetPacked, pnamePacked, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexEnvxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterx(const Context *context,
+CallCapture CaptureTexParameterx(const State &glState,
                                  bool isCallValid,
                                  TextureType targetPacked,
                                  GLenum pname,
@@ -1252,7 +1237,7 @@
     return CallCapture(gl::EntryPoint::TexParameterx, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterxv(const Context *context,
+CallCapture CaptureTexParameterxv(const State &glState,
                                   bool isCallValid,
                                   TextureType targetPacked,
                                   GLenum pname,
@@ -1265,13 +1250,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, params, &paramsParam.value);
-    CaptureTexParameterxv_params(context, isCallValid, targetPacked, pname, params, &paramsParam);
+    CaptureTexParameterxv_params(glState, isCallValid, targetPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterxv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTranslatef(const Context *context,
+CallCapture CaptureTranslatef(const State &glState,
                               bool isCallValid,
                               GLfloat x,
                               GLfloat y,
@@ -1286,7 +1271,7 @@
     return CallCapture(gl::EntryPoint::Translatef, std::move(paramBuffer));
 }
 
-CallCapture CaptureTranslatex(const Context *context,
+CallCapture CaptureTranslatex(const State &glState,
                               bool isCallValid,
                               GLfixed x,
                               GLfixed y,
@@ -1301,7 +1286,7 @@
     return CallCapture(gl::EntryPoint::Translatex, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexPointer(const Context *context,
+CallCapture CaptureVertexPointer(const State &glState,
                                  bool isCallValid,
                                  GLint size,
                                  VertexAttribType typePacked,
@@ -1316,7 +1301,7 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
-    CaptureVertexPointer_pointer(context, isCallValid, size, typePacked, stride, pointer,
+    CaptureVertexPointer_pointer(glState, isCallValid, size, typePacked, stride, pointer,
                                  &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
diff --git a/src/libANGLE/capture_gles_1_0_autogen.h b/src/libANGLE/capture_gles_1_0_autogen.h
index 2c01d84..424b374 100644
--- a/src/libANGLE/capture_gles_1_0_autogen.h
+++ b/src/libANGLE/capture_gles_1_0_autogen.h
@@ -16,87 +16,77 @@
 
 namespace gl
 {
-class Context;
 
 // Method Captures
 
-angle::CallCapture CaptureAlphaFunc(const Context *context,
+angle::CallCapture CaptureAlphaFunc(const State &glState,
                                     bool isCallValid,
                                     AlphaTestFunc funcPacked,
                                     GLfloat ref);
-angle::CallCapture CaptureAlphaFuncx(const Context *context,
+angle::CallCapture CaptureAlphaFuncx(const State &glState,
                                      bool isCallValid,
                                      AlphaTestFunc funcPacked,
                                      GLfixed ref);
-angle::CallCapture CaptureClearColorx(const Context *context,
+angle::CallCapture CaptureClearColorx(const State &glState,
                                       bool isCallValid,
                                       GLfixed red,
                                       GLfixed green,
                                       GLfixed blue,
                                       GLfixed alpha);
-angle::CallCapture CaptureClearDepthx(const Context *context, bool isCallValid, GLfixed depth);
-angle::CallCapture CaptureClientActiveTexture(const Context *context,
+angle::CallCapture CaptureClearDepthx(const State &glState, bool isCallValid, GLfixed depth);
+angle::CallCapture CaptureClientActiveTexture(const State &glState,
                                               bool isCallValid,
                                               GLenum texture);
-angle::CallCapture CaptureClipPlanef(const Context *context,
+angle::CallCapture CaptureClipPlanef(const State &glState,
                                      bool isCallValid,
                                      GLenum p,
                                      const GLfloat *eqn);
-angle::CallCapture CaptureClipPlanex(const Context *context,
+angle::CallCapture CaptureClipPlanex(const State &glState,
                                      bool isCallValid,
                                      GLenum plane,
                                      const GLfixed *equation);
-angle::CallCapture CaptureColor4f(const Context *context,
+angle::CallCapture CaptureColor4f(const State &glState,
                                   bool isCallValid,
                                   GLfloat red,
                                   GLfloat green,
                                   GLfloat blue,
                                   GLfloat alpha);
-angle::CallCapture CaptureColor4ub(const Context *context,
+angle::CallCapture CaptureColor4ub(const State &glState,
                                    bool isCallValid,
                                    GLubyte red,
                                    GLubyte green,
                                    GLubyte blue,
                                    GLubyte alpha);
-angle::CallCapture CaptureColor4x(const Context *context,
+angle::CallCapture CaptureColor4x(const State &glState,
                                   bool isCallValid,
                                   GLfixed red,
                                   GLfixed green,
                                   GLfixed blue,
                                   GLfixed alpha);
-angle::CallCapture CaptureColorPointer(const Context *context,
+angle::CallCapture CaptureColorPointer(const State &glState,
                                        bool isCallValid,
                                        GLint size,
                                        VertexAttribType typePacked,
                                        GLsizei stride,
                                        const void *pointer);
-angle::CallCapture CaptureDepthRangex(const Context *context,
-                                      bool isCallValid,
-                                      GLfixed n,
-                                      GLfixed f);
-angle::CallCapture CaptureDisableClientState(const Context *context,
+angle::CallCapture CaptureDepthRangex(const State &glState, bool isCallValid, GLfixed n, GLfixed f);
+angle::CallCapture CaptureDisableClientState(const State &glState,
                                              bool isCallValid,
                                              ClientVertexArrayType arrayPacked);
-angle::CallCapture CaptureEnableClientState(const Context *context,
+angle::CallCapture CaptureEnableClientState(const State &glState,
                                             bool isCallValid,
                                             ClientVertexArrayType arrayPacked);
-angle::CallCapture CaptureFogf(const Context *context,
-                               bool isCallValid,
-                               GLenum pname,
-                               GLfloat param);
-angle::CallCapture CaptureFogfv(const Context *context,
+angle::CallCapture CaptureFogf(const State &glState, bool isCallValid, GLenum pname, GLfloat param);
+angle::CallCapture CaptureFogfv(const State &glState,
                                 bool isCallValid,
                                 GLenum pname,
                                 const GLfloat *params);
-angle::CallCapture CaptureFogx(const Context *context,
-                               bool isCallValid,
-                               GLenum pname,
-                               GLfixed param);
-angle::CallCapture CaptureFogxv(const Context *context,
+angle::CallCapture CaptureFogx(const State &glState, bool isCallValid, GLenum pname, GLfixed param);
+angle::CallCapture CaptureFogxv(const State &glState,
                                 bool isCallValid,
                                 GLenum pname,
                                 const GLfixed *param);
-angle::CallCapture CaptureFrustumf(const Context *context,
+angle::CallCapture CaptureFrustumf(const State &glState,
                                    bool isCallValid,
                                    GLfloat l,
                                    GLfloat r,
@@ -104,7 +94,7 @@
                                    GLfloat t,
                                    GLfloat n,
                                    GLfloat f);
-angle::CallCapture CaptureFrustumx(const Context *context,
+angle::CallCapture CaptureFrustumx(const State &glState,
                                    bool isCallValid,
                                    GLfixed l,
                                    GLfixed r,
@@ -112,156 +102,154 @@
                                    GLfixed t,
                                    GLfixed n,
                                    GLfixed f);
-angle::CallCapture CaptureGetClipPlanef(const Context *context,
+angle::CallCapture CaptureGetClipPlanef(const State &glState,
                                         bool isCallValid,
                                         GLenum plane,
                                         GLfloat *equation);
-angle::CallCapture CaptureGetClipPlanex(const Context *context,
+angle::CallCapture CaptureGetClipPlanex(const State &glState,
                                         bool isCallValid,
                                         GLenum plane,
                                         GLfixed *equation);
-angle::CallCapture CaptureGetFixedv(const Context *context,
+angle::CallCapture CaptureGetFixedv(const State &glState,
                                     bool isCallValid,
                                     GLenum pname,
                                     GLfixed *params);
-angle::CallCapture CaptureGetLightfv(const Context *context,
+angle::CallCapture CaptureGetLightfv(const State &glState,
                                      bool isCallValid,
                                      GLenum light,
                                      LightParameter pnamePacked,
                                      GLfloat *params);
-angle::CallCapture CaptureGetLightxv(const Context *context,
+angle::CallCapture CaptureGetLightxv(const State &glState,
                                      bool isCallValid,
                                      GLenum light,
                                      LightParameter pnamePacked,
                                      GLfixed *params);
-angle::CallCapture CaptureGetMaterialfv(const Context *context,
+angle::CallCapture CaptureGetMaterialfv(const State &glState,
                                         bool isCallValid,
                                         GLenum face,
                                         MaterialParameter pnamePacked,
                                         GLfloat *params);
-angle::CallCapture CaptureGetMaterialxv(const Context *context,
+angle::CallCapture CaptureGetMaterialxv(const State &glState,
                                         bool isCallValid,
                                         GLenum face,
                                         MaterialParameter pnamePacked,
                                         GLfixed *params);
-angle::CallCapture CaptureGetTexEnvfv(const Context *context,
+angle::CallCapture CaptureGetTexEnvfv(const State &glState,
                                       bool isCallValid,
                                       TextureEnvTarget targetPacked,
                                       TextureEnvParameter pnamePacked,
                                       GLfloat *params);
-angle::CallCapture CaptureGetTexEnviv(const Context *context,
+angle::CallCapture CaptureGetTexEnviv(const State &glState,
                                       bool isCallValid,
                                       TextureEnvTarget targetPacked,
                                       TextureEnvParameter pnamePacked,
                                       GLint *params);
-angle::CallCapture CaptureGetTexEnvxv(const Context *context,
+angle::CallCapture CaptureGetTexEnvxv(const State &glState,
                                       bool isCallValid,
                                       TextureEnvTarget targetPacked,
                                       TextureEnvParameter pnamePacked,
                                       GLfixed *params);
-angle::CallCapture CaptureGetTexParameterxv(const Context *context,
+angle::CallCapture CaptureGetTexParameterxv(const State &glState,
                                             bool isCallValid,
                                             TextureType targetPacked,
                                             GLenum pname,
                                             GLfixed *params);
-angle::CallCapture CaptureLightModelf(const Context *context,
+angle::CallCapture CaptureLightModelf(const State &glState,
                                       bool isCallValid,
                                       GLenum pname,
                                       GLfloat param);
-angle::CallCapture CaptureLightModelfv(const Context *context,
+angle::CallCapture CaptureLightModelfv(const State &glState,
                                        bool isCallValid,
                                        GLenum pname,
                                        const GLfloat *params);
-angle::CallCapture CaptureLightModelx(const Context *context,
+angle::CallCapture CaptureLightModelx(const State &glState,
                                       bool isCallValid,
                                       GLenum pname,
                                       GLfixed param);
-angle::CallCapture CaptureLightModelxv(const Context *context,
+angle::CallCapture CaptureLightModelxv(const State &glState,
                                        bool isCallValid,
                                        GLenum pname,
                                        const GLfixed *param);
-angle::CallCapture CaptureLightf(const Context *context,
+angle::CallCapture CaptureLightf(const State &glState,
                                  bool isCallValid,
                                  GLenum light,
                                  LightParameter pnamePacked,
                                  GLfloat param);
-angle::CallCapture CaptureLightfv(const Context *context,
+angle::CallCapture CaptureLightfv(const State &glState,
                                   bool isCallValid,
                                   GLenum light,
                                   LightParameter pnamePacked,
                                   const GLfloat *params);
-angle::CallCapture CaptureLightx(const Context *context,
+angle::CallCapture CaptureLightx(const State &glState,
                                  bool isCallValid,
                                  GLenum light,
                                  LightParameter pnamePacked,
                                  GLfixed param);
-angle::CallCapture CaptureLightxv(const Context *context,
+angle::CallCapture CaptureLightxv(const State &glState,
                                   bool isCallValid,
                                   GLenum light,
                                   LightParameter pnamePacked,
                                   const GLfixed *params);
-angle::CallCapture CaptureLineWidthx(const Context *context, bool isCallValid, GLfixed width);
-angle::CallCapture CaptureLoadIdentity(const Context *context, bool isCallValid);
-angle::CallCapture CaptureLoadMatrixf(const Context *context, bool isCallValid, const GLfloat *m);
-angle::CallCapture CaptureLoadMatrixx(const Context *context, bool isCallValid, const GLfixed *m);
-angle::CallCapture CaptureLogicOp(const Context *context,
+angle::CallCapture CaptureLineWidthx(const State &glState, bool isCallValid, GLfixed width);
+angle::CallCapture CaptureLoadIdentity(const State &glState, bool isCallValid);
+angle::CallCapture CaptureLoadMatrixf(const State &glState, bool isCallValid, const GLfloat *m);
+angle::CallCapture CaptureLoadMatrixx(const State &glState, bool isCallValid, const GLfixed *m);
+angle::CallCapture CaptureLogicOp(const State &glState,
                                   bool isCallValid,
                                   LogicalOperation opcodePacked);
-angle::CallCapture CaptureMaterialf(const Context *context,
+angle::CallCapture CaptureMaterialf(const State &glState,
                                     bool isCallValid,
                                     GLenum face,
                                     MaterialParameter pnamePacked,
                                     GLfloat param);
-angle::CallCapture CaptureMaterialfv(const Context *context,
+angle::CallCapture CaptureMaterialfv(const State &glState,
                                      bool isCallValid,
                                      GLenum face,
                                      MaterialParameter pnamePacked,
                                      const GLfloat *params);
-angle::CallCapture CaptureMaterialx(const Context *context,
+angle::CallCapture CaptureMaterialx(const State &glState,
                                     bool isCallValid,
                                     GLenum face,
                                     MaterialParameter pnamePacked,
                                     GLfixed param);
-angle::CallCapture CaptureMaterialxv(const Context *context,
+angle::CallCapture CaptureMaterialxv(const State &glState,
                                      bool isCallValid,
                                      GLenum face,
                                      MaterialParameter pnamePacked,
                                      const GLfixed *param);
-angle::CallCapture CaptureMatrixMode(const Context *context,
-                                     bool isCallValid,
-                                     MatrixType modePacked);
-angle::CallCapture CaptureMultMatrixf(const Context *context, bool isCallValid, const GLfloat *m);
-angle::CallCapture CaptureMultMatrixx(const Context *context, bool isCallValid, const GLfixed *m);
-angle::CallCapture CaptureMultiTexCoord4f(const Context *context,
+angle::CallCapture CaptureMatrixMode(const State &glState, bool isCallValid, MatrixType modePacked);
+angle::CallCapture CaptureMultMatrixf(const State &glState, bool isCallValid, const GLfloat *m);
+angle::CallCapture CaptureMultMatrixx(const State &glState, bool isCallValid, const GLfixed *m);
+angle::CallCapture CaptureMultiTexCoord4f(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           GLfloat s,
                                           GLfloat t,
                                           GLfloat r,
                                           GLfloat q);
-angle::CallCapture CaptureMultiTexCoord4x(const Context *context,
+angle::CallCapture CaptureMultiTexCoord4x(const State &glState,
                                           bool isCallValid,
                                           GLenum texture,
                                           GLfixed s,
                                           GLfixed t,
                                           GLfixed r,
                                           GLfixed q);
-angle::CallCapture CaptureNormal3f(const Context *context,
+angle::CallCapture CaptureNormal3f(const State &glState,
                                    bool isCallValid,
                                    GLfloat nx,
                                    GLfloat ny,
                                    GLfloat nz);
-angle::CallCapture CaptureNormal3x(const Context *context,
+angle::CallCapture CaptureNormal3x(const State &glState,
                                    bool isCallValid,
                                    GLfixed nx,
                                    GLfixed ny,
                                    GLfixed nz);
-angle::CallCapture CaptureNormalPointer(const Context *context,
+angle::CallCapture CaptureNormalPointer(const State &glState,
                                         bool isCallValid,
                                         VertexAttribType typePacked,
                                         GLsizei stride,
                                         const void *pointer);
-angle::CallCapture CaptureOrthof(const Context *context,
+angle::CallCapture CaptureOrthof(const State &glState,
                                  bool isCallValid,
                                  GLfloat l,
                                  GLfloat r,
@@ -269,7 +257,7 @@
                                  GLfloat t,
                                  GLfloat n,
                                  GLfloat f);
-angle::CallCapture CaptureOrthox(const Context *context,
+angle::CallCapture CaptureOrthox(const State &glState,
                                  bool isCallValid,
                                  GLfixed l,
                                  GLfixed r,
@@ -277,116 +265,116 @@
                                  GLfixed t,
                                  GLfixed n,
                                  GLfixed f);
-angle::CallCapture CapturePointParameterf(const Context *context,
+angle::CallCapture CapturePointParameterf(const State &glState,
                                           bool isCallValid,
                                           PointParameter pnamePacked,
                                           GLfloat param);
-angle::CallCapture CapturePointParameterfv(const Context *context,
+angle::CallCapture CapturePointParameterfv(const State &glState,
                                            bool isCallValid,
                                            PointParameter pnamePacked,
                                            const GLfloat *params);
-angle::CallCapture CapturePointParameterx(const Context *context,
+angle::CallCapture CapturePointParameterx(const State &glState,
                                           bool isCallValid,
                                           PointParameter pnamePacked,
                                           GLfixed param);
-angle::CallCapture CapturePointParameterxv(const Context *context,
+angle::CallCapture CapturePointParameterxv(const State &glState,
                                            bool isCallValid,
                                            PointParameter pnamePacked,
                                            const GLfixed *params);
-angle::CallCapture CapturePointSize(const Context *context, bool isCallValid, GLfloat size);
-angle::CallCapture CapturePointSizex(const Context *context, bool isCallValid, GLfixed size);
-angle::CallCapture CapturePolygonOffsetx(const Context *context,
+angle::CallCapture CapturePointSize(const State &glState, bool isCallValid, GLfloat size);
+angle::CallCapture CapturePointSizex(const State &glState, bool isCallValid, GLfixed size);
+angle::CallCapture CapturePolygonOffsetx(const State &glState,
                                          bool isCallValid,
                                          GLfixed factor,
                                          GLfixed units);
-angle::CallCapture CapturePopMatrix(const Context *context, bool isCallValid);
-angle::CallCapture CapturePushMatrix(const Context *context, bool isCallValid);
-angle::CallCapture CaptureRotatef(const Context *context,
+angle::CallCapture CapturePopMatrix(const State &glState, bool isCallValid);
+angle::CallCapture CapturePushMatrix(const State &glState, bool isCallValid);
+angle::CallCapture CaptureRotatef(const State &glState,
                                   bool isCallValid,
                                   GLfloat angle,
                                   GLfloat x,
                                   GLfloat y,
                                   GLfloat z);
-angle::CallCapture CaptureRotatex(const Context *context,
+angle::CallCapture CaptureRotatex(const State &glState,
                                   bool isCallValid,
                                   GLfixed angle,
                                   GLfixed x,
                                   GLfixed y,
                                   GLfixed z);
-angle::CallCapture CaptureSampleCoveragex(const Context *context,
+angle::CallCapture CaptureSampleCoveragex(const State &glState,
                                           bool isCallValid,
                                           GLclampx value,
                                           GLboolean invert);
-angle::CallCapture CaptureScalef(const Context *context,
+angle::CallCapture CaptureScalef(const State &glState,
                                  bool isCallValid,
                                  GLfloat x,
                                  GLfloat y,
                                  GLfloat z);
-angle::CallCapture CaptureScalex(const Context *context,
+angle::CallCapture CaptureScalex(const State &glState,
                                  bool isCallValid,
                                  GLfixed x,
                                  GLfixed y,
                                  GLfixed z);
-angle::CallCapture CaptureShadeModel(const Context *context,
+angle::CallCapture CaptureShadeModel(const State &glState,
                                      bool isCallValid,
                                      ShadingModel modePacked);
-angle::CallCapture CaptureTexCoordPointer(const Context *context,
+angle::CallCapture CaptureTexCoordPointer(const State &glState,
                                           bool isCallValid,
                                           GLint size,
                                           VertexAttribType typePacked,
                                           GLsizei stride,
                                           const void *pointer);
-angle::CallCapture CaptureTexEnvf(const Context *context,
+angle::CallCapture CaptureTexEnvf(const State &glState,
                                   bool isCallValid,
                                   TextureEnvTarget targetPacked,
                                   TextureEnvParameter pnamePacked,
                                   GLfloat param);
-angle::CallCapture CaptureTexEnvfv(const Context *context,
+angle::CallCapture CaptureTexEnvfv(const State &glState,
                                    bool isCallValid,
                                    TextureEnvTarget targetPacked,
                                    TextureEnvParameter pnamePacked,
                                    const GLfloat *params);
-angle::CallCapture CaptureTexEnvi(const Context *context,
+angle::CallCapture CaptureTexEnvi(const State &glState,
                                   bool isCallValid,
                                   TextureEnvTarget targetPacked,
                                   TextureEnvParameter pnamePacked,
                                   GLint param);
-angle::CallCapture CaptureTexEnviv(const Context *context,
+angle::CallCapture CaptureTexEnviv(const State &glState,
                                    bool isCallValid,
                                    TextureEnvTarget targetPacked,
                                    TextureEnvParameter pnamePacked,
                                    const GLint *params);
-angle::CallCapture CaptureTexEnvx(const Context *context,
+angle::CallCapture CaptureTexEnvx(const State &glState,
                                   bool isCallValid,
                                   TextureEnvTarget targetPacked,
                                   TextureEnvParameter pnamePacked,
                                   GLfixed param);
-angle::CallCapture CaptureTexEnvxv(const Context *context,
+angle::CallCapture CaptureTexEnvxv(const State &glState,
                                    bool isCallValid,
                                    TextureEnvTarget targetPacked,
                                    TextureEnvParameter pnamePacked,
                                    const GLfixed *params);
-angle::CallCapture CaptureTexParameterx(const Context *context,
+angle::CallCapture CaptureTexParameterx(const State &glState,
                                         bool isCallValid,
                                         TextureType targetPacked,
                                         GLenum pname,
                                         GLfixed param);
-angle::CallCapture CaptureTexParameterxv(const Context *context,
+angle::CallCapture CaptureTexParameterxv(const State &glState,
                                          bool isCallValid,
                                          TextureType targetPacked,
                                          GLenum pname,
                                          const GLfixed *params);
-angle::CallCapture CaptureTranslatef(const Context *context,
+angle::CallCapture CaptureTranslatef(const State &glState,
                                      bool isCallValid,
                                      GLfloat x,
                                      GLfloat y,
                                      GLfloat z);
-angle::CallCapture CaptureTranslatex(const Context *context,
+angle::CallCapture CaptureTranslatex(const State &glState,
                                      bool isCallValid,
                                      GLfixed x,
                                      GLfixed y,
                                      GLfixed z);
-angle::CallCapture CaptureVertexPointer(const Context *context,
+angle::CallCapture CaptureVertexPointer(const State &glState,
                                         bool isCallValid,
                                         GLint size,
                                         VertexAttribType typePacked,
@@ -395,194 +383,194 @@
 
 // Parameter Captures
 
-void CaptureClipPlanef_eqn(const Context *context,
+void CaptureClipPlanef_eqn(const State &glState,
                            bool isCallValid,
                            GLenum p,
                            const GLfloat *eqn,
                            angle::ParamCapture *paramCapture);
-void CaptureClipPlanex_equation(const Context *context,
+void CaptureClipPlanex_equation(const State &glState,
                                 bool isCallValid,
                                 GLenum plane,
                                 const GLfixed *equation,
                                 angle::ParamCapture *paramCapture);
-void CaptureColorPointer_pointer(const Context *context,
+void CaptureColorPointer_pointer(const State &glState,
                                  bool isCallValid,
                                  GLint size,
                                  VertexAttribType typePacked,
                                  GLsizei stride,
                                  const void *pointer,
                                  angle::ParamCapture *paramCapture);
-void CaptureFogfv_params(const Context *context,
+void CaptureFogfv_params(const State &glState,
                          bool isCallValid,
                          GLenum pname,
                          const GLfloat *params,
                          angle::ParamCapture *paramCapture);
-void CaptureFogxv_param(const Context *context,
+void CaptureFogxv_param(const State &glState,
                         bool isCallValid,
                         GLenum pname,
                         const GLfixed *param,
                         angle::ParamCapture *paramCapture);
-void CaptureGetClipPlanef_equation(const Context *context,
+void CaptureGetClipPlanef_equation(const State &glState,
                                    bool isCallValid,
                                    GLenum plane,
                                    GLfloat *equation,
                                    angle::ParamCapture *paramCapture);
-void CaptureGetClipPlanex_equation(const Context *context,
+void CaptureGetClipPlanex_equation(const State &glState,
                                    bool isCallValid,
                                    GLenum plane,
                                    GLfixed *equation,
                                    angle::ParamCapture *paramCapture);
-void CaptureGetFixedv_params(const Context *context,
+void CaptureGetFixedv_params(const State &glState,
                              bool isCallValid,
                              GLenum pname,
                              GLfixed *params,
                              angle::ParamCapture *paramCapture);
-void CaptureGetLightfv_params(const Context *context,
+void CaptureGetLightfv_params(const State &glState,
                               bool isCallValid,
                               GLenum light,
                               LightParameter pnamePacked,
                               GLfloat *params,
                               angle::ParamCapture *paramCapture);
-void CaptureGetLightxv_params(const Context *context,
+void CaptureGetLightxv_params(const State &glState,
                               bool isCallValid,
                               GLenum light,
                               LightParameter pnamePacked,
                               GLfixed *params,
                               angle::ParamCapture *paramCapture);
-void CaptureGetMaterialfv_params(const Context *context,
+void CaptureGetMaterialfv_params(const State &glState,
                                  bool isCallValid,
                                  GLenum face,
                                  MaterialParameter pnamePacked,
                                  GLfloat *params,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetMaterialxv_params(const Context *context,
+void CaptureGetMaterialxv_params(const State &glState,
                                  bool isCallValid,
                                  GLenum face,
                                  MaterialParameter pnamePacked,
                                  GLfixed *params,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetTexEnvfv_params(const Context *context,
+void CaptureGetTexEnvfv_params(const State &glState,
                                bool isCallValid,
                                TextureEnvTarget targetPacked,
                                TextureEnvParameter pnamePacked,
                                GLfloat *params,
                                angle::ParamCapture *paramCapture);
-void CaptureGetTexEnviv_params(const Context *context,
+void CaptureGetTexEnviv_params(const State &glState,
                                bool isCallValid,
                                TextureEnvTarget targetPacked,
                                TextureEnvParameter pnamePacked,
                                GLint *params,
                                angle::ParamCapture *paramCapture);
-void CaptureGetTexEnvxv_params(const Context *context,
+void CaptureGetTexEnvxv_params(const State &glState,
                                bool isCallValid,
                                TextureEnvTarget targetPacked,
                                TextureEnvParameter pnamePacked,
                                GLfixed *params,
                                angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterxv_params(const Context *context,
+void CaptureGetTexParameterxv_params(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked,
                                      GLenum pname,
                                      GLfixed *params,
                                      angle::ParamCapture *paramCapture);
-void CaptureLightModelfv_params(const Context *context,
+void CaptureLightModelfv_params(const State &glState,
                                 bool isCallValid,
                                 GLenum pname,
                                 const GLfloat *params,
                                 angle::ParamCapture *paramCapture);
-void CaptureLightModelxv_param(const Context *context,
+void CaptureLightModelxv_param(const State &glState,
                                bool isCallValid,
                                GLenum pname,
                                const GLfixed *param,
                                angle::ParamCapture *paramCapture);
-void CaptureLightfv_params(const Context *context,
+void CaptureLightfv_params(const State &glState,
                            bool isCallValid,
                            GLenum light,
                            LightParameter pnamePacked,
                            const GLfloat *params,
                            angle::ParamCapture *paramCapture);
-void CaptureLightxv_params(const Context *context,
+void CaptureLightxv_params(const State &glState,
                            bool isCallValid,
                            GLenum light,
                            LightParameter pnamePacked,
                            const GLfixed *params,
                            angle::ParamCapture *paramCapture);
-void CaptureLoadMatrixf_m(const Context *context,
+void CaptureLoadMatrixf_m(const State &glState,
                           bool isCallValid,
                           const GLfloat *m,
                           angle::ParamCapture *paramCapture);
-void CaptureLoadMatrixx_m(const Context *context,
+void CaptureLoadMatrixx_m(const State &glState,
                           bool isCallValid,
                           const GLfixed *m,
                           angle::ParamCapture *paramCapture);
-void CaptureMaterialfv_params(const Context *context,
+void CaptureMaterialfv_params(const State &glState,
                               bool isCallValid,
                               GLenum face,
                               MaterialParameter pnamePacked,
                               const GLfloat *params,
                               angle::ParamCapture *paramCapture);
-void CaptureMaterialxv_param(const Context *context,
+void CaptureMaterialxv_param(const State &glState,
                              bool isCallValid,
                              GLenum face,
                              MaterialParameter pnamePacked,
                              const GLfixed *param,
                              angle::ParamCapture *paramCapture);
-void CaptureMultMatrixf_m(const Context *context,
+void CaptureMultMatrixf_m(const State &glState,
                           bool isCallValid,
                           const GLfloat *m,
                           angle::ParamCapture *paramCapture);
-void CaptureMultMatrixx_m(const Context *context,
+void CaptureMultMatrixx_m(const State &glState,
                           bool isCallValid,
                           const GLfixed *m,
                           angle::ParamCapture *paramCapture);
-void CaptureNormalPointer_pointer(const Context *context,
+void CaptureNormalPointer_pointer(const State &glState,
                                   bool isCallValid,
                                   VertexAttribType typePacked,
                                   GLsizei stride,
                                   const void *pointer,
                                   angle::ParamCapture *paramCapture);
-void CapturePointParameterfv_params(const Context *context,
+void CapturePointParameterfv_params(const State &glState,
                                     bool isCallValid,
                                     PointParameter pnamePacked,
                                     const GLfloat *params,
                                     angle::ParamCapture *paramCapture);
-void CapturePointParameterxv_params(const Context *context,
+void CapturePointParameterxv_params(const State &glState,
                                     bool isCallValid,
                                     PointParameter pnamePacked,
                                     const GLfixed *params,
                                     angle::ParamCapture *paramCapture);
-void CaptureTexCoordPointer_pointer(const Context *context,
+void CaptureTexCoordPointer_pointer(const State &glState,
                                     bool isCallValid,
                                     GLint size,
                                     VertexAttribType typePacked,
                                     GLsizei stride,
                                     const void *pointer,
                                     angle::ParamCapture *paramCapture);
-void CaptureTexEnvfv_params(const Context *context,
+void CaptureTexEnvfv_params(const State &glState,
                             bool isCallValid,
                             TextureEnvTarget targetPacked,
                             TextureEnvParameter pnamePacked,
                             const GLfloat *params,
                             angle::ParamCapture *paramCapture);
-void CaptureTexEnviv_params(const Context *context,
+void CaptureTexEnviv_params(const State &glState,
                             bool isCallValid,
                             TextureEnvTarget targetPacked,
                             TextureEnvParameter pnamePacked,
                             const GLint *params,
                             angle::ParamCapture *paramCapture);
-void CaptureTexEnvxv_params(const Context *context,
+void CaptureTexEnvxv_params(const State &glState,
                             bool isCallValid,
                             TextureEnvTarget targetPacked,
                             TextureEnvParameter pnamePacked,
                             const GLfixed *params,
                             angle::ParamCapture *paramCapture);
-void CaptureTexParameterxv_params(const Context *context,
+void CaptureTexParameterxv_params(const State &glState,
                                   bool isCallValid,
                                   TextureType targetPacked,
                                   GLenum pname,
                                   const GLfixed *params,
                                   angle::ParamCapture *paramCapture);
-void CaptureVertexPointer_pointer(const Context *context,
+void CaptureVertexPointer_pointer(const State &glState,
                                   bool isCallValid,
                                   GLint size,
                                   VertexAttribType typePacked,
diff --git a/src/libANGLE/capture_gles_1_0_params.cpp b/src/libANGLE/capture_gles_1_0_params.cpp
index 75af062..fdeb5de 100644
--- a/src/libANGLE/capture_gles_1_0_params.cpp
+++ b/src/libANGLE/capture_gles_1_0_params.cpp
@@ -13,7 +13,7 @@
 namespace gl
 {
 
-void CaptureClipPlanef_eqn(const Context *context,
+void CaptureClipPlanef_eqn(const State &glState,
                            bool isCallValid,
                            GLenum p,
                            const GLfloat *eqn,
@@ -22,7 +22,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureClipPlanex_equation(const Context *context,
+void CaptureClipPlanex_equation(const State &glState,
                                 bool isCallValid,
                                 GLenum plane,
                                 const GLfixed *equation,
@@ -31,7 +31,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureColorPointer_pointer(const Context *context,
+void CaptureColorPointer_pointer(const State &glState,
                                  bool isCallValid,
                                  GLint size,
                                  VertexAttribType typePacked,
@@ -42,7 +42,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureFogfv_params(const Context *context,
+void CaptureFogfv_params(const State &glState,
                          bool isCallValid,
                          GLenum pname,
                          const GLfloat *params,
@@ -51,7 +51,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureFogxv_param(const Context *context,
+void CaptureFogxv_param(const State &glState,
                         bool isCallValid,
                         GLenum pname,
                         const GLfixed *param,
@@ -60,7 +60,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetClipPlanef_equation(const Context *context,
+void CaptureGetClipPlanef_equation(const State &glState,
                                    bool isCallValid,
                                    GLenum plane,
                                    GLfloat *equation,
@@ -69,7 +69,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetClipPlanex_equation(const Context *context,
+void CaptureGetClipPlanex_equation(const State &glState,
                                    bool isCallValid,
                                    GLenum plane,
                                    GLfixed *equation,
@@ -78,7 +78,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFixedv_params(const Context *context,
+void CaptureGetFixedv_params(const State &glState,
                              bool isCallValid,
                              GLenum pname,
                              GLfixed *params,
@@ -87,7 +87,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetLightfv_params(const Context *context,
+void CaptureGetLightfv_params(const State &glState,
                               bool isCallValid,
                               GLenum light,
                               LightParameter pnamePacked,
@@ -97,7 +97,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetLightxv_params(const Context *context,
+void CaptureGetLightxv_params(const State &glState,
                               bool isCallValid,
                               GLenum light,
                               LightParameter pnamePacked,
@@ -107,7 +107,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetMaterialfv_params(const Context *context,
+void CaptureGetMaterialfv_params(const State &glState,
                                  bool isCallValid,
                                  GLenum face,
                                  MaterialParameter pnamePacked,
@@ -117,7 +117,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetMaterialxv_params(const Context *context,
+void CaptureGetMaterialxv_params(const State &glState,
                                  bool isCallValid,
                                  GLenum face,
                                  MaterialParameter pnamePacked,
@@ -127,7 +127,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexEnvfv_params(const Context *context,
+void CaptureGetTexEnvfv_params(const State &glState,
                                bool isCallValid,
                                TextureEnvTarget targetPacked,
                                TextureEnvParameter pnamePacked,
@@ -137,7 +137,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexEnviv_params(const Context *context,
+void CaptureGetTexEnviv_params(const State &glState,
                                bool isCallValid,
                                TextureEnvTarget targetPacked,
                                TextureEnvParameter pnamePacked,
@@ -147,7 +147,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexEnvxv_params(const Context *context,
+void CaptureGetTexEnvxv_params(const State &glState,
                                bool isCallValid,
                                TextureEnvTarget targetPacked,
                                TextureEnvParameter pnamePacked,
@@ -157,7 +157,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterxv_params(const Context *context,
+void CaptureGetTexParameterxv_params(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked,
                                      GLenum pname,
@@ -167,7 +167,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureLightModelfv_params(const Context *context,
+void CaptureLightModelfv_params(const State &glState,
                                 bool isCallValid,
                                 GLenum pname,
                                 const GLfloat *params,
@@ -176,7 +176,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureLightModelxv_param(const Context *context,
+void CaptureLightModelxv_param(const State &glState,
                                bool isCallValid,
                                GLenum pname,
                                const GLfixed *param,
@@ -185,7 +185,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureLightfv_params(const Context *context,
+void CaptureLightfv_params(const State &glState,
                            bool isCallValid,
                            GLenum light,
                            LightParameter pnamePacked,
@@ -195,7 +195,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureLightxv_params(const Context *context,
+void CaptureLightxv_params(const State &glState,
                            bool isCallValid,
                            GLenum light,
                            LightParameter pnamePacked,
@@ -205,7 +205,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureLoadMatrixf_m(const Context *context,
+void CaptureLoadMatrixf_m(const State &glState,
                           bool isCallValid,
                           const GLfloat *m,
                           ParamCapture *paramCapture)
@@ -213,7 +213,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureLoadMatrixx_m(const Context *context,
+void CaptureLoadMatrixx_m(const State &glState,
                           bool isCallValid,
                           const GLfixed *m,
                           ParamCapture *paramCapture)
@@ -221,7 +221,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMaterialfv_params(const Context *context,
+void CaptureMaterialfv_params(const State &glState,
                               bool isCallValid,
                               GLenum face,
                               MaterialParameter pnamePacked,
@@ -231,7 +231,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMaterialxv_param(const Context *context,
+void CaptureMaterialxv_param(const State &glState,
                              bool isCallValid,
                              GLenum face,
                              MaterialParameter pnamePacked,
@@ -241,7 +241,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultMatrixf_m(const Context *context,
+void CaptureMultMatrixf_m(const State &glState,
                           bool isCallValid,
                           const GLfloat *m,
                           ParamCapture *paramCapture)
@@ -249,7 +249,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultMatrixx_m(const Context *context,
+void CaptureMultMatrixx_m(const State &glState,
                           bool isCallValid,
                           const GLfixed *m,
                           ParamCapture *paramCapture)
@@ -257,7 +257,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureNormalPointer_pointer(const Context *context,
+void CaptureNormalPointer_pointer(const State &glState,
                                   bool isCallValid,
                                   VertexAttribType typePacked,
                                   GLsizei stride,
@@ -267,7 +267,7 @@
     UNIMPLEMENTED();
 }
 
-void CapturePointParameterfv_params(const Context *context,
+void CapturePointParameterfv_params(const State &glState,
                                     bool isCallValid,
                                     PointParameter pnamePacked,
                                     const GLfloat *params,
@@ -276,7 +276,7 @@
     UNIMPLEMENTED();
 }
 
-void CapturePointParameterxv_params(const Context *context,
+void CapturePointParameterxv_params(const State &glState,
                                     bool isCallValid,
                                     PointParameter pnamePacked,
                                     const GLfixed *params,
@@ -285,7 +285,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexCoordPointer_pointer(const Context *context,
+void CaptureTexCoordPointer_pointer(const State &glState,
                                     bool isCallValid,
                                     GLint size,
                                     VertexAttribType typePacked,
@@ -296,7 +296,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexEnvfv_params(const Context *context,
+void CaptureTexEnvfv_params(const State &glState,
                             bool isCallValid,
                             TextureEnvTarget targetPacked,
                             TextureEnvParameter pnamePacked,
@@ -306,7 +306,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexEnviv_params(const Context *context,
+void CaptureTexEnviv_params(const State &glState,
                             bool isCallValid,
                             TextureEnvTarget targetPacked,
                             TextureEnvParameter pnamePacked,
@@ -316,7 +316,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexEnvxv_params(const Context *context,
+void CaptureTexEnvxv_params(const State &glState,
                             bool isCallValid,
                             TextureEnvTarget targetPacked,
                             TextureEnvParameter pnamePacked,
@@ -326,7 +326,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameterxv_params(const Context *context,
+void CaptureTexParameterxv_params(const State &glState,
                                   bool isCallValid,
                                   TextureType targetPacked,
                                   GLenum pname,
@@ -336,7 +336,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureVertexPointer_pointer(const Context *context,
+void CaptureVertexPointer_pointer(const State &glState,
                                   bool isCallValid,
                                   GLint size,
                                   VertexAttribType typePacked,
diff --git a/src/libANGLE/capture_gles_2_0_autogen.cpp b/src/libANGLE/capture_gles_2_0_autogen.cpp
index 05e46c3..f585fc5 100644
--- a/src/libANGLE/capture_gles_2_0_autogen.cpp
+++ b/src/libANGLE/capture_gles_2_0_autogen.cpp
@@ -20,7 +20,7 @@
 namespace gl
 {
 
-CallCapture CaptureActiveTexture(const Context *context, bool isCallValid, GLenum texture)
+CallCapture CaptureActiveTexture(const State &glState, bool isCallValid, GLenum texture)
 {
     ParamBuffer paramBuffer;
 
@@ -29,7 +29,7 @@
     return CallCapture(gl::EntryPoint::ActiveTexture, std::move(paramBuffer));
 }
 
-CallCapture CaptureAttachShader(const Context *context,
+CallCapture CaptureAttachShader(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID programPacked,
                                 ShaderProgramID shaderPacked)
@@ -42,7 +42,7 @@
     return CallCapture(gl::EntryPoint::AttachShader, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindAttribLocation(const Context *context,
+CallCapture CaptureBindAttribLocation(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID programPacked,
                                       GLuint index,
@@ -55,13 +55,13 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureBindAttribLocation_name(context, isCallValid, programPacked, index, name, &nameParam);
+    CaptureBindAttribLocation_name(glState, isCallValid, programPacked, index, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::BindAttribLocation, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindBuffer(const Context *context,
+CallCapture CaptureBindBuffer(const State &glState,
                               bool isCallValid,
                               BufferBinding targetPacked,
                               BufferID bufferPacked)
@@ -74,7 +74,7 @@
     return CallCapture(gl::EntryPoint::BindBuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindFramebuffer(const Context *context,
+CallCapture CaptureBindFramebuffer(const State &glState,
                                    bool isCallValid,
                                    GLenum target,
                                    FramebufferID framebufferPacked)
@@ -87,7 +87,7 @@
     return CallCapture(gl::EntryPoint::BindFramebuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindRenderbuffer(const Context *context,
+CallCapture CaptureBindRenderbuffer(const State &glState,
                                     bool isCallValid,
                                     GLenum target,
                                     RenderbufferID renderbufferPacked)
@@ -100,7 +100,7 @@
     return CallCapture(gl::EntryPoint::BindRenderbuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindTexture(const Context *context,
+CallCapture CaptureBindTexture(const State &glState,
                                bool isCallValid,
                                TextureType targetPacked,
                                TextureID texturePacked)
@@ -113,7 +113,7 @@
     return CallCapture(gl::EntryPoint::BindTexture, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlendColor(const Context *context,
+CallCapture CaptureBlendColor(const State &glState,
                               bool isCallValid,
                               GLfloat red,
                               GLfloat green,
@@ -130,7 +130,7 @@
     return CallCapture(gl::EntryPoint::BlendColor, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlendEquation(const Context *context, bool isCallValid, GLenum mode)
+CallCapture CaptureBlendEquation(const State &glState, bool isCallValid, GLenum mode)
 {
     ParamBuffer paramBuffer;
 
@@ -139,7 +139,7 @@
     return CallCapture(gl::EntryPoint::BlendEquation, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlendEquationSeparate(const Context *context,
+CallCapture CaptureBlendEquationSeparate(const State &glState,
                                          bool isCallValid,
                                          GLenum modeRGB,
                                          GLenum modeAlpha)
@@ -154,10 +154,7 @@
     return CallCapture(gl::EntryPoint::BlendEquationSeparate, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlendFunc(const Context *context,
-                             bool isCallValid,
-                             GLenum sfactor,
-                             GLenum dfactor)
+CallCapture CaptureBlendFunc(const State &glState, bool isCallValid, GLenum sfactor, GLenum dfactor)
 {
     ParamBuffer paramBuffer;
 
@@ -167,7 +164,7 @@
     return CallCapture(gl::EntryPoint::BlendFunc, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlendFuncSeparate(const Context *context,
+CallCapture CaptureBlendFuncSeparate(const State &glState,
                                      bool isCallValid,
                                      GLenum sfactorRGB,
                                      GLenum dfactorRGB,
@@ -188,7 +185,7 @@
     return CallCapture(gl::EntryPoint::BlendFuncSeparate, std::move(paramBuffer));
 }
 
-CallCapture CaptureBufferData(const Context *context,
+CallCapture CaptureBufferData(const State &glState,
                               bool isCallValid,
                               BufferBinding targetPacked,
                               GLsizeiptr size,
@@ -202,7 +199,7 @@
 
     ParamCapture dataParam("data", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
-    CaptureBufferData_data(context, isCallValid, targetPacked, size, data, usagePacked, &dataParam);
+    CaptureBufferData_data(glState, isCallValid, targetPacked, size, data, usagePacked, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     paramBuffer.addValueParam("usagePacked", ParamType::TBufferUsage, usagePacked);
@@ -210,7 +207,7 @@
     return CallCapture(gl::EntryPoint::BufferData, std::move(paramBuffer));
 }
 
-CallCapture CaptureBufferSubData(const Context *context,
+CallCapture CaptureBufferSubData(const State &glState,
                                  bool isCallValid,
                                  BufferBinding targetPacked,
                                  GLintptr offset,
@@ -225,13 +222,13 @@
 
     ParamCapture dataParam("data", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
-    CaptureBufferSubData_data(context, isCallValid, targetPacked, offset, size, data, &dataParam);
+    CaptureBufferSubData_data(glState, isCallValid, targetPacked, offset, size, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::BufferSubData, std::move(paramBuffer));
 }
 
-CallCapture CaptureCheckFramebufferStatus(const Context *context,
+CallCapture CaptureCheckFramebufferStatus(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           GLenum returnValue)
@@ -247,7 +244,7 @@
     return CallCapture(gl::EntryPoint::CheckFramebufferStatus, std::move(paramBuffer));
 }
 
-CallCapture CaptureClear(const Context *context, bool isCallValid, GLbitfield mask)
+CallCapture CaptureClear(const State &glState, bool isCallValid, GLbitfield mask)
 {
     ParamBuffer paramBuffer;
 
@@ -256,7 +253,7 @@
     return CallCapture(gl::EntryPoint::Clear, std::move(paramBuffer));
 }
 
-CallCapture CaptureClearColor(const Context *context,
+CallCapture CaptureClearColor(const State &glState,
                               bool isCallValid,
                               GLfloat red,
                               GLfloat green,
@@ -273,7 +270,7 @@
     return CallCapture(gl::EntryPoint::ClearColor, std::move(paramBuffer));
 }
 
-CallCapture CaptureClearDepthf(const Context *context, bool isCallValid, GLfloat d)
+CallCapture CaptureClearDepthf(const State &glState, bool isCallValid, GLfloat d)
 {
     ParamBuffer paramBuffer;
 
@@ -282,7 +279,7 @@
     return CallCapture(gl::EntryPoint::ClearDepthf, std::move(paramBuffer));
 }
 
-CallCapture CaptureClearStencil(const Context *context, bool isCallValid, GLint s)
+CallCapture CaptureClearStencil(const State &glState, bool isCallValid, GLint s)
 {
     ParamBuffer paramBuffer;
 
@@ -291,7 +288,7 @@
     return CallCapture(gl::EntryPoint::ClearStencil, std::move(paramBuffer));
 }
 
-CallCapture CaptureColorMask(const Context *context,
+CallCapture CaptureColorMask(const State &glState,
                              bool isCallValid,
                              GLboolean red,
                              GLboolean green,
@@ -308,7 +305,7 @@
     return CallCapture(gl::EntryPoint::ColorMask, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompileShader(const Context *context,
+CallCapture CaptureCompileShader(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID shaderPacked)
 {
@@ -319,7 +316,7 @@
     return CallCapture(gl::EntryPoint::CompileShader, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexImage2D(const Context *context,
+CallCapture CaptureCompressedTexImage2D(const State &glState,
                                         bool isCallValid,
                                         TextureTarget targetPacked,
                                         GLint level,
@@ -343,14 +340,14 @@
 
     ParamCapture dataParam("data", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexImage2D_data(context, isCallValid, targetPacked, level, internalformat,
+    CaptureCompressedTexImage2D_data(glState, isCallValid, targetPacked, level, internalformat,
                                      width, height, border, imageSize, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::CompressedTexImage2D, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexSubImage2D(const Context *context,
+CallCapture CaptureCompressedTexSubImage2D(const State &glState,
                                            bool isCallValid,
                                            TextureTarget targetPacked,
                                            GLint level,
@@ -375,14 +372,14 @@
 
     ParamCapture dataParam("data", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexSubImage2D_data(context, isCallValid, targetPacked, level, xoffset, yoffset,
+    CaptureCompressedTexSubImage2D_data(glState, isCallValid, targetPacked, level, xoffset, yoffset,
                                         width, height, format, imageSize, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::CompressedTexSubImage2D, std::move(paramBuffer));
 }
 
-CallCapture CaptureCopyTexImage2D(const Context *context,
+CallCapture CaptureCopyTexImage2D(const State &glState,
                                   bool isCallValid,
                                   TextureTarget targetPacked,
                                   GLint level,
@@ -408,7 +405,7 @@
     return CallCapture(gl::EntryPoint::CopyTexImage2D, std::move(paramBuffer));
 }
 
-CallCapture CaptureCopyTexSubImage2D(const Context *context,
+CallCapture CaptureCopyTexSubImage2D(const State &glState,
                                      bool isCallValid,
                                      TextureTarget targetPacked,
                                      GLint level,
@@ -433,7 +430,7 @@
     return CallCapture(gl::EntryPoint::CopyTexSubImage2D, std::move(paramBuffer));
 }
 
-CallCapture CaptureCreateProgram(const Context *context, bool isCallValid, GLuint returnValue)
+CallCapture CaptureCreateProgram(const State &glState, bool isCallValid, GLuint returnValue)
 {
     ParamBuffer paramBuffer;
 
@@ -444,7 +441,7 @@
     return CallCapture(gl::EntryPoint::CreateProgram, std::move(paramBuffer));
 }
 
-CallCapture CaptureCreateShader(const Context *context,
+CallCapture CaptureCreateShader(const State &glState,
                                 bool isCallValid,
                                 ShaderType typePacked,
                                 GLuint returnValue)
@@ -460,7 +457,7 @@
     return CallCapture(gl::EntryPoint::CreateShader, std::move(paramBuffer));
 }
 
-CallCapture CaptureCullFace(const Context *context, bool isCallValid, CullFaceMode modePacked)
+CallCapture CaptureCullFace(const State &glState, bool isCallValid, CullFaceMode modePacked)
 {
     ParamBuffer paramBuffer;
 
@@ -469,7 +466,7 @@
     return CallCapture(gl::EntryPoint::CullFace, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteBuffers(const Context *context,
+CallCapture CaptureDeleteBuffers(const State &glState,
                                  bool isCallValid,
                                  GLsizei n,
                                  const BufferID *buffersPacked)
@@ -480,13 +477,13 @@
 
     ParamCapture buffersPackedParam("buffersPacked", ParamType::TBufferIDConstPointer);
     InitParamValue(ParamType::TBufferIDConstPointer, buffersPacked, &buffersPackedParam.value);
-    CaptureDeleteBuffers_buffersPacked(context, isCallValid, n, buffersPacked, &buffersPackedParam);
+    CaptureDeleteBuffers_buffersPacked(glState, isCallValid, n, buffersPacked, &buffersPackedParam);
     paramBuffer.addParam(std::move(buffersPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteBuffers, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteFramebuffers(const Context *context,
+CallCapture CaptureDeleteFramebuffers(const State &glState,
                                       bool isCallValid,
                                       GLsizei n,
                                       const FramebufferID *framebuffersPacked)
@@ -499,14 +496,14 @@
                                          ParamType::TFramebufferIDConstPointer);
     InitParamValue(ParamType::TFramebufferIDConstPointer, framebuffersPacked,
                    &framebuffersPackedParam.value);
-    CaptureDeleteFramebuffers_framebuffersPacked(context, isCallValid, n, framebuffersPacked,
+    CaptureDeleteFramebuffers_framebuffersPacked(glState, isCallValid, n, framebuffersPacked,
                                                  &framebuffersPackedParam);
     paramBuffer.addParam(std::move(framebuffersPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteFramebuffers, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteProgram(const Context *context,
+CallCapture CaptureDeleteProgram(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked)
 {
@@ -517,7 +514,7 @@
     return CallCapture(gl::EntryPoint::DeleteProgram, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteRenderbuffers(const Context *context,
+CallCapture CaptureDeleteRenderbuffers(const State &glState,
                                        bool isCallValid,
                                        GLsizei n,
                                        const RenderbufferID *renderbuffersPacked)
@@ -530,14 +527,14 @@
                                           ParamType::TRenderbufferIDConstPointer);
     InitParamValue(ParamType::TRenderbufferIDConstPointer, renderbuffersPacked,
                    &renderbuffersPackedParam.value);
-    CaptureDeleteRenderbuffers_renderbuffersPacked(context, isCallValid, n, renderbuffersPacked,
+    CaptureDeleteRenderbuffers_renderbuffersPacked(glState, isCallValid, n, renderbuffersPacked,
                                                    &renderbuffersPackedParam);
     paramBuffer.addParam(std::move(renderbuffersPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteRenderbuffers, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteShader(const Context *context,
+CallCapture CaptureDeleteShader(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID shaderPacked)
 {
@@ -548,7 +545,7 @@
     return CallCapture(gl::EntryPoint::DeleteShader, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteTextures(const Context *context,
+CallCapture CaptureDeleteTextures(const State &glState,
                                   bool isCallValid,
                                   GLsizei n,
                                   const TextureID *texturesPacked)
@@ -559,14 +556,14 @@
 
     ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
     InitParamValue(ParamType::TTextureIDConstPointer, texturesPacked, &texturesPackedParam.value);
-    CaptureDeleteTextures_texturesPacked(context, isCallValid, n, texturesPacked,
+    CaptureDeleteTextures_texturesPacked(glState, isCallValid, n, texturesPacked,
                                          &texturesPackedParam);
     paramBuffer.addParam(std::move(texturesPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteTextures, std::move(paramBuffer));
 }
 
-CallCapture CaptureDepthFunc(const Context *context, bool isCallValid, GLenum func)
+CallCapture CaptureDepthFunc(const State &glState, bool isCallValid, GLenum func)
 {
     ParamBuffer paramBuffer;
 
@@ -575,7 +572,7 @@
     return CallCapture(gl::EntryPoint::DepthFunc, std::move(paramBuffer));
 }
 
-CallCapture CaptureDepthMask(const Context *context, bool isCallValid, GLboolean flag)
+CallCapture CaptureDepthMask(const State &glState, bool isCallValid, GLboolean flag)
 {
     ParamBuffer paramBuffer;
 
@@ -584,7 +581,7 @@
     return CallCapture(gl::EntryPoint::DepthMask, std::move(paramBuffer));
 }
 
-CallCapture CaptureDepthRangef(const Context *context, bool isCallValid, GLfloat n, GLfloat f)
+CallCapture CaptureDepthRangef(const State &glState, bool isCallValid, GLfloat n, GLfloat f)
 {
     ParamBuffer paramBuffer;
 
@@ -594,7 +591,7 @@
     return CallCapture(gl::EntryPoint::DepthRangef, std::move(paramBuffer));
 }
 
-CallCapture CaptureDetachShader(const Context *context,
+CallCapture CaptureDetachShader(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID programPacked,
                                 ShaderProgramID shaderPacked)
@@ -607,7 +604,7 @@
     return CallCapture(gl::EntryPoint::DetachShader, std::move(paramBuffer));
 }
 
-CallCapture CaptureDisable(const Context *context, bool isCallValid, GLenum cap)
+CallCapture CaptureDisable(const State &glState, bool isCallValid, GLenum cap)
 {
     ParamBuffer paramBuffer;
 
@@ -616,7 +613,7 @@
     return CallCapture(gl::EntryPoint::Disable, std::move(paramBuffer));
 }
 
-CallCapture CaptureDisableVertexAttribArray(const Context *context, bool isCallValid, GLuint index)
+CallCapture CaptureDisableVertexAttribArray(const State &glState, bool isCallValid, GLuint index)
 {
     ParamBuffer paramBuffer;
 
@@ -625,7 +622,7 @@
     return CallCapture(gl::EntryPoint::DisableVertexAttribArray, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawArrays(const Context *context,
+CallCapture CaptureDrawArrays(const State &glState,
                               bool isCallValid,
                               PrimitiveMode modePacked,
                               GLint first,
@@ -640,7 +637,7 @@
     return CallCapture(gl::EntryPoint::DrawArrays, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawElements(const Context *context,
+CallCapture CaptureDrawElements(const State &glState,
                                 bool isCallValid,
                                 PrimitiveMode modePacked,
                                 GLsizei count,
@@ -655,14 +652,14 @@
 
     ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
-    CaptureDrawElements_indices(context, isCallValid, modePacked, count, typePacked, indices,
+    CaptureDrawElements_indices(glState, isCallValid, modePacked, count, typePacked, indices,
                                 &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
     return CallCapture(gl::EntryPoint::DrawElements, std::move(paramBuffer));
 }
 
-CallCapture CaptureEnable(const Context *context, bool isCallValid, GLenum cap)
+CallCapture CaptureEnable(const State &glState, bool isCallValid, GLenum cap)
 {
     ParamBuffer paramBuffer;
 
@@ -671,7 +668,7 @@
     return CallCapture(gl::EntryPoint::Enable, std::move(paramBuffer));
 }
 
-CallCapture CaptureEnableVertexAttribArray(const Context *context, bool isCallValid, GLuint index)
+CallCapture CaptureEnableVertexAttribArray(const State &glState, bool isCallValid, GLuint index)
 {
     ParamBuffer paramBuffer;
 
@@ -680,21 +677,21 @@
     return CallCapture(gl::EntryPoint::EnableVertexAttribArray, std::move(paramBuffer));
 }
 
-CallCapture CaptureFinish(const Context *context, bool isCallValid)
+CallCapture CaptureFinish(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::Finish, std::move(paramBuffer));
 }
 
-CallCapture CaptureFlush(const Context *context, bool isCallValid)
+CallCapture CaptureFlush(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::Flush, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferRenderbuffer(const Context *context,
+CallCapture CaptureFramebufferRenderbuffer(const State &glState,
                                            bool isCallValid,
                                            GLenum target,
                                            GLenum attachment,
@@ -713,7 +710,7 @@
     return CallCapture(gl::EntryPoint::FramebufferRenderbuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferTexture2D(const Context *context,
+CallCapture CaptureFramebufferTexture2D(const State &glState,
                                         bool isCallValid,
                                         GLenum target,
                                         GLenum attachment,
@@ -733,7 +730,7 @@
     return CallCapture(gl::EntryPoint::FramebufferTexture2D, std::move(paramBuffer));
 }
 
-CallCapture CaptureFrontFace(const Context *context, bool isCallValid, GLenum mode)
+CallCapture CaptureFrontFace(const State &glState, bool isCallValid, GLenum mode)
 {
     ParamBuffer paramBuffer;
 
@@ -742,7 +739,7 @@
     return CallCapture(gl::EntryPoint::FrontFace, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenBuffers(const Context *context,
+CallCapture CaptureGenBuffers(const State &glState,
                               bool isCallValid,
                               GLsizei n,
                               BufferID *buffersPacked)
@@ -753,13 +750,13 @@
 
     ParamCapture buffersPackedParam("buffersPacked", ParamType::TBufferIDPointer);
     InitParamValue(ParamType::TBufferIDPointer, buffersPacked, &buffersPackedParam.value);
-    CaptureGenBuffers_buffersPacked(context, isCallValid, n, buffersPacked, &buffersPackedParam);
+    CaptureGenBuffers_buffersPacked(glState, isCallValid, n, buffersPacked, &buffersPackedParam);
     paramBuffer.addParam(std::move(buffersPackedParam));
 
     return CallCapture(gl::EntryPoint::GenBuffers, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenFramebuffers(const Context *context,
+CallCapture CaptureGenFramebuffers(const State &glState,
                                    bool isCallValid,
                                    GLsizei n,
                                    FramebufferID *framebuffersPacked)
@@ -771,14 +768,14 @@
     ParamCapture framebuffersPackedParam("framebuffersPacked", ParamType::TFramebufferIDPointer);
     InitParamValue(ParamType::TFramebufferIDPointer, framebuffersPacked,
                    &framebuffersPackedParam.value);
-    CaptureGenFramebuffers_framebuffersPacked(context, isCallValid, n, framebuffersPacked,
+    CaptureGenFramebuffers_framebuffersPacked(glState, isCallValid, n, framebuffersPacked,
                                               &framebuffersPackedParam);
     paramBuffer.addParam(std::move(framebuffersPackedParam));
 
     return CallCapture(gl::EntryPoint::GenFramebuffers, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenRenderbuffers(const Context *context,
+CallCapture CaptureGenRenderbuffers(const State &glState,
                                     bool isCallValid,
                                     GLsizei n,
                                     RenderbufferID *renderbuffersPacked)
@@ -790,14 +787,14 @@
     ParamCapture renderbuffersPackedParam("renderbuffersPacked", ParamType::TRenderbufferIDPointer);
     InitParamValue(ParamType::TRenderbufferIDPointer, renderbuffersPacked,
                    &renderbuffersPackedParam.value);
-    CaptureGenRenderbuffers_renderbuffersPacked(context, isCallValid, n, renderbuffersPacked,
+    CaptureGenRenderbuffers_renderbuffersPacked(glState, isCallValid, n, renderbuffersPacked,
                                                 &renderbuffersPackedParam);
     paramBuffer.addParam(std::move(renderbuffersPackedParam));
 
     return CallCapture(gl::EntryPoint::GenRenderbuffers, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenTextures(const Context *context,
+CallCapture CaptureGenTextures(const State &glState,
                                bool isCallValid,
                                GLsizei n,
                                TextureID *texturesPacked)
@@ -808,16 +805,14 @@
 
     ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDPointer);
     InitParamValue(ParamType::TTextureIDPointer, texturesPacked, &texturesPackedParam.value);
-    CaptureGenTextures_texturesPacked(context, isCallValid, n, texturesPacked,
+    CaptureGenTextures_texturesPacked(glState, isCallValid, n, texturesPacked,
                                       &texturesPackedParam);
     paramBuffer.addParam(std::move(texturesPackedParam));
 
     return CallCapture(gl::EntryPoint::GenTextures, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenerateMipmap(const Context *context,
-                                  bool isCallValid,
-                                  TextureType targetPacked)
+CallCapture CaptureGenerateMipmap(const State &glState, bool isCallValid, TextureType targetPacked)
 {
     ParamBuffer paramBuffer;
 
@@ -826,7 +821,7 @@
     return CallCapture(gl::EntryPoint::GenerateMipmap, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetActiveAttrib(const Context *context,
+CallCapture CaptureGetActiveAttrib(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID programPacked,
                                    GLuint index,
@@ -844,32 +839,32 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetActiveAttrib_length(context, isCallValid, programPacked, index, bufSize, length, size,
+    CaptureGetActiveAttrib_length(glState, isCallValid, programPacked, index, bufSize, length, size,
                                   type, name, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture sizeParam("size", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, size, &sizeParam.value);
-    CaptureGetActiveAttrib_size(context, isCallValid, programPacked, index, bufSize, length, size,
+    CaptureGetActiveAttrib_size(glState, isCallValid, programPacked, index, bufSize, length, size,
                                 type, name, &sizeParam);
     paramBuffer.addParam(std::move(sizeParam));
 
     ParamCapture typeParam("type", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, type, &typeParam.value);
-    CaptureGetActiveAttrib_type(context, isCallValid, programPacked, index, bufSize, length, size,
+    CaptureGetActiveAttrib_type(glState, isCallValid, programPacked, index, bufSize, length, size,
                                 type, name, &typeParam);
     paramBuffer.addParam(std::move(typeParam));
 
     ParamCapture nameParam("name", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, name, &nameParam.value);
-    CaptureGetActiveAttrib_name(context, isCallValid, programPacked, index, bufSize, length, size,
+    CaptureGetActiveAttrib_name(glState, isCallValid, programPacked, index, bufSize, length, size,
                                 type, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::GetActiveAttrib, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetActiveUniform(const Context *context,
+CallCapture CaptureGetActiveUniform(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLuint index,
@@ -887,32 +882,32 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetActiveUniform_length(context, isCallValid, programPacked, index, bufSize, length,
+    CaptureGetActiveUniform_length(glState, isCallValid, programPacked, index, bufSize, length,
                                    size, type, name, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture sizeParam("size", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, size, &sizeParam.value);
-    CaptureGetActiveUniform_size(context, isCallValid, programPacked, index, bufSize, length, size,
+    CaptureGetActiveUniform_size(glState, isCallValid, programPacked, index, bufSize, length, size,
                                  type, name, &sizeParam);
     paramBuffer.addParam(std::move(sizeParam));
 
     ParamCapture typeParam("type", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, type, &typeParam.value);
-    CaptureGetActiveUniform_type(context, isCallValid, programPacked, index, bufSize, length, size,
+    CaptureGetActiveUniform_type(glState, isCallValid, programPacked, index, bufSize, length, size,
                                  type, name, &typeParam);
     paramBuffer.addParam(std::move(typeParam));
 
     ParamCapture nameParam("name", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, name, &nameParam.value);
-    CaptureGetActiveUniform_name(context, isCallValid, programPacked, index, bufSize, length, size,
+    CaptureGetActiveUniform_name(glState, isCallValid, programPacked, index, bufSize, length, size,
                                  type, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::GetActiveUniform, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetAttachedShaders(const Context *context,
+CallCapture CaptureGetAttachedShaders(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID programPacked,
                                       GLsizei maxCount,
@@ -926,20 +921,20 @@
 
     ParamCapture countParam("count", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, count, &countParam.value);
-    CaptureGetAttachedShaders_count(context, isCallValid, programPacked, maxCount, count,
+    CaptureGetAttachedShaders_count(glState, isCallValid, programPacked, maxCount, count,
                                     shadersPacked, &countParam);
     paramBuffer.addParam(std::move(countParam));
 
     ParamCapture shadersPackedParam("shadersPacked", ParamType::TShaderProgramIDPointer);
     InitParamValue(ParamType::TShaderProgramIDPointer, shadersPacked, &shadersPackedParam.value);
-    CaptureGetAttachedShaders_shadersPacked(context, isCallValid, programPacked, maxCount, count,
+    CaptureGetAttachedShaders_shadersPacked(glState, isCallValid, programPacked, maxCount, count,
                                             shadersPacked, &shadersPackedParam);
     paramBuffer.addParam(std::move(shadersPackedParam));
 
     return CallCapture(gl::EntryPoint::GetAttachedShaders, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetAttribLocation(const Context *context,
+CallCapture CaptureGetAttribLocation(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      const GLchar *name,
@@ -951,7 +946,7 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureGetAttribLocation_name(context, isCallValid, programPacked, name, &nameParam);
+    CaptureGetAttribLocation_name(glState, isCallValid, programPacked, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     ParamCapture returnValueCapture("returnValue", ParamType::TGLint);
@@ -961,7 +956,7 @@
     return CallCapture(gl::EntryPoint::GetAttribLocation, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBooleanv(const Context *context,
+CallCapture CaptureGetBooleanv(const State &glState,
                                bool isCallValid,
                                GLenum pname,
                                GLboolean *data)
@@ -972,13 +967,13 @@
 
     ParamCapture dataParam("data", ParamType::TGLbooleanPointer);
     InitParamValue(ParamType::TGLbooleanPointer, data, &dataParam.value);
-    CaptureGetBooleanv_data(context, isCallValid, pname, data, &dataParam);
+    CaptureGetBooleanv_data(glState, isCallValid, pname, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetBooleanv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBufferParameteriv(const Context *context,
+CallCapture CaptureGetBufferParameteriv(const State &glState,
                                         bool isCallValid,
                                         BufferBinding targetPacked,
                                         GLenum pname,
@@ -991,14 +986,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetBufferParameteriv_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetBufferParameteriv_params(glState, isCallValid, targetPacked, pname, params,
                                        &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetBufferParameteriv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetError(const Context *context, bool isCallValid, GLenum returnValue)
+CallCapture CaptureGetError(const State &glState, bool isCallValid, GLenum returnValue)
 {
     ParamBuffer paramBuffer;
 
@@ -1009,7 +1004,7 @@
     return CallCapture(gl::EntryPoint::GetError, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFloatv(const Context *context, bool isCallValid, GLenum pname, GLfloat *data)
+CallCapture CaptureGetFloatv(const State &glState, bool isCallValid, GLenum pname, GLfloat *data)
 {
     ParamBuffer paramBuffer;
 
@@ -1017,13 +1012,13 @@
 
     ParamCapture dataParam("data", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, data, &dataParam.value);
-    CaptureGetFloatv_data(context, isCallValid, pname, data, &dataParam);
+    CaptureGetFloatv_data(glState, isCallValid, pname, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetFloatv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFramebufferAttachmentParameteriv(const Context *context,
+CallCapture CaptureGetFramebufferAttachmentParameteriv(const State &glState,
                                                        bool isCallValid,
                                                        GLenum target,
                                                        GLenum attachment,
@@ -1040,14 +1035,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetFramebufferAttachmentParameteriv_params(context, isCallValid, target, attachment,
+    CaptureGetFramebufferAttachmentParameteriv_params(glState, isCallValid, target, attachment,
                                                       pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetFramebufferAttachmentParameteriv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetIntegerv(const Context *context, bool isCallValid, GLenum pname, GLint *data)
+CallCapture CaptureGetIntegerv(const State &glState, bool isCallValid, GLenum pname, GLint *data)
 {
     ParamBuffer paramBuffer;
 
@@ -1055,13 +1050,13 @@
 
     ParamCapture dataParam("data", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, data, &dataParam.value);
-    CaptureGetIntegerv_data(context, isCallValid, pname, data, &dataParam);
+    CaptureGetIntegerv_data(glState, isCallValid, pname, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetIntegerv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramInfoLog(const Context *context,
+CallCapture CaptureGetProgramInfoLog(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLsizei bufSize,
@@ -1075,20 +1070,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetProgramInfoLog_length(context, isCallValid, programPacked, bufSize, length, infoLog,
+    CaptureGetProgramInfoLog_length(glState, isCallValid, programPacked, bufSize, length, infoLog,
                                     &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture infoLogParam("infoLog", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, infoLog, &infoLogParam.value);
-    CaptureGetProgramInfoLog_infoLog(context, isCallValid, programPacked, bufSize, length, infoLog,
+    CaptureGetProgramInfoLog_infoLog(glState, isCallValid, programPacked, bufSize, length, infoLog,
                                      &infoLogParam);
     paramBuffer.addParam(std::move(infoLogParam));
 
     return CallCapture(gl::EntryPoint::GetProgramInfoLog, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramiv(const Context *context,
+CallCapture CaptureGetProgramiv(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID programPacked,
                                 GLenum pname,
@@ -1101,13 +1096,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetProgramiv_params(context, isCallValid, programPacked, pname, params, &paramsParam);
+    CaptureGetProgramiv_params(glState, isCallValid, programPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetProgramiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetRenderbufferParameteriv(const Context *context,
+CallCapture CaptureGetRenderbufferParameteriv(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLenum pname,
@@ -1121,14 +1116,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetRenderbufferParameteriv_params(context, isCallValid, target, pname, params,
+    CaptureGetRenderbufferParameteriv_params(glState, isCallValid, target, pname, params,
                                              &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetRenderbufferParameteriv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetShaderInfoLog(const Context *context,
+CallCapture CaptureGetShaderInfoLog(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID shaderPacked,
                                     GLsizei bufSize,
@@ -1142,20 +1137,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetShaderInfoLog_length(context, isCallValid, shaderPacked, bufSize, length, infoLog,
+    CaptureGetShaderInfoLog_length(glState, isCallValid, shaderPacked, bufSize, length, infoLog,
                                    &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture infoLogParam("infoLog", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, infoLog, &infoLogParam.value);
-    CaptureGetShaderInfoLog_infoLog(context, isCallValid, shaderPacked, bufSize, length, infoLog,
+    CaptureGetShaderInfoLog_infoLog(glState, isCallValid, shaderPacked, bufSize, length, infoLog,
                                     &infoLogParam);
     paramBuffer.addParam(std::move(infoLogParam));
 
     return CallCapture(gl::EntryPoint::GetShaderInfoLog, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetShaderPrecisionFormat(const Context *context,
+CallCapture CaptureGetShaderPrecisionFormat(const State &glState,
                                             bool isCallValid,
                                             GLenum shadertype,
                                             GLenum precisiontype,
@@ -1170,20 +1165,20 @@
 
     ParamCapture rangeParam("range", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, range, &rangeParam.value);
-    CaptureGetShaderPrecisionFormat_range(context, isCallValid, shadertype, precisiontype, range,
+    CaptureGetShaderPrecisionFormat_range(glState, isCallValid, shadertype, precisiontype, range,
                                           precision, &rangeParam);
     paramBuffer.addParam(std::move(rangeParam));
 
     ParamCapture precisionParam("precision", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, precision, &precisionParam.value);
-    CaptureGetShaderPrecisionFormat_precision(context, isCallValid, shadertype, precisiontype,
+    CaptureGetShaderPrecisionFormat_precision(glState, isCallValid, shadertype, precisiontype,
                                               range, precision, &precisionParam);
     paramBuffer.addParam(std::move(precisionParam));
 
     return CallCapture(gl::EntryPoint::GetShaderPrecisionFormat, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetShaderSource(const Context *context,
+CallCapture CaptureGetShaderSource(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID shaderPacked,
                                    GLsizei bufSize,
@@ -1197,20 +1192,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetShaderSource_length(context, isCallValid, shaderPacked, bufSize, length, source,
+    CaptureGetShaderSource_length(glState, isCallValid, shaderPacked, bufSize, length, source,
                                   &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture sourceParam("source", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, source, &sourceParam.value);
-    CaptureGetShaderSource_source(context, isCallValid, shaderPacked, bufSize, length, source,
+    CaptureGetShaderSource_source(glState, isCallValid, shaderPacked, bufSize, length, source,
                                   &sourceParam);
     paramBuffer.addParam(std::move(sourceParam));
 
     return CallCapture(gl::EntryPoint::GetShaderSource, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetShaderiv(const Context *context,
+CallCapture CaptureGetShaderiv(const State &glState,
                                bool isCallValid,
                                ShaderProgramID shaderPacked,
                                GLenum pname,
@@ -1223,13 +1218,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetShaderiv_params(context, isCallValid, shaderPacked, pname, params, &paramsParam);
+    CaptureGetShaderiv_params(glState, isCallValid, shaderPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetShaderiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetString(const Context *context,
+CallCapture CaptureGetString(const State &glState,
                              bool isCallValid,
                              GLenum name,
                              const GLubyte *returnValue)
@@ -1245,7 +1240,7 @@
     return CallCapture(gl::EntryPoint::GetString, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterfv(const Context *context,
+CallCapture CaptureGetTexParameterfv(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked,
                                      GLenum pname,
@@ -1258,14 +1253,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetTexParameterfv_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetTexParameterfv_params(glState, isCallValid, targetPacked, pname, params,
                                     &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameteriv(const Context *context,
+CallCapture CaptureGetTexParameteriv(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked,
                                      GLenum pname,
@@ -1278,14 +1273,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexParameteriv_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetTexParameteriv_params(glState, isCallValid, targetPacked, pname, params,
                                     &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameteriv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUniformLocation(const Context *context,
+CallCapture CaptureGetUniformLocation(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID programPacked,
                                       const GLchar *name,
@@ -1297,7 +1292,7 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureGetUniformLocation_name(context, isCallValid, programPacked, name, &nameParam);
+    CaptureGetUniformLocation_name(glState, isCallValid, programPacked, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     ParamCapture returnValueCapture("returnValue", ParamType::TGLint);
@@ -1307,7 +1302,7 @@
     return CallCapture(gl::EntryPoint::GetUniformLocation, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUniformfv(const Context *context,
+CallCapture CaptureGetUniformfv(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID programPacked,
                                 GLint location,
@@ -1320,13 +1315,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetUniformfv_params(context, isCallValid, programPacked, location, params, &paramsParam);
+    CaptureGetUniformfv_params(glState, isCallValid, programPacked, location, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetUniformfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUniformiv(const Context *context,
+CallCapture CaptureGetUniformiv(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID programPacked,
                                 GLint location,
@@ -1339,13 +1334,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetUniformiv_params(context, isCallValid, programPacked, location, params, &paramsParam);
+    CaptureGetUniformiv_params(glState, isCallValid, programPacked, location, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetUniformiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribPointerv(const Context *context,
+CallCapture CaptureGetVertexAttribPointerv(const State &glState,
                                            bool isCallValid,
                                            GLuint index,
                                            GLenum pname,
@@ -1358,14 +1353,14 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidPointerPointer);
     InitParamValue(ParamType::TvoidPointerPointer, pointer, &pointerParam.value);
-    CaptureGetVertexAttribPointerv_pointer(context, isCallValid, index, pname, pointer,
+    CaptureGetVertexAttribPointerv_pointer(glState, isCallValid, index, pname, pointer,
                                            &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribPointerv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribfv(const Context *context,
+CallCapture CaptureGetVertexAttribfv(const State &glState,
                                      bool isCallValid,
                                      GLuint index,
                                      GLenum pname,
@@ -1378,13 +1373,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetVertexAttribfv_params(context, isCallValid, index, pname, params, &paramsParam);
+    CaptureGetVertexAttribfv_params(glState, isCallValid, index, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribiv(const Context *context,
+CallCapture CaptureGetVertexAttribiv(const State &glState,
                                      bool isCallValid,
                                      GLuint index,
                                      GLenum pname,
@@ -1397,13 +1392,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetVertexAttribiv_params(context, isCallValid, index, pname, params, &paramsParam);
+    CaptureGetVertexAttribiv_params(glState, isCallValid, index, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureHint(const Context *context, bool isCallValid, GLenum target, GLenum mode)
+CallCapture CaptureHint(const State &glState, bool isCallValid, GLenum target, GLenum mode)
 {
     ParamBuffer paramBuffer;
 
@@ -1413,7 +1408,7 @@
     return CallCapture(gl::EntryPoint::Hint, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsBuffer(const Context *context,
+CallCapture CaptureIsBuffer(const State &glState,
                             bool isCallValid,
                             BufferID bufferPacked,
                             GLboolean returnValue)
@@ -1429,7 +1424,7 @@
     return CallCapture(gl::EntryPoint::IsBuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsEnabled(const Context *context,
+CallCapture CaptureIsEnabled(const State &glState,
                              bool isCallValid,
                              GLenum cap,
                              GLboolean returnValue)
@@ -1445,7 +1440,7 @@
     return CallCapture(gl::EntryPoint::IsEnabled, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsFramebuffer(const Context *context,
+CallCapture CaptureIsFramebuffer(const State &glState,
                                  bool isCallValid,
                                  FramebufferID framebufferPacked,
                                  GLboolean returnValue)
@@ -1461,7 +1456,7 @@
     return CallCapture(gl::EntryPoint::IsFramebuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsProgram(const Context *context,
+CallCapture CaptureIsProgram(const State &glState,
                              bool isCallValid,
                              ShaderProgramID programPacked,
                              GLboolean returnValue)
@@ -1477,7 +1472,7 @@
     return CallCapture(gl::EntryPoint::IsProgram, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsRenderbuffer(const Context *context,
+CallCapture CaptureIsRenderbuffer(const State &glState,
                                   bool isCallValid,
                                   RenderbufferID renderbufferPacked,
                                   GLboolean returnValue)
@@ -1493,7 +1488,7 @@
     return CallCapture(gl::EntryPoint::IsRenderbuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsShader(const Context *context,
+CallCapture CaptureIsShader(const State &glState,
                             bool isCallValid,
                             ShaderProgramID shaderPacked,
                             GLboolean returnValue)
@@ -1509,7 +1504,7 @@
     return CallCapture(gl::EntryPoint::IsShader, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsTexture(const Context *context,
+CallCapture CaptureIsTexture(const State &glState,
                              bool isCallValid,
                              TextureID texturePacked,
                              GLboolean returnValue)
@@ -1525,7 +1520,7 @@
     return CallCapture(gl::EntryPoint::IsTexture, std::move(paramBuffer));
 }
 
-CallCapture CaptureLineWidth(const Context *context, bool isCallValid, GLfloat width)
+CallCapture CaptureLineWidth(const State &glState, bool isCallValid, GLfloat width)
 {
     ParamBuffer paramBuffer;
 
@@ -1534,7 +1529,7 @@
     return CallCapture(gl::EntryPoint::LineWidth, std::move(paramBuffer));
 }
 
-CallCapture CaptureLinkProgram(const Context *context,
+CallCapture CaptureLinkProgram(const State &glState,
                                bool isCallValid,
                                ShaderProgramID programPacked)
 {
@@ -1545,7 +1540,7 @@
     return CallCapture(gl::EntryPoint::LinkProgram, std::move(paramBuffer));
 }
 
-CallCapture CapturePixelStorei(const Context *context, bool isCallValid, GLenum pname, GLint param)
+CallCapture CapturePixelStorei(const State &glState, bool isCallValid, GLenum pname, GLint param)
 {
     ParamBuffer paramBuffer;
 
@@ -1555,7 +1550,7 @@
     return CallCapture(gl::EntryPoint::PixelStorei, std::move(paramBuffer));
 }
 
-CallCapture CapturePolygonOffset(const Context *context,
+CallCapture CapturePolygonOffset(const State &glState,
                                  bool isCallValid,
                                  GLfloat factor,
                                  GLfloat units)
@@ -1568,7 +1563,7 @@
     return CallCapture(gl::EntryPoint::PolygonOffset, std::move(paramBuffer));
 }
 
-CallCapture CaptureReadPixels(const Context *context,
+CallCapture CaptureReadPixels(const State &glState,
                               bool isCallValid,
                               GLint x,
                               GLint y,
@@ -1589,21 +1584,21 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
     InitParamValue(ParamType::TvoidPointer, pixels, &pixelsParam.value);
-    CaptureReadPixels_pixels(context, isCallValid, x, y, width, height, format, type, pixels,
+    CaptureReadPixels_pixels(glState, isCallValid, x, y, width, height, format, type, pixels,
                              &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
 
     return CallCapture(gl::EntryPoint::ReadPixels, std::move(paramBuffer));
 }
 
-CallCapture CaptureReleaseShaderCompiler(const Context *context, bool isCallValid)
+CallCapture CaptureReleaseShaderCompiler(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::ReleaseShaderCompiler, std::move(paramBuffer));
 }
 
-CallCapture CaptureRenderbufferStorage(const Context *context,
+CallCapture CaptureRenderbufferStorage(const State &glState,
                                        bool isCallValid,
                                        GLenum target,
                                        GLenum internalformat,
@@ -1621,7 +1616,7 @@
     return CallCapture(gl::EntryPoint::RenderbufferStorage, std::move(paramBuffer));
 }
 
-CallCapture CaptureSampleCoverage(const Context *context,
+CallCapture CaptureSampleCoverage(const State &glState,
                                   bool isCallValid,
                                   GLfloat value,
                                   GLboolean invert)
@@ -1634,7 +1629,7 @@
     return CallCapture(gl::EntryPoint::SampleCoverage, std::move(paramBuffer));
 }
 
-CallCapture CaptureScissor(const Context *context,
+CallCapture CaptureScissor(const State &glState,
                            bool isCallValid,
                            GLint x,
                            GLint y,
@@ -1651,7 +1646,7 @@
     return CallCapture(gl::EntryPoint::Scissor, std::move(paramBuffer));
 }
 
-CallCapture CaptureShaderBinary(const Context *context,
+CallCapture CaptureShaderBinary(const State &glState,
                                 bool isCallValid,
                                 GLsizei count,
                                 const ShaderProgramID *shadersPacked,
@@ -1666,7 +1661,7 @@
     ParamCapture shadersPackedParam("shadersPacked", ParamType::TShaderProgramIDConstPointer);
     InitParamValue(ParamType::TShaderProgramIDConstPointer, shadersPacked,
                    &shadersPackedParam.value);
-    CaptureShaderBinary_shadersPacked(context, isCallValid, count, shadersPacked, binaryformat,
+    CaptureShaderBinary_shadersPacked(glState, isCallValid, count, shadersPacked, binaryformat,
                                       binary, length, &shadersPackedParam);
     paramBuffer.addParam(std::move(shadersPackedParam));
 
@@ -1675,7 +1670,7 @@
 
     ParamCapture binaryParam("binary", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, binary, &binaryParam.value);
-    CaptureShaderBinary_binary(context, isCallValid, count, shadersPacked, binaryformat, binary,
+    CaptureShaderBinary_binary(glState, isCallValid, count, shadersPacked, binaryformat, binary,
                                length, &binaryParam);
     paramBuffer.addParam(std::move(binaryParam));
 
@@ -1684,7 +1679,7 @@
     return CallCapture(gl::EntryPoint::ShaderBinary, std::move(paramBuffer));
 }
 
-CallCapture CaptureShaderSource(const Context *context,
+CallCapture CaptureShaderSource(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID shaderPacked,
                                 GLsizei count,
@@ -1698,20 +1693,20 @@
 
     ParamCapture stringParam("string", ParamType::TGLcharConstPointerPointer);
     InitParamValue(ParamType::TGLcharConstPointerPointer, string, &stringParam.value);
-    CaptureShaderSource_string(context, isCallValid, shaderPacked, count, string, length,
+    CaptureShaderSource_string(glState, isCallValid, shaderPacked, count, string, length,
                                &stringParam);
     paramBuffer.addParam(std::move(stringParam));
 
     ParamCapture lengthParam("length", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, length, &lengthParam.value);
-    CaptureShaderSource_length(context, isCallValid, shaderPacked, count, string, length,
+    CaptureShaderSource_length(glState, isCallValid, shaderPacked, count, string, length,
                                &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     return CallCapture(gl::EntryPoint::ShaderSource, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilFunc(const Context *context,
+CallCapture CaptureStencilFunc(const State &glState,
                                bool isCallValid,
                                GLenum func,
                                GLint ref,
@@ -1726,7 +1721,7 @@
     return CallCapture(gl::EntryPoint::StencilFunc, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilFuncSeparate(const Context *context,
+CallCapture CaptureStencilFuncSeparate(const State &glState,
                                        bool isCallValid,
                                        GLenum face,
                                        GLenum func,
@@ -1743,7 +1738,7 @@
     return CallCapture(gl::EntryPoint::StencilFuncSeparate, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilMask(const Context *context, bool isCallValid, GLuint mask)
+CallCapture CaptureStencilMask(const State &glState, bool isCallValid, GLuint mask)
 {
     ParamBuffer paramBuffer;
 
@@ -1752,7 +1747,7 @@
     return CallCapture(gl::EntryPoint::StencilMask, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilMaskSeparate(const Context *context,
+CallCapture CaptureStencilMaskSeparate(const State &glState,
                                        bool isCallValid,
                                        GLenum face,
                                        GLuint mask)
@@ -1765,7 +1760,7 @@
     return CallCapture(gl::EntryPoint::StencilMaskSeparate, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilOp(const Context *context,
+CallCapture CaptureStencilOp(const State &glState,
                              bool isCallValid,
                              GLenum fail,
                              GLenum zfail,
@@ -1780,7 +1775,7 @@
     return CallCapture(gl::EntryPoint::StencilOp, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilOpSeparate(const Context *context,
+CallCapture CaptureStencilOpSeparate(const State &glState,
                                      bool isCallValid,
                                      GLenum face,
                                      GLenum sfail,
@@ -1797,7 +1792,7 @@
     return CallCapture(gl::EntryPoint::StencilOpSeparate, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexImage2D(const Context *context,
+CallCapture CaptureTexImage2D(const State &glState,
                               bool isCallValid,
                               TextureTarget targetPacked,
                               GLint level,
@@ -1822,14 +1817,14 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexImage2D_pixels(context, isCallValid, targetPacked, level, internalformat, width,
+    CaptureTexImage2D_pixels(glState, isCallValid, targetPacked, level, internalformat, width,
                              height, border, format, type, pixels, &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
 
     return CallCapture(gl::EntryPoint::TexImage2D, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterf(const Context *context,
+CallCapture CaptureTexParameterf(const State &glState,
                                  bool isCallValid,
                                  TextureType targetPacked,
                                  GLenum pname,
@@ -1844,7 +1839,7 @@
     return CallCapture(gl::EntryPoint::TexParameterf, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterfv(const Context *context,
+CallCapture CaptureTexParameterfv(const State &glState,
                                   bool isCallValid,
                                   TextureType targetPacked,
                                   GLenum pname,
@@ -1857,13 +1852,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
-    CaptureTexParameterfv_params(context, isCallValid, targetPacked, pname, params, &paramsParam);
+    CaptureTexParameterfv_params(glState, isCallValid, targetPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameteri(const Context *context,
+CallCapture CaptureTexParameteri(const State &glState,
                                  bool isCallValid,
                                  TextureType targetPacked,
                                  GLenum pname,
@@ -1878,7 +1873,7 @@
     return CallCapture(gl::EntryPoint::TexParameteri, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameteriv(const Context *context,
+CallCapture CaptureTexParameteriv(const State &glState,
                                   bool isCallValid,
                                   TextureType targetPacked,
                                   GLenum pname,
@@ -1891,13 +1886,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
-    CaptureTexParameteriv_params(context, isCallValid, targetPacked, pname, params, &paramsParam);
+    CaptureTexParameteriv_params(glState, isCallValid, targetPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameteriv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexSubImage2D(const Context *context,
+CallCapture CaptureTexSubImage2D(const State &glState,
                                  bool isCallValid,
                                  TextureTarget targetPacked,
                                  GLint level,
@@ -1922,14 +1917,14 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexSubImage2D_pixels(context, isCallValid, targetPacked, level, xoffset, yoffset, width,
+    CaptureTexSubImage2D_pixels(glState, isCallValid, targetPacked, level, xoffset, yoffset, width,
                                 height, format, type, pixels, &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
 
     return CallCapture(gl::EntryPoint::TexSubImage2D, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform1f(const Context *context, bool isCallValid, GLint location, GLfloat v0)
+CallCapture CaptureUniform1f(const State &glState, bool isCallValid, GLint location, GLfloat v0)
 {
     ParamBuffer paramBuffer;
 
@@ -1939,7 +1934,7 @@
     return CallCapture(gl::EntryPoint::Uniform1f, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform1fv(const Context *context,
+CallCapture CaptureUniform1fv(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -1952,13 +1947,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniform1fv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform1fv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform1fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform1i(const Context *context, bool isCallValid, GLint location, GLint v0)
+CallCapture CaptureUniform1i(const State &glState, bool isCallValid, GLint location, GLint v0)
 {
     ParamBuffer paramBuffer;
 
@@ -1968,7 +1963,7 @@
     return CallCapture(gl::EntryPoint::Uniform1i, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform1iv(const Context *context,
+CallCapture CaptureUniform1iv(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -1981,13 +1976,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
-    CaptureUniform1iv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform1iv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform1iv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform2f(const Context *context,
+CallCapture CaptureUniform2f(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLfloat v0,
@@ -2002,7 +1997,7 @@
     return CallCapture(gl::EntryPoint::Uniform2f, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform2fv(const Context *context,
+CallCapture CaptureUniform2fv(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -2015,13 +2010,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniform2fv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform2fv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform2fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform2i(const Context *context,
+CallCapture CaptureUniform2i(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLint v0,
@@ -2036,7 +2031,7 @@
     return CallCapture(gl::EntryPoint::Uniform2i, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform2iv(const Context *context,
+CallCapture CaptureUniform2iv(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -2049,13 +2044,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
-    CaptureUniform2iv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform2iv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform2iv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform3f(const Context *context,
+CallCapture CaptureUniform3f(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLfloat v0,
@@ -2072,7 +2067,7 @@
     return CallCapture(gl::EntryPoint::Uniform3f, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform3fv(const Context *context,
+CallCapture CaptureUniform3fv(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -2085,13 +2080,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniform3fv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform3fv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform3fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform3i(const Context *context,
+CallCapture CaptureUniform3i(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLint v0,
@@ -2108,7 +2103,7 @@
     return CallCapture(gl::EntryPoint::Uniform3i, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform3iv(const Context *context,
+CallCapture CaptureUniform3iv(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -2121,13 +2116,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
-    CaptureUniform3iv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform3iv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform3iv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform4f(const Context *context,
+CallCapture CaptureUniform4f(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLfloat v0,
@@ -2146,7 +2141,7 @@
     return CallCapture(gl::EntryPoint::Uniform4f, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform4fv(const Context *context,
+CallCapture CaptureUniform4fv(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -2159,13 +2154,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniform4fv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform4fv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform4fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform4i(const Context *context,
+CallCapture CaptureUniform4i(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLint v0,
@@ -2184,7 +2179,7 @@
     return CallCapture(gl::EntryPoint::Uniform4i, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform4iv(const Context *context,
+CallCapture CaptureUniform4iv(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -2197,13 +2192,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
-    CaptureUniform4iv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform4iv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform4iv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformMatrix2fv(const Context *context,
+CallCapture CaptureUniformMatrix2fv(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLsizei count,
@@ -2218,14 +2213,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniformMatrix2fv_value(context, isCallValid, location, count, transpose, value,
+    CaptureUniformMatrix2fv_value(glState, isCallValid, location, count, transpose, value,
                                   &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::UniformMatrix2fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformMatrix3fv(const Context *context,
+CallCapture CaptureUniformMatrix3fv(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLsizei count,
@@ -2240,14 +2235,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniformMatrix3fv_value(context, isCallValid, location, count, transpose, value,
+    CaptureUniformMatrix3fv_value(glState, isCallValid, location, count, transpose, value,
                                   &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::UniformMatrix3fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformMatrix4fv(const Context *context,
+CallCapture CaptureUniformMatrix4fv(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLsizei count,
@@ -2262,16 +2257,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniformMatrix4fv_value(context, isCallValid, location, count, transpose, value,
+    CaptureUniformMatrix4fv_value(glState, isCallValid, location, count, transpose, value,
                                   &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::UniformMatrix4fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUseProgram(const Context *context,
-                              bool isCallValid,
-                              ShaderProgramID programPacked)
+CallCapture CaptureUseProgram(const State &glState, bool isCallValid, ShaderProgramID programPacked)
 {
     ParamBuffer paramBuffer;
 
@@ -2280,7 +2273,7 @@
     return CallCapture(gl::EntryPoint::UseProgram, std::move(paramBuffer));
 }
 
-CallCapture CaptureValidateProgram(const Context *context,
+CallCapture CaptureValidateProgram(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID programPacked)
 {
@@ -2291,7 +2284,7 @@
     return CallCapture(gl::EntryPoint::ValidateProgram, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttrib1f(const Context *context, bool isCallValid, GLuint index, GLfloat x)
+CallCapture CaptureVertexAttrib1f(const State &glState, bool isCallValid, GLuint index, GLfloat x)
 {
     ParamBuffer paramBuffer;
 
@@ -2301,7 +2294,7 @@
     return CallCapture(gl::EntryPoint::VertexAttrib1f, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttrib1fv(const Context *context,
+CallCapture CaptureVertexAttrib1fv(const State &glState,
                                    bool isCallValid,
                                    GLuint index,
                                    const GLfloat *v)
@@ -2312,13 +2305,13 @@
 
     ParamCapture vParam("v", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, v, &vParam.value);
-    CaptureVertexAttrib1fv_v(context, isCallValid, index, v, &vParam);
+    CaptureVertexAttrib1fv_v(glState, isCallValid, index, v, &vParam);
     paramBuffer.addParam(std::move(vParam));
 
     return CallCapture(gl::EntryPoint::VertexAttrib1fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttrib2f(const Context *context,
+CallCapture CaptureVertexAttrib2f(const State &glState,
                                   bool isCallValid,
                                   GLuint index,
                                   GLfloat x,
@@ -2333,7 +2326,7 @@
     return CallCapture(gl::EntryPoint::VertexAttrib2f, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttrib2fv(const Context *context,
+CallCapture CaptureVertexAttrib2fv(const State &glState,
                                    bool isCallValid,
                                    GLuint index,
                                    const GLfloat *v)
@@ -2344,13 +2337,13 @@
 
     ParamCapture vParam("v", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, v, &vParam.value);
-    CaptureVertexAttrib2fv_v(context, isCallValid, index, v, &vParam);
+    CaptureVertexAttrib2fv_v(glState, isCallValid, index, v, &vParam);
     paramBuffer.addParam(std::move(vParam));
 
     return CallCapture(gl::EntryPoint::VertexAttrib2fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttrib3f(const Context *context,
+CallCapture CaptureVertexAttrib3f(const State &glState,
                                   bool isCallValid,
                                   GLuint index,
                                   GLfloat x,
@@ -2367,7 +2360,7 @@
     return CallCapture(gl::EntryPoint::VertexAttrib3f, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttrib3fv(const Context *context,
+CallCapture CaptureVertexAttrib3fv(const State &glState,
                                    bool isCallValid,
                                    GLuint index,
                                    const GLfloat *v)
@@ -2378,13 +2371,13 @@
 
     ParamCapture vParam("v", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, v, &vParam.value);
-    CaptureVertexAttrib3fv_v(context, isCallValid, index, v, &vParam);
+    CaptureVertexAttrib3fv_v(glState, isCallValid, index, v, &vParam);
     paramBuffer.addParam(std::move(vParam));
 
     return CallCapture(gl::EntryPoint::VertexAttrib3fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttrib4f(const Context *context,
+CallCapture CaptureVertexAttrib4f(const State &glState,
                                   bool isCallValid,
                                   GLuint index,
                                   GLfloat x,
@@ -2403,7 +2396,7 @@
     return CallCapture(gl::EntryPoint::VertexAttrib4f, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttrib4fv(const Context *context,
+CallCapture CaptureVertexAttrib4fv(const State &glState,
                                    bool isCallValid,
                                    GLuint index,
                                    const GLfloat *v)
@@ -2414,13 +2407,13 @@
 
     ParamCapture vParam("v", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, v, &vParam.value);
-    CaptureVertexAttrib4fv_v(context, isCallValid, index, v, &vParam);
+    CaptureVertexAttrib4fv_v(glState, isCallValid, index, v, &vParam);
     paramBuffer.addParam(std::move(vParam));
 
     return CallCapture(gl::EntryPoint::VertexAttrib4fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribPointer(const Context *context,
+CallCapture CaptureVertexAttribPointer(const State &glState,
                                        bool isCallValid,
                                        GLuint index,
                                        GLint size,
@@ -2439,14 +2432,14 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
-    CaptureVertexAttribPointer_pointer(context, isCallValid, index, size, typePacked, normalized,
+    CaptureVertexAttribPointer_pointer(glState, isCallValid, index, size, typePacked, normalized,
                                        stride, pointer, &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::VertexAttribPointer, std::move(paramBuffer));
 }
 
-CallCapture CaptureViewport(const Context *context,
+CallCapture CaptureViewport(const State &glState,
                             bool isCallValid,
                             GLint x,
                             GLint y,
diff --git a/src/libANGLE/capture_gles_2_0_autogen.h b/src/libANGLE/capture_gles_2_0_autogen.h
index b154490..0f3b88b 100644
--- a/src/libANGLE/capture_gles_2_0_autogen.h
+++ b/src/libANGLE/capture_gles_2_0_autogen.h
@@ -16,92 +16,91 @@
 
 namespace gl
 {
-class Context;
 
 // Method Captures
 
-angle::CallCapture CaptureActiveTexture(const Context *context, bool isCallValid, GLenum texture);
-angle::CallCapture CaptureAttachShader(const Context *context,
+angle::CallCapture CaptureActiveTexture(const State &glState, bool isCallValid, GLenum texture);
+angle::CallCapture CaptureAttachShader(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        ShaderProgramID shaderPacked);
-angle::CallCapture CaptureBindAttribLocation(const Context *context,
+angle::CallCapture CaptureBindAttribLocation(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLuint index,
                                              const GLchar *name);
-angle::CallCapture CaptureBindBuffer(const Context *context,
+angle::CallCapture CaptureBindBuffer(const State &glState,
                                      bool isCallValid,
                                      BufferBinding targetPacked,
                                      BufferID bufferPacked);
-angle::CallCapture CaptureBindFramebuffer(const Context *context,
+angle::CallCapture CaptureBindFramebuffer(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           FramebufferID framebufferPacked);
-angle::CallCapture CaptureBindRenderbuffer(const Context *context,
+angle::CallCapture CaptureBindRenderbuffer(const State &glState,
                                            bool isCallValid,
                                            GLenum target,
                                            RenderbufferID renderbufferPacked);
-angle::CallCapture CaptureBindTexture(const Context *context,
+angle::CallCapture CaptureBindTexture(const State &glState,
                                       bool isCallValid,
                                       TextureType targetPacked,
                                       TextureID texturePacked);
-angle::CallCapture CaptureBlendColor(const Context *context,
+angle::CallCapture CaptureBlendColor(const State &glState,
                                      bool isCallValid,
                                      GLfloat red,
                                      GLfloat green,
                                      GLfloat blue,
                                      GLfloat alpha);
-angle::CallCapture CaptureBlendEquation(const Context *context, bool isCallValid, GLenum mode);
-angle::CallCapture CaptureBlendEquationSeparate(const Context *context,
+angle::CallCapture CaptureBlendEquation(const State &glState, bool isCallValid, GLenum mode);
+angle::CallCapture CaptureBlendEquationSeparate(const State &glState,
                                                 bool isCallValid,
                                                 GLenum modeRGB,
                                                 GLenum modeAlpha);
-angle::CallCapture CaptureBlendFunc(const Context *context,
+angle::CallCapture CaptureBlendFunc(const State &glState,
                                     bool isCallValid,
                                     GLenum sfactor,
                                     GLenum dfactor);
-angle::CallCapture CaptureBlendFuncSeparate(const Context *context,
+angle::CallCapture CaptureBlendFuncSeparate(const State &glState,
                                             bool isCallValid,
                                             GLenum sfactorRGB,
                                             GLenum dfactorRGB,
                                             GLenum sfactorAlpha,
                                             GLenum dfactorAlpha);
-angle::CallCapture CaptureBufferData(const Context *context,
+angle::CallCapture CaptureBufferData(const State &glState,
                                      bool isCallValid,
                                      BufferBinding targetPacked,
                                      GLsizeiptr size,
                                      const void *data,
                                      BufferUsage usagePacked);
-angle::CallCapture CaptureBufferSubData(const Context *context,
+angle::CallCapture CaptureBufferSubData(const State &glState,
                                         bool isCallValid,
                                         BufferBinding targetPacked,
                                         GLintptr offset,
                                         GLsizeiptr size,
                                         const void *data);
-angle::CallCapture CaptureCheckFramebufferStatus(const Context *context,
+angle::CallCapture CaptureCheckFramebufferStatus(const State &glState,
                                                  bool isCallValid,
                                                  GLenum target,
                                                  GLenum returnValue);
-angle::CallCapture CaptureClear(const Context *context, bool isCallValid, GLbitfield mask);
-angle::CallCapture CaptureClearColor(const Context *context,
+angle::CallCapture CaptureClear(const State &glState, bool isCallValid, GLbitfield mask);
+angle::CallCapture CaptureClearColor(const State &glState,
                                      bool isCallValid,
                                      GLfloat red,
                                      GLfloat green,
                                      GLfloat blue,
                                      GLfloat alpha);
-angle::CallCapture CaptureClearDepthf(const Context *context, bool isCallValid, GLfloat d);
-angle::CallCapture CaptureClearStencil(const Context *context, bool isCallValid, GLint s);
-angle::CallCapture CaptureColorMask(const Context *context,
+angle::CallCapture CaptureClearDepthf(const State &glState, bool isCallValid, GLfloat d);
+angle::CallCapture CaptureClearStencil(const State &glState, bool isCallValid, GLint s);
+angle::CallCapture CaptureColorMask(const State &glState,
                                     bool isCallValid,
                                     GLboolean red,
                                     GLboolean green,
                                     GLboolean blue,
                                     GLboolean alpha);
-angle::CallCapture CaptureCompileShader(const Context *context,
+angle::CallCapture CaptureCompileShader(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID shaderPacked);
-angle::CallCapture CaptureCompressedTexImage2D(const Context *context,
+angle::CallCapture CaptureCompressedTexImage2D(const State &glState,
                                                bool isCallValid,
                                                TextureTarget targetPacked,
                                                GLint level,
@@ -111,7 +110,7 @@
                                                GLint border,
                                                GLsizei imageSize,
                                                const void *data);
-angle::CallCapture CaptureCompressedTexSubImage2D(const Context *context,
+angle::CallCapture CaptureCompressedTexSubImage2D(const State &glState,
                                                   bool isCallValid,
                                                   TextureTarget targetPacked,
                                                   GLint level,
@@ -122,7 +121,7 @@
                                                   GLenum format,
                                                   GLsizei imageSize,
                                                   const void *data);
-angle::CallCapture CaptureCopyTexImage2D(const Context *context,
+angle::CallCapture CaptureCopyTexImage2D(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -132,7 +131,7 @@
                                          GLsizei width,
                                          GLsizei height,
                                          GLint border);
-angle::CallCapture CaptureCopyTexSubImage2D(const Context *context,
+angle::CallCapture CaptureCopyTexSubImage2D(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -142,103 +141,96 @@
                                             GLint y,
                                             GLsizei width,
                                             GLsizei height);
-angle::CallCapture CaptureCreateProgram(const Context *context,
-                                        bool isCallValid,
-                                        GLuint returnValue);
-angle::CallCapture CaptureCreateShader(const Context *context,
+angle::CallCapture CaptureCreateProgram(const State &glState, bool isCallValid, GLuint returnValue);
+angle::CallCapture CaptureCreateShader(const State &glState,
                                        bool isCallValid,
                                        ShaderType typePacked,
                                        GLuint returnValue);
-angle::CallCapture CaptureCullFace(const Context *context,
-                                   bool isCallValid,
-                                   CullFaceMode modePacked);
-angle::CallCapture CaptureDeleteBuffers(const Context *context,
+angle::CallCapture CaptureCullFace(const State &glState, bool isCallValid, CullFaceMode modePacked);
+angle::CallCapture CaptureDeleteBuffers(const State &glState,
                                         bool isCallValid,
                                         GLsizei n,
                                         const BufferID *buffersPacked);
-angle::CallCapture CaptureDeleteFramebuffers(const Context *context,
+angle::CallCapture CaptureDeleteFramebuffers(const State &glState,
                                              bool isCallValid,
                                              GLsizei n,
                                              const FramebufferID *framebuffersPacked);
-angle::CallCapture CaptureDeleteProgram(const Context *context,
+angle::CallCapture CaptureDeleteProgram(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked);
-angle::CallCapture CaptureDeleteRenderbuffers(const Context *context,
+angle::CallCapture CaptureDeleteRenderbuffers(const State &glState,
                                               bool isCallValid,
                                               GLsizei n,
                                               const RenderbufferID *renderbuffersPacked);
-angle::CallCapture CaptureDeleteShader(const Context *context,
+angle::CallCapture CaptureDeleteShader(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID shaderPacked);
-angle::CallCapture CaptureDeleteTextures(const Context *context,
+angle::CallCapture CaptureDeleteTextures(const State &glState,
                                          bool isCallValid,
                                          GLsizei n,
                                          const TextureID *texturesPacked);
-angle::CallCapture CaptureDepthFunc(const Context *context, bool isCallValid, GLenum func);
-angle::CallCapture CaptureDepthMask(const Context *context, bool isCallValid, GLboolean flag);
-angle::CallCapture CaptureDepthRangef(const Context *context,
-                                      bool isCallValid,
-                                      GLfloat n,
-                                      GLfloat f);
-angle::CallCapture CaptureDetachShader(const Context *context,
+angle::CallCapture CaptureDepthFunc(const State &glState, bool isCallValid, GLenum func);
+angle::CallCapture CaptureDepthMask(const State &glState, bool isCallValid, GLboolean flag);
+angle::CallCapture CaptureDepthRangef(const State &glState, bool isCallValid, GLfloat n, GLfloat f);
+angle::CallCapture CaptureDetachShader(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        ShaderProgramID shaderPacked);
-angle::CallCapture CaptureDisable(const Context *context, bool isCallValid, GLenum cap);
-angle::CallCapture CaptureDisableVertexAttribArray(const Context *context,
+angle::CallCapture CaptureDisable(const State &glState, bool isCallValid, GLenum cap);
+angle::CallCapture CaptureDisableVertexAttribArray(const State &glState,
                                                    bool isCallValid,
                                                    GLuint index);
-angle::CallCapture CaptureDrawArrays(const Context *context,
+angle::CallCapture CaptureDrawArrays(const State &glState,
                                      bool isCallValid,
                                      PrimitiveMode modePacked,
                                      GLint first,
                                      GLsizei count);
-angle::CallCapture CaptureDrawElements(const Context *context,
+angle::CallCapture CaptureDrawElements(const State &glState,
                                        bool isCallValid,
                                        PrimitiveMode modePacked,
                                        GLsizei count,
                                        DrawElementsType typePacked,
                                        const void *indices);
-angle::CallCapture CaptureEnable(const Context *context, bool isCallValid, GLenum cap);
-angle::CallCapture CaptureEnableVertexAttribArray(const Context *context,
+angle::CallCapture CaptureEnable(const State &glState, bool isCallValid, GLenum cap);
+angle::CallCapture CaptureEnableVertexAttribArray(const State &glState,
                                                   bool isCallValid,
                                                   GLuint index);
-angle::CallCapture CaptureFinish(const Context *context, bool isCallValid);
-angle::CallCapture CaptureFlush(const Context *context, bool isCallValid);
-angle::CallCapture CaptureFramebufferRenderbuffer(const Context *context,
+angle::CallCapture CaptureFinish(const State &glState, bool isCallValid);
+angle::CallCapture CaptureFlush(const State &glState, bool isCallValid);
+angle::CallCapture CaptureFramebufferRenderbuffer(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum attachment,
                                                   GLenum renderbuffertarget,
                                                   RenderbufferID renderbufferPacked);
-angle::CallCapture CaptureFramebufferTexture2D(const Context *context,
+angle::CallCapture CaptureFramebufferTexture2D(const State &glState,
                                                bool isCallValid,
                                                GLenum target,
                                                GLenum attachment,
                                                TextureTarget textargetPacked,
                                                TextureID texturePacked,
                                                GLint level);
-angle::CallCapture CaptureFrontFace(const Context *context, bool isCallValid, GLenum mode);
-angle::CallCapture CaptureGenBuffers(const Context *context,
+angle::CallCapture CaptureFrontFace(const State &glState, bool isCallValid, GLenum mode);
+angle::CallCapture CaptureGenBuffers(const State &glState,
                                      bool isCallValid,
                                      GLsizei n,
                                      BufferID *buffersPacked);
-angle::CallCapture CaptureGenFramebuffers(const Context *context,
+angle::CallCapture CaptureGenFramebuffers(const State &glState,
                                           bool isCallValid,
                                           GLsizei n,
                                           FramebufferID *framebuffersPacked);
-angle::CallCapture CaptureGenRenderbuffers(const Context *context,
+angle::CallCapture CaptureGenRenderbuffers(const State &glState,
                                            bool isCallValid,
                                            GLsizei n,
                                            RenderbufferID *renderbuffersPacked);
-angle::CallCapture CaptureGenTextures(const Context *context,
+angle::CallCapture CaptureGenTextures(const State &glState,
                                       bool isCallValid,
                                       GLsizei n,
                                       TextureID *texturesPacked);
-angle::CallCapture CaptureGenerateMipmap(const Context *context,
+angle::CallCapture CaptureGenerateMipmap(const State &glState,
                                          bool isCallValid,
                                          TextureType targetPacked);
-angle::CallCapture CaptureGetActiveAttrib(const Context *context,
+angle::CallCapture CaptureGetActiveAttrib(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID programPacked,
                                           GLuint index,
@@ -247,7 +239,7 @@
                                           GLint *size,
                                           GLenum *type,
                                           GLchar *name);
-angle::CallCapture CaptureGetActiveUniform(const Context *context,
+angle::CallCapture CaptureGetActiveUniform(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLuint index,
@@ -256,169 +248,166 @@
                                            GLint *size,
                                            GLenum *type,
                                            GLchar *name);
-angle::CallCapture CaptureGetAttachedShaders(const Context *context,
+angle::CallCapture CaptureGetAttachedShaders(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLsizei maxCount,
                                              GLsizei *count,
                                              ShaderProgramID *shadersPacked);
-angle::CallCapture CaptureGetAttribLocation(const Context *context,
+angle::CallCapture CaptureGetAttribLocation(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             const GLchar *name,
                                             GLint returnValue);
-angle::CallCapture CaptureGetBooleanv(const Context *context,
+angle::CallCapture CaptureGetBooleanv(const State &glState,
                                       bool isCallValid,
                                       GLenum pname,
                                       GLboolean *data);
-angle::CallCapture CaptureGetBufferParameteriv(const Context *context,
+angle::CallCapture CaptureGetBufferParameteriv(const State &glState,
                                                bool isCallValid,
                                                BufferBinding targetPacked,
                                                GLenum pname,
                                                GLint *params);
-angle::CallCapture CaptureGetError(const Context *context, bool isCallValid, GLenum returnValue);
-angle::CallCapture CaptureGetFloatv(const Context *context,
+angle::CallCapture CaptureGetError(const State &glState, bool isCallValid, GLenum returnValue);
+angle::CallCapture CaptureGetFloatv(const State &glState,
                                     bool isCallValid,
                                     GLenum pname,
                                     GLfloat *data);
-angle::CallCapture CaptureGetFramebufferAttachmentParameteriv(const Context *context,
+angle::CallCapture CaptureGetFramebufferAttachmentParameteriv(const State &glState,
                                                               bool isCallValid,
                                                               GLenum target,
                                                               GLenum attachment,
                                                               GLenum pname,
                                                               GLint *params);
-angle::CallCapture CaptureGetIntegerv(const Context *context,
+angle::CallCapture CaptureGetIntegerv(const State &glState,
                                       bool isCallValid,
                                       GLenum pname,
                                       GLint *data);
-angle::CallCapture CaptureGetProgramInfoLog(const Context *context,
+angle::CallCapture CaptureGetProgramInfoLog(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLsizei bufSize,
                                             GLsizei *length,
                                             GLchar *infoLog);
-angle::CallCapture CaptureGetProgramiv(const Context *context,
+angle::CallCapture CaptureGetProgramiv(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLenum pname,
                                        GLint *params);
-angle::CallCapture CaptureGetRenderbufferParameteriv(const Context *context,
+angle::CallCapture CaptureGetRenderbufferParameteriv(const State &glState,
                                                      bool isCallValid,
                                                      GLenum target,
                                                      GLenum pname,
                                                      GLint *params);
-angle::CallCapture CaptureGetShaderInfoLog(const Context *context,
+angle::CallCapture CaptureGetShaderInfoLog(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID shaderPacked,
                                            GLsizei bufSize,
                                            GLsizei *length,
                                            GLchar *infoLog);
-angle::CallCapture CaptureGetShaderPrecisionFormat(const Context *context,
+angle::CallCapture CaptureGetShaderPrecisionFormat(const State &glState,
                                                    bool isCallValid,
                                                    GLenum shadertype,
                                                    GLenum precisiontype,
                                                    GLint *range,
                                                    GLint *precision);
-angle::CallCapture CaptureGetShaderSource(const Context *context,
+angle::CallCapture CaptureGetShaderSource(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID shaderPacked,
                                           GLsizei bufSize,
                                           GLsizei *length,
                                           GLchar *source);
-angle::CallCapture CaptureGetShaderiv(const Context *context,
+angle::CallCapture CaptureGetShaderiv(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID shaderPacked,
                                       GLenum pname,
                                       GLint *params);
-angle::CallCapture CaptureGetString(const Context *context,
+angle::CallCapture CaptureGetString(const State &glState,
                                     bool isCallValid,
                                     GLenum name,
                                     const GLubyte *returnValue);
-angle::CallCapture CaptureGetTexParameterfv(const Context *context,
+angle::CallCapture CaptureGetTexParameterfv(const State &glState,
                                             bool isCallValid,
                                             TextureType targetPacked,
                                             GLenum pname,
                                             GLfloat *params);
-angle::CallCapture CaptureGetTexParameteriv(const Context *context,
+angle::CallCapture CaptureGetTexParameteriv(const State &glState,
                                             bool isCallValid,
                                             TextureType targetPacked,
                                             GLenum pname,
                                             GLint *params);
-angle::CallCapture CaptureGetUniformLocation(const Context *context,
+angle::CallCapture CaptureGetUniformLocation(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              const GLchar *name,
                                              GLint returnValue);
-angle::CallCapture CaptureGetUniformfv(const Context *context,
+angle::CallCapture CaptureGetUniformfv(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLint location,
                                        GLfloat *params);
-angle::CallCapture CaptureGetUniformiv(const Context *context,
+angle::CallCapture CaptureGetUniformiv(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLint location,
                                        GLint *params);
-angle::CallCapture CaptureGetVertexAttribPointerv(const Context *context,
+angle::CallCapture CaptureGetVertexAttribPointerv(const State &glState,
                                                   bool isCallValid,
                                                   GLuint index,
                                                   GLenum pname,
                                                   void **pointer);
-angle::CallCapture CaptureGetVertexAttribfv(const Context *context,
+angle::CallCapture CaptureGetVertexAttribfv(const State &glState,
                                             bool isCallValid,
                                             GLuint index,
                                             GLenum pname,
                                             GLfloat *params);
-angle::CallCapture CaptureGetVertexAttribiv(const Context *context,
+angle::CallCapture CaptureGetVertexAttribiv(const State &glState,
                                             bool isCallValid,
                                             GLuint index,
                                             GLenum pname,
                                             GLint *params);
-angle::CallCapture CaptureHint(const Context *context,
-                               bool isCallValid,
-                               GLenum target,
-                               GLenum mode);
-angle::CallCapture CaptureIsBuffer(const Context *context,
+angle::CallCapture CaptureHint(const State &glState, bool isCallValid, GLenum target, GLenum mode);
+angle::CallCapture CaptureIsBuffer(const State &glState,
                                    bool isCallValid,
                                    BufferID bufferPacked,
                                    GLboolean returnValue);
-angle::CallCapture CaptureIsEnabled(const Context *context,
+angle::CallCapture CaptureIsEnabled(const State &glState,
                                     bool isCallValid,
                                     GLenum cap,
                                     GLboolean returnValue);
-angle::CallCapture CaptureIsFramebuffer(const Context *context,
+angle::CallCapture CaptureIsFramebuffer(const State &glState,
                                         bool isCallValid,
                                         FramebufferID framebufferPacked,
                                         GLboolean returnValue);
-angle::CallCapture CaptureIsProgram(const Context *context,
+angle::CallCapture CaptureIsProgram(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLboolean returnValue);
-angle::CallCapture CaptureIsRenderbuffer(const Context *context,
+angle::CallCapture CaptureIsRenderbuffer(const State &glState,
                                          bool isCallValid,
                                          RenderbufferID renderbufferPacked,
                                          GLboolean returnValue);
-angle::CallCapture CaptureIsShader(const Context *context,
+angle::CallCapture CaptureIsShader(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID shaderPacked,
                                    GLboolean returnValue);
-angle::CallCapture CaptureIsTexture(const Context *context,
+angle::CallCapture CaptureIsTexture(const State &glState,
                                     bool isCallValid,
                                     TextureID texturePacked,
                                     GLboolean returnValue);
-angle::CallCapture CaptureLineWidth(const Context *context, bool isCallValid, GLfloat width);
-angle::CallCapture CaptureLinkProgram(const Context *context,
+angle::CallCapture CaptureLineWidth(const State &glState, bool isCallValid, GLfloat width);
+angle::CallCapture CaptureLinkProgram(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID programPacked);
-angle::CallCapture CapturePixelStorei(const Context *context,
+angle::CallCapture CapturePixelStorei(const State &glState,
                                       bool isCallValid,
                                       GLenum pname,
                                       GLint param);
-angle::CallCapture CapturePolygonOffset(const Context *context,
+angle::CallCapture CapturePolygonOffset(const State &glState,
                                         bool isCallValid,
                                         GLfloat factor,
                                         GLfloat units);
-angle::CallCapture CaptureReadPixels(const Context *context,
+angle::CallCapture CaptureReadPixels(const State &glState,
                                      bool isCallValid,
                                      GLint x,
                                      GLint y,
@@ -427,64 +416,64 @@
                                      GLenum format,
                                      GLenum type,
                                      void *pixels);
-angle::CallCapture CaptureReleaseShaderCompiler(const Context *context, bool isCallValid);
-angle::CallCapture CaptureRenderbufferStorage(const Context *context,
+angle::CallCapture CaptureReleaseShaderCompiler(const State &glState, bool isCallValid);
+angle::CallCapture CaptureRenderbufferStorage(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLenum internalformat,
                                               GLsizei width,
                                               GLsizei height);
-angle::CallCapture CaptureSampleCoverage(const Context *context,
+angle::CallCapture CaptureSampleCoverage(const State &glState,
                                          bool isCallValid,
                                          GLfloat value,
                                          GLboolean invert);
-angle::CallCapture CaptureScissor(const Context *context,
+angle::CallCapture CaptureScissor(const State &glState,
                                   bool isCallValid,
                                   GLint x,
                                   GLint y,
                                   GLsizei width,
                                   GLsizei height);
-angle::CallCapture CaptureShaderBinary(const Context *context,
+angle::CallCapture CaptureShaderBinary(const State &glState,
                                        bool isCallValid,
                                        GLsizei count,
                                        const ShaderProgramID *shadersPacked,
                                        GLenum binaryformat,
                                        const void *binary,
                                        GLsizei length);
-angle::CallCapture CaptureShaderSource(const Context *context,
+angle::CallCapture CaptureShaderSource(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID shaderPacked,
                                        GLsizei count,
                                        const GLchar *const *string,
                                        const GLint *length);
-angle::CallCapture CaptureStencilFunc(const Context *context,
+angle::CallCapture CaptureStencilFunc(const State &glState,
                                       bool isCallValid,
                                       GLenum func,
                                       GLint ref,
                                       GLuint mask);
-angle::CallCapture CaptureStencilFuncSeparate(const Context *context,
+angle::CallCapture CaptureStencilFuncSeparate(const State &glState,
                                               bool isCallValid,
                                               GLenum face,
                                               GLenum func,
                                               GLint ref,
                                               GLuint mask);
-angle::CallCapture CaptureStencilMask(const Context *context, bool isCallValid, GLuint mask);
-angle::CallCapture CaptureStencilMaskSeparate(const Context *context,
+angle::CallCapture CaptureStencilMask(const State &glState, bool isCallValid, GLuint mask);
+angle::CallCapture CaptureStencilMaskSeparate(const State &glState,
                                               bool isCallValid,
                                               GLenum face,
                                               GLuint mask);
-angle::CallCapture CaptureStencilOp(const Context *context,
+angle::CallCapture CaptureStencilOp(const State &glState,
                                     bool isCallValid,
                                     GLenum fail,
                                     GLenum zfail,
                                     GLenum zpass);
-angle::CallCapture CaptureStencilOpSeparate(const Context *context,
+angle::CallCapture CaptureStencilOpSeparate(const State &glState,
                                             bool isCallValid,
                                             GLenum face,
                                             GLenum sfail,
                                             GLenum dpfail,
                                             GLenum dppass);
-angle::CallCapture CaptureTexImage2D(const Context *context,
+angle::CallCapture CaptureTexImage2D(const State &glState,
                                      bool isCallValid,
                                      TextureTarget targetPacked,
                                      GLint level,
@@ -495,27 +484,27 @@
                                      GLenum format,
                                      GLenum type,
                                      const void *pixels);
-angle::CallCapture CaptureTexParameterf(const Context *context,
+angle::CallCapture CaptureTexParameterf(const State &glState,
                                         bool isCallValid,
                                         TextureType targetPacked,
                                         GLenum pname,
                                         GLfloat param);
-angle::CallCapture CaptureTexParameterfv(const Context *context,
+angle::CallCapture CaptureTexParameterfv(const State &glState,
                                          bool isCallValid,
                                          TextureType targetPacked,
                                          GLenum pname,
                                          const GLfloat *params);
-angle::CallCapture CaptureTexParameteri(const Context *context,
+angle::CallCapture CaptureTexParameteri(const State &glState,
                                         bool isCallValid,
                                         TextureType targetPacked,
                                         GLenum pname,
                                         GLint param);
-angle::CallCapture CaptureTexParameteriv(const Context *context,
+angle::CallCapture CaptureTexParameteriv(const State &glState,
                                          bool isCallValid,
                                          TextureType targetPacked,
                                          GLenum pname,
                                          const GLint *params);
-angle::CallCapture CaptureTexSubImage2D(const Context *context,
+angle::CallCapture CaptureTexSubImage2D(const State &glState,
                                         bool isCallValid,
                                         TextureTarget targetPacked,
                                         GLint level,
@@ -526,153 +515,153 @@
                                         GLenum format,
                                         GLenum type,
                                         const void *pixels);
-angle::CallCapture CaptureUniform1f(const Context *context,
+angle::CallCapture CaptureUniform1f(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLfloat v0);
-angle::CallCapture CaptureUniform1fv(const Context *context,
+angle::CallCapture CaptureUniform1fv(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      const GLfloat *value);
-angle::CallCapture CaptureUniform1i(const Context *context,
+angle::CallCapture CaptureUniform1i(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLint v0);
-angle::CallCapture CaptureUniform1iv(const Context *context,
+angle::CallCapture CaptureUniform1iv(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      const GLint *value);
-angle::CallCapture CaptureUniform2f(const Context *context,
+angle::CallCapture CaptureUniform2f(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLfloat v0,
                                     GLfloat v1);
-angle::CallCapture CaptureUniform2fv(const Context *context,
+angle::CallCapture CaptureUniform2fv(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      const GLfloat *value);
-angle::CallCapture CaptureUniform2i(const Context *context,
+angle::CallCapture CaptureUniform2i(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLint v0,
                                     GLint v1);
-angle::CallCapture CaptureUniform2iv(const Context *context,
+angle::CallCapture CaptureUniform2iv(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      const GLint *value);
-angle::CallCapture CaptureUniform3f(const Context *context,
+angle::CallCapture CaptureUniform3f(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLfloat v0,
                                     GLfloat v1,
                                     GLfloat v2);
-angle::CallCapture CaptureUniform3fv(const Context *context,
+angle::CallCapture CaptureUniform3fv(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      const GLfloat *value);
-angle::CallCapture CaptureUniform3i(const Context *context,
+angle::CallCapture CaptureUniform3i(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLint v0,
                                     GLint v1,
                                     GLint v2);
-angle::CallCapture CaptureUniform3iv(const Context *context,
+angle::CallCapture CaptureUniform3iv(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      const GLint *value);
-angle::CallCapture CaptureUniform4f(const Context *context,
+angle::CallCapture CaptureUniform4f(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLfloat v0,
                                     GLfloat v1,
                                     GLfloat v2,
                                     GLfloat v3);
-angle::CallCapture CaptureUniform4fv(const Context *context,
+angle::CallCapture CaptureUniform4fv(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      const GLfloat *value);
-angle::CallCapture CaptureUniform4i(const Context *context,
+angle::CallCapture CaptureUniform4i(const State &glState,
                                     bool isCallValid,
                                     GLint location,
                                     GLint v0,
                                     GLint v1,
                                     GLint v2,
                                     GLint v3);
-angle::CallCapture CaptureUniform4iv(const Context *context,
+angle::CallCapture CaptureUniform4iv(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      const GLint *value);
-angle::CallCapture CaptureUniformMatrix2fv(const Context *context,
+angle::CallCapture CaptureUniformMatrix2fv(const State &glState,
                                            bool isCallValid,
                                            GLint location,
                                            GLsizei count,
                                            GLboolean transpose,
                                            const GLfloat *value);
-angle::CallCapture CaptureUniformMatrix3fv(const Context *context,
+angle::CallCapture CaptureUniformMatrix3fv(const State &glState,
                                            bool isCallValid,
                                            GLint location,
                                            GLsizei count,
                                            GLboolean transpose,
                                            const GLfloat *value);
-angle::CallCapture CaptureUniformMatrix4fv(const Context *context,
+angle::CallCapture CaptureUniformMatrix4fv(const State &glState,
                                            bool isCallValid,
                                            GLint location,
                                            GLsizei count,
                                            GLboolean transpose,
                                            const GLfloat *value);
-angle::CallCapture CaptureUseProgram(const Context *context,
+angle::CallCapture CaptureUseProgram(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked);
-angle::CallCapture CaptureValidateProgram(const Context *context,
+angle::CallCapture CaptureValidateProgram(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID programPacked);
-angle::CallCapture CaptureVertexAttrib1f(const Context *context,
+angle::CallCapture CaptureVertexAttrib1f(const State &glState,
                                          bool isCallValid,
                                          GLuint index,
                                          GLfloat x);
-angle::CallCapture CaptureVertexAttrib1fv(const Context *context,
+angle::CallCapture CaptureVertexAttrib1fv(const State &glState,
                                           bool isCallValid,
                                           GLuint index,
                                           const GLfloat *v);
-angle::CallCapture CaptureVertexAttrib2f(const Context *context,
+angle::CallCapture CaptureVertexAttrib2f(const State &glState,
                                          bool isCallValid,
                                          GLuint index,
                                          GLfloat x,
                                          GLfloat y);
-angle::CallCapture CaptureVertexAttrib2fv(const Context *context,
+angle::CallCapture CaptureVertexAttrib2fv(const State &glState,
                                           bool isCallValid,
                                           GLuint index,
                                           const GLfloat *v);
-angle::CallCapture CaptureVertexAttrib3f(const Context *context,
+angle::CallCapture CaptureVertexAttrib3f(const State &glState,
                                          bool isCallValid,
                                          GLuint index,
                                          GLfloat x,
                                          GLfloat y,
                                          GLfloat z);
-angle::CallCapture CaptureVertexAttrib3fv(const Context *context,
+angle::CallCapture CaptureVertexAttrib3fv(const State &glState,
                                           bool isCallValid,
                                           GLuint index,
                                           const GLfloat *v);
-angle::CallCapture CaptureVertexAttrib4f(const Context *context,
+angle::CallCapture CaptureVertexAttrib4f(const State &glState,
                                          bool isCallValid,
                                          GLuint index,
                                          GLfloat x,
                                          GLfloat y,
                                          GLfloat z,
                                          GLfloat w);
-angle::CallCapture CaptureVertexAttrib4fv(const Context *context,
+angle::CallCapture CaptureVertexAttrib4fv(const State &glState,
                                           bool isCallValid,
                                           GLuint index,
                                           const GLfloat *v);
-angle::CallCapture CaptureVertexAttribPointer(const Context *context,
+angle::CallCapture CaptureVertexAttribPointer(const State &glState,
                                               bool isCallValid,
                                               GLuint index,
                                               GLint size,
@@ -680,7 +669,7 @@
                                               GLboolean normalized,
                                               GLsizei stride,
                                               const void *pointer);
-angle::CallCapture CaptureViewport(const Context *context,
+angle::CallCapture CaptureViewport(const State &glState,
                                    bool isCallValid,
                                    GLint x,
                                    GLint y,
@@ -689,27 +678,27 @@
 
 // Parameter Captures
 
-void CaptureBindAttribLocation_name(const Context *context,
+void CaptureBindAttribLocation_name(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLuint index,
                                     const GLchar *name,
                                     angle::ParamCapture *paramCapture);
-void CaptureBufferData_data(const Context *context,
+void CaptureBufferData_data(const State &glState,
                             bool isCallValid,
                             BufferBinding targetPacked,
                             GLsizeiptr size,
                             const void *data,
                             BufferUsage usagePacked,
                             angle::ParamCapture *paramCapture);
-void CaptureBufferSubData_data(const Context *context,
+void CaptureBufferSubData_data(const State &glState,
                                bool isCallValid,
                                BufferBinding targetPacked,
                                GLintptr offset,
                                GLsizeiptr size,
                                const void *data,
                                angle::ParamCapture *paramCapture);
-void CaptureCompressedTexImage2D_data(const Context *context,
+void CaptureCompressedTexImage2D_data(const State &glState,
                                       bool isCallValid,
                                       TextureTarget targetPacked,
                                       GLint level,
@@ -720,7 +709,7 @@
                                       GLsizei imageSize,
                                       const void *data,
                                       angle::ParamCapture *paramCapture);
-void CaptureCompressedTexSubImage2D_data(const Context *context,
+void CaptureCompressedTexSubImage2D_data(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -732,54 +721,54 @@
                                          GLsizei imageSize,
                                          const void *data,
                                          angle::ParamCapture *paramCapture);
-void CaptureDeleteBuffers_buffersPacked(const Context *context,
+void CaptureDeleteBuffers_buffersPacked(const State &glState,
                                         bool isCallValid,
                                         GLsizei n,
                                         const BufferID *buffersPacked,
                                         angle::ParamCapture *paramCapture);
-void CaptureDeleteFramebuffers_framebuffersPacked(const Context *context,
+void CaptureDeleteFramebuffers_framebuffersPacked(const State &glState,
                                                   bool isCallValid,
                                                   GLsizei n,
                                                   const FramebufferID *framebuffersPacked,
                                                   angle::ParamCapture *paramCapture);
-void CaptureDeleteRenderbuffers_renderbuffersPacked(const Context *context,
+void CaptureDeleteRenderbuffers_renderbuffersPacked(const State &glState,
                                                     bool isCallValid,
                                                     GLsizei n,
                                                     const RenderbufferID *renderbuffersPacked,
                                                     angle::ParamCapture *paramCapture);
-void CaptureDeleteTextures_texturesPacked(const Context *context,
+void CaptureDeleteTextures_texturesPacked(const State &glState,
                                           bool isCallValid,
                                           GLsizei n,
                                           const TextureID *texturesPacked,
                                           angle::ParamCapture *paramCapture);
-void CaptureDrawElements_indices(const Context *context,
+void CaptureDrawElements_indices(const State &glState,
                                  bool isCallValid,
                                  PrimitiveMode modePacked,
                                  GLsizei count,
                                  DrawElementsType typePacked,
                                  const void *indices,
                                  angle::ParamCapture *paramCapture);
-void CaptureGenBuffers_buffersPacked(const Context *context,
+void CaptureGenBuffers_buffersPacked(const State &glState,
                                      bool isCallValid,
                                      GLsizei n,
                                      BufferID *buffersPacked,
                                      angle::ParamCapture *paramCapture);
-void CaptureGenFramebuffers_framebuffersPacked(const Context *context,
+void CaptureGenFramebuffers_framebuffersPacked(const State &glState,
                                                bool isCallValid,
                                                GLsizei n,
                                                FramebufferID *framebuffersPacked,
                                                angle::ParamCapture *paramCapture);
-void CaptureGenRenderbuffers_renderbuffersPacked(const Context *context,
+void CaptureGenRenderbuffers_renderbuffersPacked(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei n,
                                                  RenderbufferID *renderbuffersPacked,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGenTextures_texturesPacked(const Context *context,
+void CaptureGenTextures_texturesPacked(const State &glState,
                                        bool isCallValid,
                                        GLsizei n,
                                        TextureID *texturesPacked,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetActiveAttrib_length(const Context *context,
+void CaptureGetActiveAttrib_length(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID programPacked,
                                    GLuint index,
@@ -789,7 +778,7 @@
                                    GLenum *type,
                                    GLchar *name,
                                    angle::ParamCapture *paramCapture);
-void CaptureGetActiveAttrib_size(const Context *context,
+void CaptureGetActiveAttrib_size(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLuint index,
@@ -799,7 +788,7 @@
                                  GLenum *type,
                                  GLchar *name,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetActiveAttrib_type(const Context *context,
+void CaptureGetActiveAttrib_type(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLuint index,
@@ -809,7 +798,7 @@
                                  GLenum *type,
                                  GLchar *name,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetActiveAttrib_name(const Context *context,
+void CaptureGetActiveAttrib_name(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLuint index,
@@ -819,7 +808,7 @@
                                  GLenum *type,
                                  GLchar *name,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniform_length(const Context *context,
+void CaptureGetActiveUniform_length(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLuint index,
@@ -829,7 +818,7 @@
                                     GLenum *type,
                                     GLchar *name,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniform_size(const Context *context,
+void CaptureGetActiveUniform_size(const State &glState,
                                   bool isCallValid,
                                   ShaderProgramID programPacked,
                                   GLuint index,
@@ -839,7 +828,7 @@
                                   GLenum *type,
                                   GLchar *name,
                                   angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniform_type(const Context *context,
+void CaptureGetActiveUniform_type(const State &glState,
                                   bool isCallValid,
                                   ShaderProgramID programPacked,
                                   GLuint index,
@@ -849,7 +838,7 @@
                                   GLenum *type,
                                   GLchar *name,
                                   angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniform_name(const Context *context,
+void CaptureGetActiveUniform_name(const State &glState,
                                   bool isCallValid,
                                   ShaderProgramID programPacked,
                                   GLuint index,
@@ -859,175 +848,175 @@
                                   GLenum *type,
                                   GLchar *name,
                                   angle::ParamCapture *paramCapture);
-void CaptureGetAttachedShaders_count(const Context *context,
+void CaptureGetAttachedShaders_count(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLsizei maxCount,
                                      GLsizei *count,
                                      ShaderProgramID *shadersPacked,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetAttachedShaders_shadersPacked(const Context *context,
+void CaptureGetAttachedShaders_shadersPacked(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLsizei maxCount,
                                              GLsizei *count,
                                              ShaderProgramID *shadersPacked,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetAttribLocation_name(const Context *context,
+void CaptureGetAttribLocation_name(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID programPacked,
                                    const GLchar *name,
                                    angle::ParamCapture *paramCapture);
-void CaptureGetBooleanv_data(const Context *context,
+void CaptureGetBooleanv_data(const State &glState,
                              bool isCallValid,
                              GLenum pname,
                              GLboolean *data,
                              angle::ParamCapture *paramCapture);
-void CaptureGetBufferParameteriv_params(const Context *context,
+void CaptureGetBufferParameteriv_params(const State &glState,
                                         bool isCallValid,
                                         BufferBinding targetPacked,
                                         GLenum pname,
                                         GLint *params,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetFloatv_data(const Context *context,
+void CaptureGetFloatv_data(const State &glState,
                            bool isCallValid,
                            GLenum pname,
                            GLfloat *data,
                            angle::ParamCapture *paramCapture);
-void CaptureGetFramebufferAttachmentParameteriv_params(const Context *context,
+void CaptureGetFramebufferAttachmentParameteriv_params(const State &glState,
                                                        bool isCallValid,
                                                        GLenum target,
                                                        GLenum attachment,
                                                        GLenum pname,
                                                        GLint *params,
                                                        angle::ParamCapture *paramCapture);
-void CaptureGetIntegerv_data(const Context *context,
+void CaptureGetIntegerv_data(const State &glState,
                              bool isCallValid,
                              GLenum pname,
                              GLint *data,
                              angle::ParamCapture *paramCapture);
-void CaptureGetProgramInfoLog_length(const Context *context,
+void CaptureGetProgramInfoLog_length(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLsizei bufSize,
                                      GLsizei *length,
                                      GLchar *infoLog,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetProgramInfoLog_infoLog(const Context *context,
+void CaptureGetProgramInfoLog_infoLog(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID programPacked,
                                       GLsizei bufSize,
                                       GLsizei *length,
                                       GLchar *infoLog,
                                       angle::ParamCapture *paramCapture);
-void CaptureGetProgramiv_params(const Context *context,
+void CaptureGetProgramiv_params(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID programPacked,
                                 GLenum pname,
                                 GLint *params,
                                 angle::ParamCapture *paramCapture);
-void CaptureGetRenderbufferParameteriv_params(const Context *context,
+void CaptureGetRenderbufferParameteriv_params(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLenum pname,
                                               GLint *params,
                                               angle::ParamCapture *paramCapture);
-void CaptureGetShaderInfoLog_length(const Context *context,
+void CaptureGetShaderInfoLog_length(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID shaderPacked,
                                     GLsizei bufSize,
                                     GLsizei *length,
                                     GLchar *infoLog,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetShaderInfoLog_infoLog(const Context *context,
+void CaptureGetShaderInfoLog_infoLog(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID shaderPacked,
                                      GLsizei bufSize,
                                      GLsizei *length,
                                      GLchar *infoLog,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetShaderPrecisionFormat_range(const Context *context,
+void CaptureGetShaderPrecisionFormat_range(const State &glState,
                                            bool isCallValid,
                                            GLenum shadertype,
                                            GLenum precisiontype,
                                            GLint *range,
                                            GLint *precision,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetShaderPrecisionFormat_precision(const Context *context,
+void CaptureGetShaderPrecisionFormat_precision(const State &glState,
                                                bool isCallValid,
                                                GLenum shadertype,
                                                GLenum precisiontype,
                                                GLint *range,
                                                GLint *precision,
                                                angle::ParamCapture *paramCapture);
-void CaptureGetShaderSource_length(const Context *context,
+void CaptureGetShaderSource_length(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID shaderPacked,
                                    GLsizei bufSize,
                                    GLsizei *length,
                                    GLchar *source,
                                    angle::ParamCapture *paramCapture);
-void CaptureGetShaderSource_source(const Context *context,
+void CaptureGetShaderSource_source(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID shaderPacked,
                                    GLsizei bufSize,
                                    GLsizei *length,
                                    GLchar *source,
                                    angle::ParamCapture *paramCapture);
-void CaptureGetShaderiv_params(const Context *context,
+void CaptureGetShaderiv_params(const State &glState,
                                bool isCallValid,
                                ShaderProgramID shaderPacked,
                                GLenum pname,
                                GLint *params,
                                angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterfv_params(const Context *context,
+void CaptureGetTexParameterfv_params(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked,
                                      GLenum pname,
                                      GLfloat *params,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetTexParameteriv_params(const Context *context,
+void CaptureGetTexParameteriv_params(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked,
                                      GLenum pname,
                                      GLint *params,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetUniformLocation_name(const Context *context,
+void CaptureGetUniformLocation_name(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     const GLchar *name,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetUniformfv_params(const Context *context,
+void CaptureGetUniformfv_params(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID programPacked,
                                 GLint location,
                                 GLfloat *params,
                                 angle::ParamCapture *paramCapture);
-void CaptureGetUniformiv_params(const Context *context,
+void CaptureGetUniformiv_params(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID programPacked,
                                 GLint location,
                                 GLint *params,
                                 angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribPointerv_pointer(const Context *context,
+void CaptureGetVertexAttribPointerv_pointer(const State &glState,
                                             bool isCallValid,
                                             GLuint index,
                                             GLenum pname,
                                             void **pointer,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribfv_params(const Context *context,
+void CaptureGetVertexAttribfv_params(const State &glState,
                                      bool isCallValid,
                                      GLuint index,
                                      GLenum pname,
                                      GLfloat *params,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribiv_params(const Context *context,
+void CaptureGetVertexAttribiv_params(const State &glState,
                                      bool isCallValid,
                                      GLuint index,
                                      GLenum pname,
                                      GLint *params,
                                      angle::ParamCapture *paramCapture);
-void CaptureReadPixels_pixels(const Context *context,
+void CaptureReadPixels_pixels(const State &glState,
                               bool isCallValid,
                               GLint x,
                               GLint y,
@@ -1037,7 +1026,7 @@
                               GLenum type,
                               void *pixels,
                               angle::ParamCapture *paramCapture);
-void CaptureShaderBinary_shadersPacked(const Context *context,
+void CaptureShaderBinary_shadersPacked(const State &glState,
                                        bool isCallValid,
                                        GLsizei count,
                                        const ShaderProgramID *shadersPacked,
@@ -1045,7 +1034,7 @@
                                        const void *binary,
                                        GLsizei length,
                                        angle::ParamCapture *paramCapture);
-void CaptureShaderBinary_binary(const Context *context,
+void CaptureShaderBinary_binary(const State &glState,
                                 bool isCallValid,
                                 GLsizei count,
                                 const ShaderProgramID *shadersPacked,
@@ -1053,21 +1042,21 @@
                                 const void *binary,
                                 GLsizei length,
                                 angle::ParamCapture *paramCapture);
-void CaptureShaderSource_string(const Context *context,
+void CaptureShaderSource_string(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID shaderPacked,
                                 GLsizei count,
                                 const GLchar *const *string,
                                 const GLint *length,
                                 angle::ParamCapture *paramCapture);
-void CaptureShaderSource_length(const Context *context,
+void CaptureShaderSource_length(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID shaderPacked,
                                 GLsizei count,
                                 const GLchar *const *string,
                                 const GLint *length,
                                 angle::ParamCapture *paramCapture);
-void CaptureTexImage2D_pixels(const Context *context,
+void CaptureTexImage2D_pixels(const State &glState,
                               bool isCallValid,
                               TextureTarget targetPacked,
                               GLint level,
@@ -1079,19 +1068,19 @@
                               GLenum type,
                               const void *pixels,
                               angle::ParamCapture *paramCapture);
-void CaptureTexParameterfv_params(const Context *context,
+void CaptureTexParameterfv_params(const State &glState,
                                   bool isCallValid,
                                   TextureType targetPacked,
                                   GLenum pname,
                                   const GLfloat *params,
                                   angle::ParamCapture *paramCapture);
-void CaptureTexParameteriv_params(const Context *context,
+void CaptureTexParameteriv_params(const State &glState,
                                   bool isCallValid,
                                   TextureType targetPacked,
                                   GLenum pname,
                                   const GLint *params,
                                   angle::ParamCapture *paramCapture);
-void CaptureTexSubImage2D_pixels(const Context *context,
+void CaptureTexSubImage2D_pixels(const State &glState,
                                  bool isCallValid,
                                  TextureTarget targetPacked,
                                  GLint level,
@@ -1103,96 +1092,96 @@
                                  GLenum type,
                                  const void *pixels,
                                  angle::ParamCapture *paramCapture);
-void CaptureUniform1fv_value(const Context *context,
+void CaptureUniform1fv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
                              const GLfloat *value,
                              angle::ParamCapture *paramCapture);
-void CaptureUniform1iv_value(const Context *context,
+void CaptureUniform1iv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
                              const GLint *value,
                              angle::ParamCapture *paramCapture);
-void CaptureUniform2fv_value(const Context *context,
+void CaptureUniform2fv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
                              const GLfloat *value,
                              angle::ParamCapture *paramCapture);
-void CaptureUniform2iv_value(const Context *context,
+void CaptureUniform2iv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
                              const GLint *value,
                              angle::ParamCapture *paramCapture);
-void CaptureUniform3fv_value(const Context *context,
+void CaptureUniform3fv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
                              const GLfloat *value,
                              angle::ParamCapture *paramCapture);
-void CaptureUniform3iv_value(const Context *context,
+void CaptureUniform3iv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
                              const GLint *value,
                              angle::ParamCapture *paramCapture);
-void CaptureUniform4fv_value(const Context *context,
+void CaptureUniform4fv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
                              const GLfloat *value,
                              angle::ParamCapture *paramCapture);
-void CaptureUniform4iv_value(const Context *context,
+void CaptureUniform4iv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
                              const GLint *value,
                              angle::ParamCapture *paramCapture);
-void CaptureUniformMatrix2fv_value(const Context *context,
+void CaptureUniformMatrix2fv_value(const State &glState,
                                    bool isCallValid,
                                    GLint location,
                                    GLsizei count,
                                    GLboolean transpose,
                                    const GLfloat *value,
                                    angle::ParamCapture *paramCapture);
-void CaptureUniformMatrix3fv_value(const Context *context,
+void CaptureUniformMatrix3fv_value(const State &glState,
                                    bool isCallValid,
                                    GLint location,
                                    GLsizei count,
                                    GLboolean transpose,
                                    const GLfloat *value,
                                    angle::ParamCapture *paramCapture);
-void CaptureUniformMatrix4fv_value(const Context *context,
+void CaptureUniformMatrix4fv_value(const State &glState,
                                    bool isCallValid,
                                    GLint location,
                                    GLsizei count,
                                    GLboolean transpose,
                                    const GLfloat *value,
                                    angle::ParamCapture *paramCapture);
-void CaptureVertexAttrib1fv_v(const Context *context,
+void CaptureVertexAttrib1fv_v(const State &glState,
                               bool isCallValid,
                               GLuint index,
                               const GLfloat *v,
                               angle::ParamCapture *paramCapture);
-void CaptureVertexAttrib2fv_v(const Context *context,
+void CaptureVertexAttrib2fv_v(const State &glState,
                               bool isCallValid,
                               GLuint index,
                               const GLfloat *v,
                               angle::ParamCapture *paramCapture);
-void CaptureVertexAttrib3fv_v(const Context *context,
+void CaptureVertexAttrib3fv_v(const State &glState,
                               bool isCallValid,
                               GLuint index,
                               const GLfloat *v,
                               angle::ParamCapture *paramCapture);
-void CaptureVertexAttrib4fv_v(const Context *context,
+void CaptureVertexAttrib4fv_v(const State &glState,
                               bool isCallValid,
                               GLuint index,
                               const GLfloat *v,
                               angle::ParamCapture *paramCapture);
-void CaptureVertexAttribPointer_pointer(const Context *context,
+void CaptureVertexAttribPointer_pointer(const State &glState,
                                         bool isCallValid,
                                         GLuint index,
                                         GLint size,
diff --git a/src/libANGLE/capture_gles_2_0_params.cpp b/src/libANGLE/capture_gles_2_0_params.cpp
index 428cae5..f174526 100644
--- a/src/libANGLE/capture_gles_2_0_params.cpp
+++ b/src/libANGLE/capture_gles_2_0_params.cpp
@@ -18,7 +18,7 @@
 {
 // Parameter Captures
 
-void CaptureBindAttribLocation_name(const Context *context,
+void CaptureBindAttribLocation_name(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLuint index,
@@ -28,7 +28,7 @@
     CaptureString(name, paramCapture);
 }
 
-void CaptureBufferData_data(const Context *context,
+void CaptureBufferData_data(const State &glState,
                             bool isCallValid,
                             BufferBinding targetPacked,
                             GLsizeiptr size,
@@ -42,7 +42,7 @@
     }
 }
 
-void CaptureBufferSubData_data(const Context *context,
+void CaptureBufferSubData_data(const State &glState,
                                bool isCallValid,
                                BufferBinding targetPacked,
                                GLintptr offset,
@@ -53,7 +53,7 @@
     CaptureMemory(data, size, paramCapture);
 }
 
-void CaptureCompressedTexImage2D_data(const Context *context,
+void CaptureCompressedTexImage2D_data(const State &glState,
                                       bool isCallValid,
                                       TextureTarget targetPacked,
                                       GLint level,
@@ -65,7 +65,7 @@
                                       const void *data,
                                       ParamCapture *paramCapture)
 {
-    if (context->getState().getTargetBuffer(gl::BufferBinding::PixelUnpack))
+    if (glState.getTargetBuffer(gl::BufferBinding::PixelUnpack))
     {
         return;
     }
@@ -78,7 +78,7 @@
     CaptureMemory(data, imageSize, paramCapture);
 }
 
-void CaptureCompressedTexSubImage2D_data(const Context *context,
+void CaptureCompressedTexSubImage2D_data(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -94,7 +94,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDeleteBuffers_buffersPacked(const Context *context,
+void CaptureDeleteBuffers_buffersPacked(const State &glState,
                                         bool isCallValid,
                                         GLsizei n,
                                         const BufferID *buffers,
@@ -103,7 +103,7 @@
     CaptureMemory(buffers, sizeof(BufferID) * n, paramCapture);
 }
 
-void CaptureDeleteFramebuffers_framebuffersPacked(const Context *context,
+void CaptureDeleteFramebuffers_framebuffersPacked(const State &glState,
                                                   bool isCallValid,
                                                   GLsizei n,
                                                   const FramebufferID *framebuffers,
@@ -112,7 +112,7 @@
     CaptureMemory(framebuffers, sizeof(FramebufferID) * n, paramCapture);
 }
 
-void CaptureDeleteRenderbuffers_renderbuffersPacked(const Context *context,
+void CaptureDeleteRenderbuffers_renderbuffersPacked(const State &glState,
                                                     bool isCallValid,
                                                     GLsizei n,
                                                     const RenderbufferID *renderbuffers,
@@ -121,7 +121,7 @@
     CaptureMemory(renderbuffers, sizeof(RenderbufferID) * n, paramCapture);
 }
 
-void CaptureDeleteTextures_texturesPacked(const Context *context,
+void CaptureDeleteTextures_texturesPacked(const State &glState,
                                           bool isCallValid,
                                           GLsizei n,
                                           const TextureID *textures,
@@ -130,7 +130,7 @@
     CaptureMemory(textures, sizeof(TextureID) * n, paramCapture);
 }
 
-void CaptureDrawElements_indices(const Context *context,
+void CaptureDrawElements_indices(const State &glState,
                                  bool isCallValid,
                                  PrimitiveMode modePacked,
                                  GLsizei count,
@@ -138,7 +138,7 @@
                                  const void *indices,
                                  ParamCapture *paramCapture)
 {
-    if (context->getState().getVertexArray()->getElementArrayBuffer())
+    if (glState.getVertexArray()->getElementArrayBuffer())
     {
         paramCapture->value.voidConstPointerVal = indices;
     }
@@ -150,7 +150,7 @@
     }
 }
 
-void CaptureGenBuffers_buffersPacked(const Context *context,
+void CaptureGenBuffers_buffersPacked(const State &glState,
                                      bool isCallValid,
                                      GLsizei n,
                                      BufferID *buffers,
@@ -159,7 +159,7 @@
     CaptureGenHandles(n, buffers, paramCapture);
 }
 
-void CaptureGenFramebuffers_framebuffersPacked(const Context *context,
+void CaptureGenFramebuffers_framebuffersPacked(const State &glState,
                                                bool isCallValid,
                                                GLsizei n,
                                                FramebufferID *framebuffers,
@@ -168,7 +168,7 @@
     CaptureGenHandles(n, framebuffers, paramCapture);
 }
 
-void CaptureGenRenderbuffers_renderbuffersPacked(const Context *context,
+void CaptureGenRenderbuffers_renderbuffersPacked(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei n,
                                                  RenderbufferID *renderbuffers,
@@ -177,7 +177,7 @@
     CaptureGenHandles(n, renderbuffers, paramCapture);
 }
 
-void CaptureGenTextures_texturesPacked(const Context *context,
+void CaptureGenTextures_texturesPacked(const State &glState,
                                        bool isCallValid,
                                        GLsizei n,
                                        TextureID *textures,
@@ -186,7 +186,7 @@
     CaptureGenHandles(n, textures, paramCapture);
 }
 
-void CaptureGetActiveAttrib_length(const Context *context,
+void CaptureGetActiveAttrib_length(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID program,
                                    GLuint index,
@@ -200,7 +200,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveAttrib_size(const Context *context,
+void CaptureGetActiveAttrib_size(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID program,
                                  GLuint index,
@@ -214,7 +214,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveAttrib_type(const Context *context,
+void CaptureGetActiveAttrib_type(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID program,
                                  GLuint index,
@@ -228,7 +228,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveAttrib_name(const Context *context,
+void CaptureGetActiveAttrib_name(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID program,
                                  GLuint index,
@@ -242,7 +242,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniform_length(const Context *context,
+void CaptureGetActiveUniform_length(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLuint index,
@@ -256,7 +256,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniform_size(const Context *context,
+void CaptureGetActiveUniform_size(const State &glState,
                                   bool isCallValid,
                                   ShaderProgramID program,
                                   GLuint index,
@@ -270,7 +270,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniform_type(const Context *context,
+void CaptureGetActiveUniform_type(const State &glState,
                                   bool isCallValid,
                                   ShaderProgramID program,
                                   GLuint index,
@@ -284,7 +284,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniform_name(const Context *context,
+void CaptureGetActiveUniform_name(const State &glState,
                                   bool isCallValid,
                                   ShaderProgramID program,
                                   GLuint index,
@@ -298,7 +298,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetAttachedShaders_count(const Context *context,
+void CaptureGetAttachedShaders_count(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID program,
                                      GLsizei maxCount,
@@ -309,7 +309,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetAttachedShaders_shadersPacked(const Context *context,
+void CaptureGetAttachedShaders_shadersPacked(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLsizei maxCount,
@@ -320,7 +320,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetAttribLocation_name(const Context *context,
+void CaptureGetAttribLocation_name(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID program,
                                    const GLchar *name,
@@ -329,16 +329,16 @@
     CaptureString(name, paramCapture);
 }
 
-void CaptureGetBooleanv_data(const Context *context,
+void CaptureGetBooleanv_data(const State &glState,
                              bool isCallValid,
                              GLenum pname,
                              GLboolean *data,
                              ParamCapture *paramCapture)
 {
-    CaptureGetParameter(context, pname, sizeof(GLboolean), paramCapture);
+    CaptureGetParameter(glState, pname, sizeof(GLboolean), paramCapture);
 }
 
-void CaptureGetBufferParameteriv_params(const Context *context,
+void CaptureGetBufferParameteriv_params(const State &glState,
                                         bool isCallValid,
                                         BufferBinding targetPacked,
                                         GLenum pname,
@@ -348,16 +348,16 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFloatv_data(const Context *context,
+void CaptureGetFloatv_data(const State &glState,
                            bool isCallValid,
                            GLenum pname,
                            GLfloat *data,
                            ParamCapture *paramCapture)
 {
-    CaptureGetParameter(context, pname, sizeof(GLfloat), paramCapture);
+    CaptureGetParameter(glState, pname, sizeof(GLfloat), paramCapture);
 }
 
-void CaptureGetFramebufferAttachmentParameteriv_params(const Context *context,
+void CaptureGetFramebufferAttachmentParameteriv_params(const State &glState,
                                                        bool isCallValid,
                                                        GLenum target,
                                                        GLenum attachment,
@@ -369,16 +369,16 @@
     paramCapture->readBufferSizeBytes = sizeof(GLint);
 }
 
-void CaptureGetIntegerv_data(const Context *context,
+void CaptureGetIntegerv_data(const State &glState,
                              bool isCallValid,
                              GLenum pname,
                              GLint *data,
                              ParamCapture *paramCapture)
 {
-    CaptureGetParameter(context, pname, sizeof(GLint), paramCapture);
+    CaptureGetParameter(glState, pname, sizeof(GLint), paramCapture);
 }
 
-void CaptureGetProgramInfoLog_length(const Context *context,
+void CaptureGetProgramInfoLog_length(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID program,
                                      GLsizei bufSize,
@@ -389,7 +389,7 @@
     paramCapture->readBufferSizeBytes = sizeof(GLsizei);
 }
 
-void CaptureGetProgramInfoLog_infoLog(const Context *context,
+void CaptureGetProgramInfoLog_infoLog(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID program,
                                       GLsizei bufSize,
@@ -397,12 +397,12 @@
                                       GLchar *infoLog,
                                       ParamCapture *paramCapture)
 {
-    gl::Program *programObj = context->getProgramResolveLink(program);
+    gl::Program *programObj = GetLinkedProgramForCapture(glState, program);
     ASSERT(programObj);
     paramCapture->readBufferSizeBytes = programObj->getInfoLogLength() + 1;
 }
 
-void CaptureGetProgramiv_params(const Context *context,
+void CaptureGetProgramiv_params(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID program,
                                 GLenum pname,
@@ -415,7 +415,7 @@
     }
 }
 
-void CaptureGetRenderbufferParameteriv_params(const Context *context,
+void CaptureGetRenderbufferParameteriv_params(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLenum pname,
@@ -425,7 +425,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetShaderInfoLog_length(const Context *context,
+void CaptureGetShaderInfoLog_length(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID shader,
                                     GLsizei bufSize,
@@ -436,7 +436,7 @@
     paramCapture->readBufferSizeBytes = sizeof(GLsizei);
 }
 
-void CaptureGetShaderInfoLog_infoLog(const Context *context,
+void CaptureGetShaderInfoLog_infoLog(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID shader,
                                      GLsizei bufSize,
@@ -444,12 +444,12 @@
                                      GLchar *infoLog,
                                      ParamCapture *paramCapture)
 {
-    gl::Shader *shaderObj = context->getShader(shader);
-    ASSERT(shaderObj);
+    gl::Shader *shaderObj = glState.getShaderProgramManagerForCapture().getShader(shader);
+    ASSERT(shaderObj && shaderObj->isCompiled());
     paramCapture->readBufferSizeBytes = shaderObj->getInfoLogLength() + 1;
 }
 
-void CaptureGetShaderPrecisionFormat_range(const Context *context,
+void CaptureGetShaderPrecisionFormat_range(const State &glState,
                                            bool isCallValid,
                                            GLenum shadertype,
                                            GLenum precisiontype,
@@ -460,7 +460,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetShaderPrecisionFormat_precision(const Context *context,
+void CaptureGetShaderPrecisionFormat_precision(const State &glState,
                                                bool isCallValid,
                                                GLenum shadertype,
                                                GLenum precisiontype,
@@ -471,7 +471,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetShaderSource_length(const Context *context,
+void CaptureGetShaderSource_length(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID shader,
                                    GLsizei bufSize,
@@ -482,7 +482,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetShaderSource_source(const Context *context,
+void CaptureGetShaderSource_source(const State &glState,
                                    bool isCallValid,
                                    ShaderProgramID shader,
                                    GLsizei bufSize,
@@ -493,7 +493,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetShaderiv_params(const Context *context,
+void CaptureGetShaderiv_params(const State &glState,
                                bool isCallValid,
                                ShaderProgramID shader,
                                GLenum pname,
@@ -506,7 +506,7 @@
     }
 }
 
-void CaptureGetTexParameterfv_params(const Context *context,
+void CaptureGetTexParameterfv_params(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked,
                                      GLenum pname,
@@ -516,7 +516,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameteriv_params(const Context *context,
+void CaptureGetTexParameteriv_params(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked,
                                      GLenum pname,
@@ -526,7 +526,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformLocation_name(const Context *context,
+void CaptureGetUniformLocation_name(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     const GLchar *name,
@@ -535,7 +535,7 @@
     CaptureString(name, paramCapture);
 }
 
-void CaptureGetUniformfv_params(const Context *context,
+void CaptureGetUniformfv_params(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID program,
                                 GLint location,
@@ -545,7 +545,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformiv_params(const Context *context,
+void CaptureGetUniformiv_params(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID program,
                                 GLint location,
@@ -555,7 +555,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribPointerv_pointer(const Context *context,
+void CaptureGetVertexAttribPointerv_pointer(const State &glState,
                                             bool isCallValid,
                                             GLuint index,
                                             GLenum pname,
@@ -565,7 +565,7 @@
     paramCapture->readBufferSizeBytes = sizeof(void *);
 }
 
-void CaptureGetVertexAttribfv_params(const Context *context,
+void CaptureGetVertexAttribfv_params(const State &glState,
                                      bool isCallValid,
                                      GLuint index,
                                      GLenum pname,
@@ -576,7 +576,7 @@
     paramCapture->readBufferSizeBytes = sizeof(GLfloat) * 4;
 }
 
-void CaptureGetVertexAttribiv_params(const Context *context,
+void CaptureGetVertexAttribiv_params(const State &glState,
                                      bool isCallValid,
                                      GLuint index,
                                      GLenum pname,
@@ -587,7 +587,7 @@
     paramCapture->readBufferSizeBytes = sizeof(GLint) * 4;
 }
 
-void CaptureReadPixels_pixels(const Context *context,
+void CaptureReadPixels_pixels(const State &glState,
                               bool isCallValid,
                               GLint x,
                               GLint y,
@@ -603,7 +603,7 @@
     paramCapture->readBufferSizeBytes      = kMaxPixelSize * width * height;
 }
 
-void CaptureShaderBinary_shadersPacked(const Context *context,
+void CaptureShaderBinary_shadersPacked(const State &glState,
                                        bool isCallValid,
                                        GLsizei count,
                                        const ShaderProgramID *shaders,
@@ -615,7 +615,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureShaderBinary_binary(const Context *context,
+void CaptureShaderBinary_binary(const State &glState,
                                 bool isCallValid,
                                 GLsizei count,
                                 const ShaderProgramID *shaders,
@@ -627,7 +627,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureShaderSource_string(const Context *context,
+void CaptureShaderSource_string(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID shader,
                                 GLsizei count,
@@ -645,7 +645,7 @@
     }
 }
 
-void CaptureShaderSource_length(const Context *context,
+void CaptureShaderSource_length(const State &glState,
                                 bool isCallValid,
                                 ShaderProgramID shader,
                                 GLsizei count,
@@ -662,7 +662,7 @@
     }
 }
 
-void CaptureTexImage2D_pixels(const Context *context,
+void CaptureTexImage2D_pixels(const State &glState,
                               bool isCallValid,
                               TextureTarget targetPacked,
                               GLint level,
@@ -675,7 +675,7 @@
                               const void *pixels,
                               ParamCapture *paramCapture)
 {
-    if (context->getState().getTargetBuffer(gl::BufferBinding::PixelUnpack))
+    if (glState.getTargetBuffer(gl::BufferBinding::PixelUnpack))
     {
         return;
     }
@@ -686,7 +686,7 @@
     }
 
     const gl::InternalFormat &internalFormatInfo = gl::GetInternalFormatInfo(format, type);
-    const gl::PixelUnpackState &unpack           = context->getState().getUnpackState();
+    const gl::PixelUnpackState &unpack           = glState.getUnpackState();
 
     GLuint srcRowPitch = 0;
     (void)internalFormatInfo.computeRowPitch(type, width, unpack.alignment, unpack.rowLength,
@@ -702,7 +702,7 @@
     CaptureMemory(pixels, captureSize, paramCapture);
 }
 
-void CaptureTexParameterfv_params(const Context *context,
+void CaptureTexParameterfv_params(const State &glState,
                                   bool isCallValid,
                                   TextureType targetPacked,
                                   GLenum pname,
@@ -712,7 +712,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameteriv_params(const Context *context,
+void CaptureTexParameteriv_params(const State &glState,
                                   bool isCallValid,
                                   TextureType targetPacked,
                                   GLenum pname,
@@ -722,7 +722,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexSubImage2D_pixels(const Context *context,
+void CaptureTexSubImage2D_pixels(const State &glState,
                                  bool isCallValid,
                                  TextureTarget targetPacked,
                                  GLint level,
@@ -738,7 +738,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniform1fv_value(const Context *context,
+void CaptureUniform1fv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
@@ -748,7 +748,7 @@
     CaptureMemory(value, count * sizeof(GLfloat), paramCapture);
 }
 
-void CaptureUniform1iv_value(const Context *context,
+void CaptureUniform1iv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
@@ -758,7 +758,7 @@
     CaptureMemory(value, count * sizeof(GLint), paramCapture);
 }
 
-void CaptureUniform2fv_value(const Context *context,
+void CaptureUniform2fv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
@@ -768,7 +768,7 @@
     CaptureMemory(value, count * sizeof(GLfloat) * 2, paramCapture);
 }
 
-void CaptureUniform2iv_value(const Context *context,
+void CaptureUniform2iv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
@@ -778,7 +778,7 @@
     CaptureMemory(value, count * sizeof(GLint) * 2, paramCapture);
 }
 
-void CaptureUniform3fv_value(const Context *context,
+void CaptureUniform3fv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
@@ -788,7 +788,7 @@
     CaptureMemory(value, count * sizeof(GLfloat) * 3, paramCapture);
 }
 
-void CaptureUniform3iv_value(const Context *context,
+void CaptureUniform3iv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
@@ -798,7 +798,7 @@
     CaptureMemory(value, count * sizeof(GLint) * 3, paramCapture);
 }
 
-void CaptureUniform4fv_value(const Context *context,
+void CaptureUniform4fv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
@@ -808,7 +808,7 @@
     CaptureMemory(value, count * sizeof(GLfloat) * 4, paramCapture);
 }
 
-void CaptureUniform4iv_value(const Context *context,
+void CaptureUniform4iv_value(const State &glState,
                              bool isCallValid,
                              GLint location,
                              GLsizei count,
@@ -818,7 +818,7 @@
     CaptureMemory(value, count * sizeof(GLint) * 4, paramCapture);
 }
 
-void CaptureUniformMatrix2fv_value(const Context *context,
+void CaptureUniformMatrix2fv_value(const State &glState,
                                    bool isCallValid,
                                    GLint location,
                                    GLsizei count,
@@ -829,7 +829,7 @@
     CaptureMemory(value, count * sizeof(GLfloat) * 4, paramCapture);
 }
 
-void CaptureUniformMatrix3fv_value(const Context *context,
+void CaptureUniformMatrix3fv_value(const State &glState,
                                    bool isCallValid,
                                    GLint location,
                                    GLsizei count,
@@ -840,7 +840,7 @@
     CaptureMemory(value, count * sizeof(GLfloat) * 9, paramCapture);
 }
 
-void CaptureUniformMatrix4fv_value(const Context *context,
+void CaptureUniformMatrix4fv_value(const State &glState,
                                    bool isCallValid,
                                    GLint location,
                                    GLsizei count,
@@ -851,7 +851,7 @@
     CaptureMemory(value, count * sizeof(GLfloat) * 16, paramCapture);
 }
 
-void CaptureVertexAttrib1fv_v(const Context *context,
+void CaptureVertexAttrib1fv_v(const State &glState,
                               bool isCallValid,
                               GLuint index,
                               const GLfloat *v,
@@ -860,7 +860,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureVertexAttrib2fv_v(const Context *context,
+void CaptureVertexAttrib2fv_v(const State &glState,
                               bool isCallValid,
                               GLuint index,
                               const GLfloat *v,
@@ -869,7 +869,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureVertexAttrib3fv_v(const Context *context,
+void CaptureVertexAttrib3fv_v(const State &glState,
                               bool isCallValid,
                               GLuint index,
                               const GLfloat *v,
@@ -878,7 +878,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureVertexAttrib4fv_v(const Context *context,
+void CaptureVertexAttrib4fv_v(const State &glState,
                               bool isCallValid,
                               GLuint index,
                               const GLfloat *v,
@@ -887,7 +887,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureVertexAttribPointer_pointer(const Context *context,
+void CaptureVertexAttribPointer_pointer(const State &glState,
                                         bool isCallValid,
                                         GLuint index,
                                         GLint size,
@@ -898,7 +898,7 @@
                                         ParamCapture *paramCapture)
 {
     paramCapture->value.voidConstPointerVal = pointer;
-    if (!context->getState().getTargetBuffer(gl::BufferBinding::Array))
+    if (!glState.getTargetBuffer(gl::BufferBinding::Array))
     {
         paramCapture->arrayClientPointerIndex = index;
     }
diff --git a/src/libANGLE/capture_gles_3_0_autogen.cpp b/src/libANGLE/capture_gles_3_0_autogen.cpp
index 0f0187f..3bd3778 100644
--- a/src/libANGLE/capture_gles_3_0_autogen.cpp
+++ b/src/libANGLE/capture_gles_3_0_autogen.cpp
@@ -20,7 +20,7 @@
 namespace gl
 {
 
-CallCapture CaptureBeginQuery(const Context *context,
+CallCapture CaptureBeginQuery(const State &glState,
                               bool isCallValid,
                               QueryType targetPacked,
                               QueryID idPacked)
@@ -33,7 +33,7 @@
     return CallCapture(gl::EntryPoint::BeginQuery, std::move(paramBuffer));
 }
 
-CallCapture CaptureBeginTransformFeedback(const Context *context,
+CallCapture CaptureBeginTransformFeedback(const State &glState,
                                           bool isCallValid,
                                           PrimitiveMode primitiveModePacked)
 {
@@ -45,7 +45,7 @@
     return CallCapture(gl::EntryPoint::BeginTransformFeedback, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindBufferBase(const Context *context,
+CallCapture CaptureBindBufferBase(const State &glState,
                                   bool isCallValid,
                                   BufferBinding targetPacked,
                                   GLuint index,
@@ -60,7 +60,7 @@
     return CallCapture(gl::EntryPoint::BindBufferBase, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindBufferRange(const Context *context,
+CallCapture CaptureBindBufferRange(const State &glState,
                                    bool isCallValid,
                                    BufferBinding targetPacked,
                                    GLuint index,
@@ -79,7 +79,7 @@
     return CallCapture(gl::EntryPoint::BindBufferRange, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindSampler(const Context *context,
+CallCapture CaptureBindSampler(const State &glState,
                                bool isCallValid,
                                GLuint unit,
                                SamplerID samplerPacked)
@@ -92,7 +92,7 @@
     return CallCapture(gl::EntryPoint::BindSampler, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindTransformFeedback(const Context *context,
+CallCapture CaptureBindTransformFeedback(const State &glState,
                                          bool isCallValid,
                                          GLenum target,
                                          TransformFeedbackID idPacked)
@@ -106,7 +106,7 @@
     return CallCapture(gl::EntryPoint::BindTransformFeedback, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindVertexArray(const Context *context,
+CallCapture CaptureBindVertexArray(const State &glState,
                                    bool isCallValid,
                                    VertexArrayID arrayPacked)
 {
@@ -117,7 +117,7 @@
     return CallCapture(gl::EntryPoint::BindVertexArray, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlitFramebuffer(const Context *context,
+CallCapture CaptureBlitFramebuffer(const State &glState,
                                    bool isCallValid,
                                    GLint srcX0,
                                    GLint srcY0,
@@ -147,7 +147,7 @@
     return CallCapture(gl::EntryPoint::BlitFramebuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureClearBufferfi(const Context *context,
+CallCapture CaptureClearBufferfi(const State &glState,
                                  bool isCallValid,
                                  GLenum buffer,
                                  GLint drawbuffer,
@@ -164,7 +164,7 @@
     return CallCapture(gl::EntryPoint::ClearBufferfi, std::move(paramBuffer));
 }
 
-CallCapture CaptureClearBufferfv(const Context *context,
+CallCapture CaptureClearBufferfv(const State &glState,
                                  bool isCallValid,
                                  GLenum buffer,
                                  GLint drawbuffer,
@@ -177,13 +177,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureClearBufferfv_value(context, isCallValid, buffer, drawbuffer, value, &valueParam);
+    CaptureClearBufferfv_value(glState, isCallValid, buffer, drawbuffer, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ClearBufferfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureClearBufferiv(const Context *context,
+CallCapture CaptureClearBufferiv(const State &glState,
                                  bool isCallValid,
                                  GLenum buffer,
                                  GLint drawbuffer,
@@ -196,13 +196,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
-    CaptureClearBufferiv_value(context, isCallValid, buffer, drawbuffer, value, &valueParam);
+    CaptureClearBufferiv_value(glState, isCallValid, buffer, drawbuffer, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ClearBufferiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureClearBufferuiv(const Context *context,
+CallCapture CaptureClearBufferuiv(const State &glState,
                                   bool isCallValid,
                                   GLenum buffer,
                                   GLint drawbuffer,
@@ -215,13 +215,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
-    CaptureClearBufferuiv_value(context, isCallValid, buffer, drawbuffer, value, &valueParam);
+    CaptureClearBufferuiv_value(glState, isCallValid, buffer, drawbuffer, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ClearBufferuiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureClientWaitSync(const Context *context,
+CallCapture CaptureClientWaitSync(const State &glState,
                                   bool isCallValid,
                                   GLsync sync,
                                   GLbitfield flags,
@@ -241,7 +241,7 @@
     return CallCapture(gl::EntryPoint::ClientWaitSync, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexImage3D(const Context *context,
+CallCapture CaptureCompressedTexImage3D(const State &glState,
                                         bool isCallValid,
                                         TextureTarget targetPacked,
                                         GLint level,
@@ -267,14 +267,14 @@
 
     ParamCapture dataParam("data", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexImage3D_data(context, isCallValid, targetPacked, level, internalformat,
+    CaptureCompressedTexImage3D_data(glState, isCallValid, targetPacked, level, internalformat,
                                      width, height, depth, border, imageSize, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::CompressedTexImage3D, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexSubImage3D(const Context *context,
+CallCapture CaptureCompressedTexSubImage3D(const State &glState,
                                            bool isCallValid,
                                            TextureTarget targetPacked,
                                            GLint level,
@@ -303,7 +303,7 @@
 
     ParamCapture dataParam("data", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexSubImage3D_data(context, isCallValid, targetPacked, level, xoffset, yoffset,
+    CaptureCompressedTexSubImage3D_data(glState, isCallValid, targetPacked, level, xoffset, yoffset,
                                         zoffset, width, height, depth, format, imageSize, data,
                                         &dataParam);
     paramBuffer.addParam(std::move(dataParam));
@@ -311,7 +311,7 @@
     return CallCapture(gl::EntryPoint::CompressedTexSubImage3D, std::move(paramBuffer));
 }
 
-CallCapture CaptureCopyBufferSubData(const Context *context,
+CallCapture CaptureCopyBufferSubData(const State &glState,
                                      bool isCallValid,
                                      BufferBinding readTargetPacked,
                                      BufferBinding writeTargetPacked,
@@ -330,7 +330,7 @@
     return CallCapture(gl::EntryPoint::CopyBufferSubData, std::move(paramBuffer));
 }
 
-CallCapture CaptureCopyTexSubImage3D(const Context *context,
+CallCapture CaptureCopyTexSubImage3D(const State &glState,
                                      bool isCallValid,
                                      TextureTarget targetPacked,
                                      GLint level,
@@ -357,7 +357,7 @@
     return CallCapture(gl::EntryPoint::CopyTexSubImage3D, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteQueries(const Context *context,
+CallCapture CaptureDeleteQueries(const State &glState,
                                  bool isCallValid,
                                  GLsizei n,
                                  const QueryID *idsPacked)
@@ -368,13 +368,13 @@
 
     ParamCapture idsPackedParam("idsPacked", ParamType::TQueryIDConstPointer);
     InitParamValue(ParamType::TQueryIDConstPointer, idsPacked, &idsPackedParam.value);
-    CaptureDeleteQueries_idsPacked(context, isCallValid, n, idsPacked, &idsPackedParam);
+    CaptureDeleteQueries_idsPacked(glState, isCallValid, n, idsPacked, &idsPackedParam);
     paramBuffer.addParam(std::move(idsPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteQueries, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteSamplers(const Context *context,
+CallCapture CaptureDeleteSamplers(const State &glState,
                                   bool isCallValid,
                                   GLsizei count,
                                   const SamplerID *samplersPacked)
@@ -385,14 +385,14 @@
 
     ParamCapture samplersPackedParam("samplersPacked", ParamType::TSamplerIDConstPointer);
     InitParamValue(ParamType::TSamplerIDConstPointer, samplersPacked, &samplersPackedParam.value);
-    CaptureDeleteSamplers_samplersPacked(context, isCallValid, count, samplersPacked,
+    CaptureDeleteSamplers_samplersPacked(glState, isCallValid, count, samplersPacked,
                                          &samplersPackedParam);
     paramBuffer.addParam(std::move(samplersPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteSamplers, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteSync(const Context *context, bool isCallValid, GLsync sync)
+CallCapture CaptureDeleteSync(const State &glState, bool isCallValid, GLsync sync)
 {
     ParamBuffer paramBuffer;
 
@@ -401,7 +401,7 @@
     return CallCapture(gl::EntryPoint::DeleteSync, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteTransformFeedbacks(const Context *context,
+CallCapture CaptureDeleteTransformFeedbacks(const State &glState,
                                             bool isCallValid,
                                             GLsizei n,
                                             const TransformFeedbackID *idsPacked)
@@ -412,13 +412,13 @@
 
     ParamCapture idsPackedParam("idsPacked", ParamType::TTransformFeedbackIDConstPointer);
     InitParamValue(ParamType::TTransformFeedbackIDConstPointer, idsPacked, &idsPackedParam.value);
-    CaptureDeleteTransformFeedbacks_idsPacked(context, isCallValid, n, idsPacked, &idsPackedParam);
+    CaptureDeleteTransformFeedbacks_idsPacked(glState, isCallValid, n, idsPacked, &idsPackedParam);
     paramBuffer.addParam(std::move(idsPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteTransformFeedbacks, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteVertexArrays(const Context *context,
+CallCapture CaptureDeleteVertexArrays(const State &glState,
                                       bool isCallValid,
                                       GLsizei n,
                                       const VertexArrayID *arraysPacked)
@@ -429,14 +429,14 @@
 
     ParamCapture arraysPackedParam("arraysPacked", ParamType::TVertexArrayIDConstPointer);
     InitParamValue(ParamType::TVertexArrayIDConstPointer, arraysPacked, &arraysPackedParam.value);
-    CaptureDeleteVertexArrays_arraysPacked(context, isCallValid, n, arraysPacked,
+    CaptureDeleteVertexArrays_arraysPacked(glState, isCallValid, n, arraysPacked,
                                            &arraysPackedParam);
     paramBuffer.addParam(std::move(arraysPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteVertexArrays, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawArraysInstanced(const Context *context,
+CallCapture CaptureDrawArraysInstanced(const State &glState,
                                        bool isCallValid,
                                        PrimitiveMode modePacked,
                                        GLint first,
@@ -453,7 +453,7 @@
     return CallCapture(gl::EntryPoint::DrawArraysInstanced, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawBuffers(const Context *context,
+CallCapture CaptureDrawBuffers(const State &glState,
                                bool isCallValid,
                                GLsizei n,
                                const GLenum *bufs)
@@ -464,13 +464,13 @@
 
     ParamCapture bufsParam("bufs", ParamType::TGLenumConstPointer);
     InitParamValue(ParamType::TGLenumConstPointer, bufs, &bufsParam.value);
-    CaptureDrawBuffers_bufs(context, isCallValid, n, bufs, &bufsParam);
+    CaptureDrawBuffers_bufs(glState, isCallValid, n, bufs, &bufsParam);
     paramBuffer.addParam(std::move(bufsParam));
 
     return CallCapture(gl::EntryPoint::DrawBuffers, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawElementsInstanced(const Context *context,
+CallCapture CaptureDrawElementsInstanced(const State &glState,
                                          bool isCallValid,
                                          PrimitiveMode modePacked,
                                          GLsizei count,
@@ -486,7 +486,7 @@
 
     ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
-    CaptureDrawElementsInstanced_indices(context, isCallValid, modePacked, count, typePacked,
+    CaptureDrawElementsInstanced_indices(glState, isCallValid, modePacked, count, typePacked,
                                          indices, instancecount, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
@@ -495,7 +495,7 @@
     return CallCapture(gl::EntryPoint::DrawElementsInstanced, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawRangeElements(const Context *context,
+CallCapture CaptureDrawRangeElements(const State &glState,
                                      bool isCallValid,
                                      PrimitiveMode modePacked,
                                      GLuint start,
@@ -514,14 +514,14 @@
 
     ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
-    CaptureDrawRangeElements_indices(context, isCallValid, modePacked, start, end, count,
+    CaptureDrawRangeElements_indices(glState, isCallValid, modePacked, start, end, count,
                                      typePacked, indices, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
     return CallCapture(gl::EntryPoint::DrawRangeElements, std::move(paramBuffer));
 }
 
-CallCapture CaptureEndQuery(const Context *context, bool isCallValid, QueryType targetPacked)
+CallCapture CaptureEndQuery(const State &glState, bool isCallValid, QueryType targetPacked)
 {
     ParamBuffer paramBuffer;
 
@@ -530,14 +530,14 @@
     return CallCapture(gl::EntryPoint::EndQuery, std::move(paramBuffer));
 }
 
-CallCapture CaptureEndTransformFeedback(const Context *context, bool isCallValid)
+CallCapture CaptureEndTransformFeedback(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::EndTransformFeedback, std::move(paramBuffer));
 }
 
-CallCapture CaptureFenceSync(const Context *context,
+CallCapture CaptureFenceSync(const State &glState,
                              bool isCallValid,
                              GLenum condition,
                              GLbitfield flags,
@@ -556,7 +556,7 @@
     return CallCapture(gl::EntryPoint::FenceSync, std::move(paramBuffer));
 }
 
-CallCapture CaptureFlushMappedBufferRange(const Context *context,
+CallCapture CaptureFlushMappedBufferRange(const State &glState,
                                           bool isCallValid,
                                           BufferBinding targetPacked,
                                           GLintptr offset,
@@ -571,7 +571,7 @@
     return CallCapture(gl::EntryPoint::FlushMappedBufferRange, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferTextureLayer(const Context *context,
+CallCapture CaptureFramebufferTextureLayer(const State &glState,
                                            bool isCallValid,
                                            GLenum target,
                                            GLenum attachment,
@@ -591,10 +591,7 @@
     return CallCapture(gl::EntryPoint::FramebufferTextureLayer, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenQueries(const Context *context,
-                              bool isCallValid,
-                              GLsizei n,
-                              QueryID *idsPacked)
+CallCapture CaptureGenQueries(const State &glState, bool isCallValid, GLsizei n, QueryID *idsPacked)
 {
     ParamBuffer paramBuffer;
 
@@ -602,13 +599,13 @@
 
     ParamCapture idsPackedParam("idsPacked", ParamType::TQueryIDPointer);
     InitParamValue(ParamType::TQueryIDPointer, idsPacked, &idsPackedParam.value);
-    CaptureGenQueries_idsPacked(context, isCallValid, n, idsPacked, &idsPackedParam);
+    CaptureGenQueries_idsPacked(glState, isCallValid, n, idsPacked, &idsPackedParam);
     paramBuffer.addParam(std::move(idsPackedParam));
 
     return CallCapture(gl::EntryPoint::GenQueries, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenSamplers(const Context *context,
+CallCapture CaptureGenSamplers(const State &glState,
                                bool isCallValid,
                                GLsizei count,
                                SamplerID *samplersPacked)
@@ -619,14 +616,14 @@
 
     ParamCapture samplersPackedParam("samplersPacked", ParamType::TSamplerIDPointer);
     InitParamValue(ParamType::TSamplerIDPointer, samplersPacked, &samplersPackedParam.value);
-    CaptureGenSamplers_samplersPacked(context, isCallValid, count, samplersPacked,
+    CaptureGenSamplers_samplersPacked(glState, isCallValid, count, samplersPacked,
                                       &samplersPackedParam);
     paramBuffer.addParam(std::move(samplersPackedParam));
 
     return CallCapture(gl::EntryPoint::GenSamplers, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenTransformFeedbacks(const Context *context,
+CallCapture CaptureGenTransformFeedbacks(const State &glState,
                                          bool isCallValid,
                                          GLsizei n,
                                          TransformFeedbackID *idsPacked)
@@ -637,13 +634,13 @@
 
     ParamCapture idsPackedParam("idsPacked", ParamType::TTransformFeedbackIDPointer);
     InitParamValue(ParamType::TTransformFeedbackIDPointer, idsPacked, &idsPackedParam.value);
-    CaptureGenTransformFeedbacks_idsPacked(context, isCallValid, n, idsPacked, &idsPackedParam);
+    CaptureGenTransformFeedbacks_idsPacked(glState, isCallValid, n, idsPacked, &idsPackedParam);
     paramBuffer.addParam(std::move(idsPackedParam));
 
     return CallCapture(gl::EntryPoint::GenTransformFeedbacks, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenVertexArrays(const Context *context,
+CallCapture CaptureGenVertexArrays(const State &glState,
                                    bool isCallValid,
                                    GLsizei n,
                                    VertexArrayID *arraysPacked)
@@ -654,13 +651,13 @@
 
     ParamCapture arraysPackedParam("arraysPacked", ParamType::TVertexArrayIDPointer);
     InitParamValue(ParamType::TVertexArrayIDPointer, arraysPacked, &arraysPackedParam.value);
-    CaptureGenVertexArrays_arraysPacked(context, isCallValid, n, arraysPacked, &arraysPackedParam);
+    CaptureGenVertexArrays_arraysPacked(glState, isCallValid, n, arraysPacked, &arraysPackedParam);
     paramBuffer.addParam(std::move(arraysPackedParam));
 
     return CallCapture(gl::EntryPoint::GenVertexArrays, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetActiveUniformBlockName(const Context *context,
+CallCapture CaptureGetActiveUniformBlockName(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLuint uniformBlockIndex,
@@ -676,13 +673,13 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetActiveUniformBlockName_length(context, isCallValid, programPacked, uniformBlockIndex,
+    CaptureGetActiveUniformBlockName_length(glState, isCallValid, programPacked, uniformBlockIndex,
                                             bufSize, length, uniformBlockName, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture uniformBlockNameParam("uniformBlockName", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, uniformBlockName, &uniformBlockNameParam.value);
-    CaptureGetActiveUniformBlockName_uniformBlockName(context, isCallValid, programPacked,
+    CaptureGetActiveUniformBlockName_uniformBlockName(glState, isCallValid, programPacked,
                                                       uniformBlockIndex, bufSize, length,
                                                       uniformBlockName, &uniformBlockNameParam);
     paramBuffer.addParam(std::move(uniformBlockNameParam));
@@ -690,7 +687,7 @@
     return CallCapture(gl::EntryPoint::GetActiveUniformBlockName, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetActiveUniformBlockiv(const Context *context,
+CallCapture CaptureGetActiveUniformBlockiv(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLuint uniformBlockIndex,
@@ -705,14 +702,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetActiveUniformBlockiv_params(context, isCallValid, programPacked, uniformBlockIndex,
+    CaptureGetActiveUniformBlockiv_params(glState, isCallValid, programPacked, uniformBlockIndex,
                                           pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetActiveUniformBlockiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetActiveUniformsiv(const Context *context,
+CallCapture CaptureGetActiveUniformsiv(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLsizei uniformCount,
@@ -727,7 +724,7 @@
 
     ParamCapture uniformIndicesParam("uniformIndices", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, uniformIndices, &uniformIndicesParam.value);
-    CaptureGetActiveUniformsiv_uniformIndices(context, isCallValid, programPacked, uniformCount,
+    CaptureGetActiveUniformsiv_uniformIndices(glState, isCallValid, programPacked, uniformCount,
                                               uniformIndices, pname, params, &uniformIndicesParam);
     paramBuffer.addParam(std::move(uniformIndicesParam));
 
@@ -735,14 +732,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetActiveUniformsiv_params(context, isCallValid, programPacked, uniformCount,
+    CaptureGetActiveUniformsiv_params(glState, isCallValid, programPacked, uniformCount,
                                       uniformIndices, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetActiveUniformsiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBufferParameteri64v(const Context *context,
+CallCapture CaptureGetBufferParameteri64v(const State &glState,
                                           bool isCallValid,
                                           BufferBinding targetPacked,
                                           GLenum pname,
@@ -755,14 +752,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
     InitParamValue(ParamType::TGLint64Pointer, params, &paramsParam.value);
-    CaptureGetBufferParameteri64v_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetBufferParameteri64v_params(glState, isCallValid, targetPacked, pname, params,
                                          &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetBufferParameteri64v, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBufferPointerv(const Context *context,
+CallCapture CaptureGetBufferPointerv(const State &glState,
                                      bool isCallValid,
                                      BufferBinding targetPacked,
                                      GLenum pname,
@@ -775,14 +772,14 @@
 
     ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
     InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
-    CaptureGetBufferPointerv_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetBufferPointerv_params(glState, isCallValid, targetPacked, pname, params,
                                     &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetBufferPointerv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFragDataLocation(const Context *context,
+CallCapture CaptureGetFragDataLocation(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        const GLchar *name,
@@ -794,7 +791,7 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureGetFragDataLocation_name(context, isCallValid, programPacked, name, &nameParam);
+    CaptureGetFragDataLocation_name(glState, isCallValid, programPacked, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     ParamCapture returnValueCapture("returnValue", ParamType::TGLint);
@@ -804,7 +801,7 @@
     return CallCapture(gl::EntryPoint::GetFragDataLocation, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetInteger64i_v(const Context *context,
+CallCapture CaptureGetInteger64i_v(const State &glState,
                                    bool isCallValid,
                                    GLenum target,
                                    GLuint index,
@@ -817,13 +814,13 @@
 
     ParamCapture dataParam("data", ParamType::TGLint64Pointer);
     InitParamValue(ParamType::TGLint64Pointer, data, &dataParam.value);
-    CaptureGetInteger64i_v_data(context, isCallValid, target, index, data, &dataParam);
+    CaptureGetInteger64i_v_data(glState, isCallValid, target, index, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetInteger64i_v, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetInteger64v(const Context *context,
+CallCapture CaptureGetInteger64v(const State &glState,
                                  bool isCallValid,
                                  GLenum pname,
                                  GLint64 *data)
@@ -834,13 +831,13 @@
 
     ParamCapture dataParam("data", ParamType::TGLint64Pointer);
     InitParamValue(ParamType::TGLint64Pointer, data, &dataParam.value);
-    CaptureGetInteger64v_data(context, isCallValid, pname, data, &dataParam);
+    CaptureGetInteger64v_data(glState, isCallValid, pname, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetInteger64v, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetIntegeri_v(const Context *context,
+CallCapture CaptureGetIntegeri_v(const State &glState,
                                  bool isCallValid,
                                  GLenum target,
                                  GLuint index,
@@ -853,13 +850,13 @@
 
     ParamCapture dataParam("data", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, data, &dataParam.value);
-    CaptureGetIntegeri_v_data(context, isCallValid, target, index, data, &dataParam);
+    CaptureGetIntegeri_v_data(glState, isCallValid, target, index, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetIntegeri_v, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetInternalformativ(const Context *context,
+CallCapture CaptureGetInternalformativ(const State &glState,
                                        bool isCallValid,
                                        GLenum target,
                                        GLenum internalformat,
@@ -877,14 +874,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetInternalformativ_params(context, isCallValid, target, internalformat, pname, bufSize,
+    CaptureGetInternalformativ_params(glState, isCallValid, target, internalformat, pname, bufSize,
                                       params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetInternalformativ, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramBinary(const Context *context,
+CallCapture CaptureGetProgramBinary(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLsizei bufSize,
@@ -899,26 +896,26 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetProgramBinary_length(context, isCallValid, programPacked, bufSize, length,
+    CaptureGetProgramBinary_length(glState, isCallValid, programPacked, bufSize, length,
                                    binaryFormat, binary, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture binaryFormatParam("binaryFormat", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, binaryFormat, &binaryFormatParam.value);
-    CaptureGetProgramBinary_binaryFormat(context, isCallValid, programPacked, bufSize, length,
+    CaptureGetProgramBinary_binaryFormat(glState, isCallValid, programPacked, bufSize, length,
                                          binaryFormat, binary, &binaryFormatParam);
     paramBuffer.addParam(std::move(binaryFormatParam));
 
     ParamCapture binaryParam("binary", ParamType::TvoidPointer);
     InitParamValue(ParamType::TvoidPointer, binary, &binaryParam.value);
-    CaptureGetProgramBinary_binary(context, isCallValid, programPacked, bufSize, length,
+    CaptureGetProgramBinary_binary(glState, isCallValid, programPacked, bufSize, length,
                                    binaryFormat, binary, &binaryParam);
     paramBuffer.addParam(std::move(binaryParam));
 
     return CallCapture(gl::EntryPoint::GetProgramBinary, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryObjectuiv(const Context *context,
+CallCapture CaptureGetQueryObjectuiv(const State &glState,
                                      bool isCallValid,
                                      QueryID idPacked,
                                      GLenum pname,
@@ -932,13 +929,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetQueryObjectuiv_params(context, isCallValid, idPacked, pname, params, &paramsParam);
+    CaptureGetQueryObjectuiv_params(glState, isCallValid, idPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryObjectuiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryiv(const Context *context,
+CallCapture CaptureGetQueryiv(const State &glState,
                               bool isCallValid,
                               QueryType targetPacked,
                               GLenum pname,
@@ -951,13 +948,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetQueryiv_params(context, isCallValid, targetPacked, pname, params, &paramsParam);
+    CaptureGetQueryiv_params(glState, isCallValid, targetPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameterfv(const Context *context,
+CallCapture CaptureGetSamplerParameterfv(const State &glState,
                                          bool isCallValid,
                                          SamplerID samplerPacked,
                                          GLenum pname,
@@ -970,14 +967,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameterfv_params(context, isCallValid, samplerPacked, pname, params,
+    CaptureGetSamplerParameterfv_params(glState, isCallValid, samplerPacked, pname, params,
                                         &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameterfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameteriv(const Context *context,
+CallCapture CaptureGetSamplerParameteriv(const State &glState,
                                          bool isCallValid,
                                          SamplerID samplerPacked,
                                          GLenum pname,
@@ -990,14 +987,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameteriv_params(context, isCallValid, samplerPacked, pname, params,
+    CaptureGetSamplerParameteriv_params(glState, isCallValid, samplerPacked, pname, params,
                                         &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameteriv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetStringi(const Context *context,
+CallCapture CaptureGetStringi(const State &glState,
                               bool isCallValid,
                               GLenum name,
                               GLuint index,
@@ -1015,7 +1012,7 @@
     return CallCapture(gl::EntryPoint::GetStringi, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSynciv(const Context *context,
+CallCapture CaptureGetSynciv(const State &glState,
                              bool isCallValid,
                              GLsync sync,
                              GLenum pname,
@@ -1031,20 +1028,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetSynciv_length(context, isCallValid, sync, pname, bufSize, length, values,
+    CaptureGetSynciv_length(glState, isCallValid, sync, pname, bufSize, length, values,
                             &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture valuesParam("values", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, values, &valuesParam.value);
-    CaptureGetSynciv_values(context, isCallValid, sync, pname, bufSize, length, values,
+    CaptureGetSynciv_values(glState, isCallValid, sync, pname, bufSize, length, values,
                             &valuesParam);
     paramBuffer.addParam(std::move(valuesParam));
 
     return CallCapture(gl::EntryPoint::GetSynciv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTransformFeedbackVarying(const Context *context,
+CallCapture CaptureGetTransformFeedbackVarying(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID programPacked,
                                                GLuint index,
@@ -1062,32 +1059,32 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetTransformFeedbackVarying_length(context, isCallValid, programPacked, index, bufSize,
+    CaptureGetTransformFeedbackVarying_length(glState, isCallValid, programPacked, index, bufSize,
                                               length, size, type, name, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture sizeParam("size", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, size, &sizeParam.value);
-    CaptureGetTransformFeedbackVarying_size(context, isCallValid, programPacked, index, bufSize,
+    CaptureGetTransformFeedbackVarying_size(glState, isCallValid, programPacked, index, bufSize,
                                             length, size, type, name, &sizeParam);
     paramBuffer.addParam(std::move(sizeParam));
 
     ParamCapture typeParam("type", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, type, &typeParam.value);
-    CaptureGetTransformFeedbackVarying_type(context, isCallValid, programPacked, index, bufSize,
+    CaptureGetTransformFeedbackVarying_type(glState, isCallValid, programPacked, index, bufSize,
                                             length, size, type, name, &typeParam);
     paramBuffer.addParam(std::move(typeParam));
 
     ParamCapture nameParam("name", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, name, &nameParam.value);
-    CaptureGetTransformFeedbackVarying_name(context, isCallValid, programPacked, index, bufSize,
+    CaptureGetTransformFeedbackVarying_name(glState, isCallValid, programPacked, index, bufSize,
                                             length, size, type, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::GetTransformFeedbackVarying, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUniformBlockIndex(const Context *context,
+CallCapture CaptureGetUniformBlockIndex(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked,
                                         const GLchar *uniformBlockName,
@@ -1099,7 +1096,7 @@
 
     ParamCapture uniformBlockNameParam("uniformBlockName", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, uniformBlockName, &uniformBlockNameParam.value);
-    CaptureGetUniformBlockIndex_uniformBlockName(context, isCallValid, programPacked,
+    CaptureGetUniformBlockIndex_uniformBlockName(glState, isCallValid, programPacked,
                                                  uniformBlockName, &uniformBlockNameParam);
     paramBuffer.addParam(std::move(uniformBlockNameParam));
 
@@ -1110,7 +1107,7 @@
     return CallCapture(gl::EntryPoint::GetUniformBlockIndex, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUniformIndices(const Context *context,
+CallCapture CaptureGetUniformIndices(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLsizei uniformCount,
@@ -1124,20 +1121,20 @@
 
     ParamCapture uniformNamesParam("uniformNames", ParamType::TGLcharConstPointerPointer);
     InitParamValue(ParamType::TGLcharConstPointerPointer, uniformNames, &uniformNamesParam.value);
-    CaptureGetUniformIndices_uniformNames(context, isCallValid, programPacked, uniformCount,
+    CaptureGetUniformIndices_uniformNames(glState, isCallValid, programPacked, uniformCount,
                                           uniformNames, uniformIndices, &uniformNamesParam);
     paramBuffer.addParam(std::move(uniformNamesParam));
 
     ParamCapture uniformIndicesParam("uniformIndices", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, uniformIndices, &uniformIndicesParam.value);
-    CaptureGetUniformIndices_uniformIndices(context, isCallValid, programPacked, uniformCount,
+    CaptureGetUniformIndices_uniformIndices(glState, isCallValid, programPacked, uniformCount,
                                             uniformNames, uniformIndices, &uniformIndicesParam);
     paramBuffer.addParam(std::move(uniformIndicesParam));
 
     return CallCapture(gl::EntryPoint::GetUniformIndices, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUniformuiv(const Context *context,
+CallCapture CaptureGetUniformuiv(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLint location,
@@ -1150,14 +1147,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetUniformuiv_params(context, isCallValid, programPacked, location, params,
+    CaptureGetUniformuiv_params(glState, isCallValid, programPacked, location, params,
                                 &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetUniformuiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribIiv(const Context *context,
+CallCapture CaptureGetVertexAttribIiv(const State &glState,
                                       bool isCallValid,
                                       GLuint index,
                                       GLenum pname,
@@ -1170,13 +1167,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetVertexAttribIiv_params(context, isCallValid, index, pname, params, &paramsParam);
+    CaptureGetVertexAttribIiv_params(glState, isCallValid, index, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribIiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribIuiv(const Context *context,
+CallCapture CaptureGetVertexAttribIuiv(const State &glState,
                                        bool isCallValid,
                                        GLuint index,
                                        GLenum pname,
@@ -1189,13 +1186,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetVertexAttribIuiv_params(context, isCallValid, index, pname, params, &paramsParam);
+    CaptureGetVertexAttribIuiv_params(glState, isCallValid, index, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribIuiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureInvalidateFramebuffer(const Context *context,
+CallCapture CaptureInvalidateFramebuffer(const State &glState,
                                          bool isCallValid,
                                          GLenum target,
                                          GLsizei numAttachments,
@@ -1208,14 +1205,14 @@
 
     ParamCapture attachmentsParam("attachments", ParamType::TGLenumConstPointer);
     InitParamValue(ParamType::TGLenumConstPointer, attachments, &attachmentsParam.value);
-    CaptureInvalidateFramebuffer_attachments(context, isCallValid, target, numAttachments,
+    CaptureInvalidateFramebuffer_attachments(glState, isCallValid, target, numAttachments,
                                              attachments, &attachmentsParam);
     paramBuffer.addParam(std::move(attachmentsParam));
 
     return CallCapture(gl::EntryPoint::InvalidateFramebuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureInvalidateSubFramebuffer(const Context *context,
+CallCapture CaptureInvalidateSubFramebuffer(const State &glState,
                                             bool isCallValid,
                                             GLenum target,
                                             GLsizei numAttachments,
@@ -1232,7 +1229,7 @@
 
     ParamCapture attachmentsParam("attachments", ParamType::TGLenumConstPointer);
     InitParamValue(ParamType::TGLenumConstPointer, attachments, &attachmentsParam.value);
-    CaptureInvalidateSubFramebuffer_attachments(context, isCallValid, target, numAttachments,
+    CaptureInvalidateSubFramebuffer_attachments(glState, isCallValid, target, numAttachments,
                                                 attachments, x, y, width, height,
                                                 &attachmentsParam);
     paramBuffer.addParam(std::move(attachmentsParam));
@@ -1245,7 +1242,7 @@
     return CallCapture(gl::EntryPoint::InvalidateSubFramebuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsQuery(const Context *context,
+CallCapture CaptureIsQuery(const State &glState,
                            bool isCallValid,
                            QueryID idPacked,
                            GLboolean returnValue)
@@ -1261,7 +1258,7 @@
     return CallCapture(gl::EntryPoint::IsQuery, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsSampler(const Context *context,
+CallCapture CaptureIsSampler(const State &glState,
                              bool isCallValid,
                              SamplerID samplerPacked,
                              GLboolean returnValue)
@@ -1277,7 +1274,7 @@
     return CallCapture(gl::EntryPoint::IsSampler, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsSync(const Context *context,
+CallCapture CaptureIsSync(const State &glState,
                           bool isCallValid,
                           GLsync sync,
                           GLboolean returnValue)
@@ -1293,7 +1290,7 @@
     return CallCapture(gl::EntryPoint::IsSync, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsTransformFeedback(const Context *context,
+CallCapture CaptureIsTransformFeedback(const State &glState,
                                        bool isCallValid,
                                        TransformFeedbackID idPacked,
                                        GLboolean returnValue)
@@ -1309,7 +1306,7 @@
     return CallCapture(gl::EntryPoint::IsTransformFeedback, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsVertexArray(const Context *context,
+CallCapture CaptureIsVertexArray(const State &glState,
                                  bool isCallValid,
                                  VertexArrayID arrayPacked,
                                  GLboolean returnValue)
@@ -1325,7 +1322,7 @@
     return CallCapture(gl::EntryPoint::IsVertexArray, std::move(paramBuffer));
 }
 
-CallCapture CaptureMapBufferRange(const Context *context,
+CallCapture CaptureMapBufferRange(const State &glState,
                                   bool isCallValid,
                                   BufferBinding targetPacked,
                                   GLintptr offset,
@@ -1348,14 +1345,14 @@
     return CallCapture(gl::EntryPoint::MapBufferRange, std::move(paramBuffer));
 }
 
-CallCapture CapturePauseTransformFeedback(const Context *context, bool isCallValid)
+CallCapture CapturePauseTransformFeedback(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::PauseTransformFeedback, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramBinary(const Context *context,
+CallCapture CaptureProgramBinary(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLenum binaryFormat,
@@ -1370,7 +1367,7 @@
 
     ParamCapture binaryParam("binary", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, binary, &binaryParam.value);
-    CaptureProgramBinary_binary(context, isCallValid, programPacked, binaryFormat, binary, length,
+    CaptureProgramBinary_binary(glState, isCallValid, programPacked, binaryFormat, binary, length,
                                 &binaryParam);
     paramBuffer.addParam(std::move(binaryParam));
 
@@ -1379,7 +1376,7 @@
     return CallCapture(gl::EntryPoint::ProgramBinary, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramParameteri(const Context *context,
+CallCapture CaptureProgramParameteri(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLenum pname,
@@ -1395,7 +1392,7 @@
     return CallCapture(gl::EntryPoint::ProgramParameteri, std::move(paramBuffer));
 }
 
-CallCapture CaptureReadBuffer(const Context *context, bool isCallValid, GLenum src)
+CallCapture CaptureReadBuffer(const State &glState, bool isCallValid, GLenum src)
 {
     ParamBuffer paramBuffer;
 
@@ -1404,7 +1401,7 @@
     return CallCapture(gl::EntryPoint::ReadBuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureRenderbufferStorageMultisample(const Context *context,
+CallCapture CaptureRenderbufferStorageMultisample(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLsizei samples,
@@ -1424,14 +1421,14 @@
     return CallCapture(gl::EntryPoint::RenderbufferStorageMultisample, std::move(paramBuffer));
 }
 
-CallCapture CaptureResumeTransformFeedback(const Context *context, bool isCallValid)
+CallCapture CaptureResumeTransformFeedback(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::ResumeTransformFeedback, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterf(const Context *context,
+CallCapture CaptureSamplerParameterf(const State &glState,
                                      bool isCallValid,
                                      SamplerID samplerPacked,
                                      GLenum pname,
@@ -1446,7 +1443,7 @@
     return CallCapture(gl::EntryPoint::SamplerParameterf, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterfv(const Context *context,
+CallCapture CaptureSamplerParameterfv(const State &glState,
                                       bool isCallValid,
                                       SamplerID samplerPacked,
                                       GLenum pname,
@@ -1459,13 +1456,13 @@
 
     ParamCapture paramParam("param", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, param, &paramParam.value);
-    CaptureSamplerParameterfv_param(context, isCallValid, samplerPacked, pname, param, &paramParam);
+    CaptureSamplerParameterfv_param(glState, isCallValid, samplerPacked, pname, param, &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameterfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameteri(const Context *context,
+CallCapture CaptureSamplerParameteri(const State &glState,
                                      bool isCallValid,
                                      SamplerID samplerPacked,
                                      GLenum pname,
@@ -1480,7 +1477,7 @@
     return CallCapture(gl::EntryPoint::SamplerParameteri, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameteriv(const Context *context,
+CallCapture CaptureSamplerParameteriv(const State &glState,
                                       bool isCallValid,
                                       SamplerID samplerPacked,
                                       GLenum pname,
@@ -1493,13 +1490,13 @@
 
     ParamCapture paramParam("param", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, param, &paramParam.value);
-    CaptureSamplerParameteriv_param(context, isCallValid, samplerPacked, pname, param, &paramParam);
+    CaptureSamplerParameteriv_param(glState, isCallValid, samplerPacked, pname, param, &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameteriv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexImage3D(const Context *context,
+CallCapture CaptureTexImage3D(const State &glState,
                               bool isCallValid,
                               TextureTarget targetPacked,
                               GLint level,
@@ -1526,14 +1523,14 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexImage3D_pixels(context, isCallValid, targetPacked, level, internalformat, width,
+    CaptureTexImage3D_pixels(glState, isCallValid, targetPacked, level, internalformat, width,
                              height, depth, border, format, type, pixels, &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
 
     return CallCapture(gl::EntryPoint::TexImage3D, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorage2D(const Context *context,
+CallCapture CaptureTexStorage2D(const State &glState,
                                 bool isCallValid,
                                 TextureType targetPacked,
                                 GLsizei levels,
@@ -1553,7 +1550,7 @@
     return CallCapture(gl::EntryPoint::TexStorage2D, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorage3D(const Context *context,
+CallCapture CaptureTexStorage3D(const State &glState,
                                 bool isCallValid,
                                 TextureType targetPacked,
                                 GLsizei levels,
@@ -1575,7 +1572,7 @@
     return CallCapture(gl::EntryPoint::TexStorage3D, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexSubImage3D(const Context *context,
+CallCapture CaptureTexSubImage3D(const State &glState,
                                  bool isCallValid,
                                  TextureTarget targetPacked,
                                  GLint level,
@@ -1604,14 +1601,14 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexSubImage3D_pixels(context, isCallValid, targetPacked, level, xoffset, yoffset,
+    CaptureTexSubImage3D_pixels(glState, isCallValid, targetPacked, level, xoffset, yoffset,
                                 zoffset, width, height, depth, format, type, pixels, &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
 
     return CallCapture(gl::EntryPoint::TexSubImage3D, std::move(paramBuffer));
 }
 
-CallCapture CaptureTransformFeedbackVaryings(const Context *context,
+CallCapture CaptureTransformFeedbackVaryings(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLsizei count,
@@ -1625,7 +1622,7 @@
 
     ParamCapture varyingsParam("varyings", ParamType::TGLcharConstPointerPointer);
     InitParamValue(ParamType::TGLcharConstPointerPointer, varyings, &varyingsParam.value);
-    CaptureTransformFeedbackVaryings_varyings(context, isCallValid, programPacked, count, varyings,
+    CaptureTransformFeedbackVaryings_varyings(glState, isCallValid, programPacked, count, varyings,
                                               bufferMode, &varyingsParam);
     paramBuffer.addParam(std::move(varyingsParam));
 
@@ -1635,7 +1632,7 @@
     return CallCapture(gl::EntryPoint::TransformFeedbackVaryings, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform1ui(const Context *context, bool isCallValid, GLint location, GLuint v0)
+CallCapture CaptureUniform1ui(const State &glState, bool isCallValid, GLint location, GLuint v0)
 {
     ParamBuffer paramBuffer;
 
@@ -1645,7 +1642,7 @@
     return CallCapture(gl::EntryPoint::Uniform1ui, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform1uiv(const Context *context,
+CallCapture CaptureUniform1uiv(const State &glState,
                                bool isCallValid,
                                GLint location,
                                GLsizei count,
@@ -1658,13 +1655,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
-    CaptureUniform1uiv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform1uiv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform1uiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform2ui(const Context *context,
+CallCapture CaptureUniform2ui(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLuint v0,
@@ -1679,7 +1676,7 @@
     return CallCapture(gl::EntryPoint::Uniform2ui, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform2uiv(const Context *context,
+CallCapture CaptureUniform2uiv(const State &glState,
                                bool isCallValid,
                                GLint location,
                                GLsizei count,
@@ -1692,13 +1689,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
-    CaptureUniform2uiv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform2uiv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform2uiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform3ui(const Context *context,
+CallCapture CaptureUniform3ui(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLuint v0,
@@ -1715,7 +1712,7 @@
     return CallCapture(gl::EntryPoint::Uniform3ui, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform3uiv(const Context *context,
+CallCapture CaptureUniform3uiv(const State &glState,
                                bool isCallValid,
                                GLint location,
                                GLsizei count,
@@ -1728,13 +1725,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
-    CaptureUniform3uiv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform3uiv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform3uiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform4ui(const Context *context,
+CallCapture CaptureUniform4ui(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLuint v0,
@@ -1753,7 +1750,7 @@
     return CallCapture(gl::EntryPoint::Uniform4ui, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniform4uiv(const Context *context,
+CallCapture CaptureUniform4uiv(const State &glState,
                                bool isCallValid,
                                GLint location,
                                GLsizei count,
@@ -1766,13 +1763,13 @@
 
     ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
-    CaptureUniform4uiv_value(context, isCallValid, location, count, value, &valueParam);
+    CaptureUniform4uiv_value(glState, isCallValid, location, count, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::Uniform4uiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformBlockBinding(const Context *context,
+CallCapture CaptureUniformBlockBinding(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLuint uniformBlockIndex,
@@ -1787,7 +1784,7 @@
     return CallCapture(gl::EntryPoint::UniformBlockBinding, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformMatrix2x3fv(const Context *context,
+CallCapture CaptureUniformMatrix2x3fv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
@@ -1802,14 +1799,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniformMatrix2x3fv_value(context, isCallValid, location, count, transpose, value,
+    CaptureUniformMatrix2x3fv_value(glState, isCallValid, location, count, transpose, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::UniformMatrix2x3fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformMatrix2x4fv(const Context *context,
+CallCapture CaptureUniformMatrix2x4fv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
@@ -1824,14 +1821,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniformMatrix2x4fv_value(context, isCallValid, location, count, transpose, value,
+    CaptureUniformMatrix2x4fv_value(glState, isCallValid, location, count, transpose, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::UniformMatrix2x4fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformMatrix3x2fv(const Context *context,
+CallCapture CaptureUniformMatrix3x2fv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
@@ -1846,14 +1843,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniformMatrix3x2fv_value(context, isCallValid, location, count, transpose, value,
+    CaptureUniformMatrix3x2fv_value(glState, isCallValid, location, count, transpose, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::UniformMatrix3x2fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformMatrix3x4fv(const Context *context,
+CallCapture CaptureUniformMatrix3x4fv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
@@ -1868,14 +1865,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniformMatrix3x4fv_value(context, isCallValid, location, count, transpose, value,
+    CaptureUniformMatrix3x4fv_value(glState, isCallValid, location, count, transpose, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::UniformMatrix3x4fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformMatrix4x2fv(const Context *context,
+CallCapture CaptureUniformMatrix4x2fv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
@@ -1890,14 +1887,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniformMatrix4x2fv_value(context, isCallValid, location, count, transpose, value,
+    CaptureUniformMatrix4x2fv_value(glState, isCallValid, location, count, transpose, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::UniformMatrix4x2fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUniformMatrix4x3fv(const Context *context,
+CallCapture CaptureUniformMatrix4x3fv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
@@ -1912,14 +1909,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureUniformMatrix4x3fv_value(context, isCallValid, location, count, transpose, value,
+    CaptureUniformMatrix4x3fv_value(glState, isCallValid, location, count, transpose, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::UniformMatrix4x3fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureUnmapBuffer(const Context *context,
+CallCapture CaptureUnmapBuffer(const State &glState,
                                bool isCallValid,
                                BufferBinding targetPacked,
                                GLboolean returnValue)
@@ -1935,7 +1932,7 @@
     return CallCapture(gl::EntryPoint::UnmapBuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribDivisor(const Context *context,
+CallCapture CaptureVertexAttribDivisor(const State &glState,
                                        bool isCallValid,
                                        GLuint index,
                                        GLuint divisor)
@@ -1948,7 +1945,7 @@
     return CallCapture(gl::EntryPoint::VertexAttribDivisor, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribI4i(const Context *context,
+CallCapture CaptureVertexAttribI4i(const State &glState,
                                    bool isCallValid,
                                    GLuint index,
                                    GLint x,
@@ -1967,7 +1964,7 @@
     return CallCapture(gl::EntryPoint::VertexAttribI4i, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribI4iv(const Context *context,
+CallCapture CaptureVertexAttribI4iv(const State &glState,
                                     bool isCallValid,
                                     GLuint index,
                                     const GLint *v)
@@ -1978,13 +1975,13 @@
 
     ParamCapture vParam("v", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, v, &vParam.value);
-    CaptureVertexAttribI4iv_v(context, isCallValid, index, v, &vParam);
+    CaptureVertexAttribI4iv_v(glState, isCallValid, index, v, &vParam);
     paramBuffer.addParam(std::move(vParam));
 
     return CallCapture(gl::EntryPoint::VertexAttribI4iv, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribI4ui(const Context *context,
+CallCapture CaptureVertexAttribI4ui(const State &glState,
                                     bool isCallValid,
                                     GLuint index,
                                     GLuint x,
@@ -2003,7 +2000,7 @@
     return CallCapture(gl::EntryPoint::VertexAttribI4ui, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribI4uiv(const Context *context,
+CallCapture CaptureVertexAttribI4uiv(const State &glState,
                                      bool isCallValid,
                                      GLuint index,
                                      const GLuint *v)
@@ -2014,13 +2011,13 @@
 
     ParamCapture vParam("v", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, v, &vParam.value);
-    CaptureVertexAttribI4uiv_v(context, isCallValid, index, v, &vParam);
+    CaptureVertexAttribI4uiv_v(glState, isCallValid, index, v, &vParam);
     paramBuffer.addParam(std::move(vParam));
 
     return CallCapture(gl::EntryPoint::VertexAttribI4uiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribIPointer(const Context *context,
+CallCapture CaptureVertexAttribIPointer(const State &glState,
                                         bool isCallValid,
                                         GLuint index,
                                         GLint size,
@@ -2037,14 +2034,14 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
-    CaptureVertexAttribIPointer_pointer(context, isCallValid, index, size, typePacked, stride,
+    CaptureVertexAttribIPointer_pointer(glState, isCallValid, index, size, typePacked, stride,
                                         pointer, &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::VertexAttribIPointer, std::move(paramBuffer));
 }
 
-CallCapture CaptureWaitSync(const Context *context,
+CallCapture CaptureWaitSync(const State &glState,
                             bool isCallValid,
                             GLsync sync,
                             GLbitfield flags,
diff --git a/src/libANGLE/capture_gles_3_0_autogen.h b/src/libANGLE/capture_gles_3_0_autogen.h
index 1a97beb..019467b 100644
--- a/src/libANGLE/capture_gles_3_0_autogen.h
+++ b/src/libANGLE/capture_gles_3_0_autogen.h
@@ -16,41 +16,40 @@
 
 namespace gl
 {
-class Context;
 
 // Method Captures
 
-angle::CallCapture CaptureBeginQuery(const Context *context,
+angle::CallCapture CaptureBeginQuery(const State &glState,
                                      bool isCallValid,
                                      QueryType targetPacked,
                                      QueryID idPacked);
-angle::CallCapture CaptureBeginTransformFeedback(const Context *context,
+angle::CallCapture CaptureBeginTransformFeedback(const State &glState,
                                                  bool isCallValid,
                                                  PrimitiveMode primitiveModePacked);
-angle::CallCapture CaptureBindBufferBase(const Context *context,
+angle::CallCapture CaptureBindBufferBase(const State &glState,
                                          bool isCallValid,
                                          BufferBinding targetPacked,
                                          GLuint index,
                                          BufferID bufferPacked);
-angle::CallCapture CaptureBindBufferRange(const Context *context,
+angle::CallCapture CaptureBindBufferRange(const State &glState,
                                           bool isCallValid,
                                           BufferBinding targetPacked,
                                           GLuint index,
                                           BufferID bufferPacked,
                                           GLintptr offset,
                                           GLsizeiptr size);
-angle::CallCapture CaptureBindSampler(const Context *context,
+angle::CallCapture CaptureBindSampler(const State &glState,
                                       bool isCallValid,
                                       GLuint unit,
                                       SamplerID samplerPacked);
-angle::CallCapture CaptureBindTransformFeedback(const Context *context,
+angle::CallCapture CaptureBindTransformFeedback(const State &glState,
                                                 bool isCallValid,
                                                 GLenum target,
                                                 TransformFeedbackID idPacked);
-angle::CallCapture CaptureBindVertexArray(const Context *context,
+angle::CallCapture CaptureBindVertexArray(const State &glState,
                                           bool isCallValid,
                                           VertexArrayID arrayPacked);
-angle::CallCapture CaptureBlitFramebuffer(const Context *context,
+angle::CallCapture CaptureBlitFramebuffer(const State &glState,
                                           bool isCallValid,
                                           GLint srcX0,
                                           GLint srcY0,
@@ -62,34 +61,34 @@
                                           GLint dstY1,
                                           GLbitfield mask,
                                           GLenum filter);
-angle::CallCapture CaptureClearBufferfi(const Context *context,
+angle::CallCapture CaptureClearBufferfi(const State &glState,
                                         bool isCallValid,
                                         GLenum buffer,
                                         GLint drawbuffer,
                                         GLfloat depth,
                                         GLint stencil);
-angle::CallCapture CaptureClearBufferfv(const Context *context,
+angle::CallCapture CaptureClearBufferfv(const State &glState,
                                         bool isCallValid,
                                         GLenum buffer,
                                         GLint drawbuffer,
                                         const GLfloat *value);
-angle::CallCapture CaptureClearBufferiv(const Context *context,
+angle::CallCapture CaptureClearBufferiv(const State &glState,
                                         bool isCallValid,
                                         GLenum buffer,
                                         GLint drawbuffer,
                                         const GLint *value);
-angle::CallCapture CaptureClearBufferuiv(const Context *context,
+angle::CallCapture CaptureClearBufferuiv(const State &glState,
                                          bool isCallValid,
                                          GLenum buffer,
                                          GLint drawbuffer,
                                          const GLuint *value);
-angle::CallCapture CaptureClientWaitSync(const Context *context,
+angle::CallCapture CaptureClientWaitSync(const State &glState,
                                          bool isCallValid,
                                          GLsync sync,
                                          GLbitfield flags,
                                          GLuint64 timeout,
                                          GLenum returnValue);
-angle::CallCapture CaptureCompressedTexImage3D(const Context *context,
+angle::CallCapture CaptureCompressedTexImage3D(const State &glState,
                                                bool isCallValid,
                                                TextureTarget targetPacked,
                                                GLint level,
@@ -100,7 +99,7 @@
                                                GLint border,
                                                GLsizei imageSize,
                                                const void *data);
-angle::CallCapture CaptureCompressedTexSubImage3D(const Context *context,
+angle::CallCapture CaptureCompressedTexSubImage3D(const State &glState,
                                                   bool isCallValid,
                                                   TextureTarget targetPacked,
                                                   GLint level,
@@ -113,14 +112,14 @@
                                                   GLenum format,
                                                   GLsizei imageSize,
                                                   const void *data);
-angle::CallCapture CaptureCopyBufferSubData(const Context *context,
+angle::CallCapture CaptureCopyBufferSubData(const State &glState,
                                             bool isCallValid,
                                             BufferBinding readTargetPacked,
                                             BufferBinding writeTargetPacked,
                                             GLintptr readOffset,
                                             GLintptr writeOffset,
                                             GLsizeiptr size);
-angle::CallCapture CaptureCopyTexSubImage3D(const Context *context,
+angle::CallCapture CaptureCopyTexSubImage3D(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -131,41 +130,41 @@
                                             GLint y,
                                             GLsizei width,
                                             GLsizei height);
-angle::CallCapture CaptureDeleteQueries(const Context *context,
+angle::CallCapture CaptureDeleteQueries(const State &glState,
                                         bool isCallValid,
                                         GLsizei n,
                                         const QueryID *idsPacked);
-angle::CallCapture CaptureDeleteSamplers(const Context *context,
+angle::CallCapture CaptureDeleteSamplers(const State &glState,
                                          bool isCallValid,
                                          GLsizei count,
                                          const SamplerID *samplersPacked);
-angle::CallCapture CaptureDeleteSync(const Context *context, bool isCallValid, GLsync sync);
-angle::CallCapture CaptureDeleteTransformFeedbacks(const Context *context,
+angle::CallCapture CaptureDeleteSync(const State &glState, bool isCallValid, GLsync sync);
+angle::CallCapture CaptureDeleteTransformFeedbacks(const State &glState,
                                                    bool isCallValid,
                                                    GLsizei n,
                                                    const TransformFeedbackID *idsPacked);
-angle::CallCapture CaptureDeleteVertexArrays(const Context *context,
+angle::CallCapture CaptureDeleteVertexArrays(const State &glState,
                                              bool isCallValid,
                                              GLsizei n,
                                              const VertexArrayID *arraysPacked);
-angle::CallCapture CaptureDrawArraysInstanced(const Context *context,
+angle::CallCapture CaptureDrawArraysInstanced(const State &glState,
                                               bool isCallValid,
                                               PrimitiveMode modePacked,
                                               GLint first,
                                               GLsizei count,
                                               GLsizei instancecount);
-angle::CallCapture CaptureDrawBuffers(const Context *context,
+angle::CallCapture CaptureDrawBuffers(const State &glState,
                                       bool isCallValid,
                                       GLsizei n,
                                       const GLenum *bufs);
-angle::CallCapture CaptureDrawElementsInstanced(const Context *context,
+angle::CallCapture CaptureDrawElementsInstanced(const State &glState,
                                                 bool isCallValid,
                                                 PrimitiveMode modePacked,
                                                 GLsizei count,
                                                 DrawElementsType typePacked,
                                                 const void *indices,
                                                 GLsizei instancecount);
-angle::CallCapture CaptureDrawRangeElements(const Context *context,
+angle::CallCapture CaptureDrawRangeElements(const State &glState,
                                             bool isCallValid,
                                             PrimitiveMode modePacked,
                                             GLuint start,
@@ -173,139 +172,137 @@
                                             GLsizei count,
                                             DrawElementsType typePacked,
                                             const void *indices);
-angle::CallCapture CaptureEndQuery(const Context *context,
-                                   bool isCallValid,
-                                   QueryType targetPacked);
-angle::CallCapture CaptureEndTransformFeedback(const Context *context, bool isCallValid);
-angle::CallCapture CaptureFenceSync(const Context *context,
+angle::CallCapture CaptureEndQuery(const State &glState, bool isCallValid, QueryType targetPacked);
+angle::CallCapture CaptureEndTransformFeedback(const State &glState, bool isCallValid);
+angle::CallCapture CaptureFenceSync(const State &glState,
                                     bool isCallValid,
                                     GLenum condition,
                                     GLbitfield flags,
                                     GLsync returnValue);
-angle::CallCapture CaptureFlushMappedBufferRange(const Context *context,
+angle::CallCapture CaptureFlushMappedBufferRange(const State &glState,
                                                  bool isCallValid,
                                                  BufferBinding targetPacked,
                                                  GLintptr offset,
                                                  GLsizeiptr length);
-angle::CallCapture CaptureFramebufferTextureLayer(const Context *context,
+angle::CallCapture CaptureFramebufferTextureLayer(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum attachment,
                                                   TextureID texturePacked,
                                                   GLint level,
                                                   GLint layer);
-angle::CallCapture CaptureGenQueries(const Context *context,
+angle::CallCapture CaptureGenQueries(const State &glState,
                                      bool isCallValid,
                                      GLsizei n,
                                      QueryID *idsPacked);
-angle::CallCapture CaptureGenSamplers(const Context *context,
+angle::CallCapture CaptureGenSamplers(const State &glState,
                                       bool isCallValid,
                                       GLsizei count,
                                       SamplerID *samplersPacked);
-angle::CallCapture CaptureGenTransformFeedbacks(const Context *context,
+angle::CallCapture CaptureGenTransformFeedbacks(const State &glState,
                                                 bool isCallValid,
                                                 GLsizei n,
                                                 TransformFeedbackID *idsPacked);
-angle::CallCapture CaptureGenVertexArrays(const Context *context,
+angle::CallCapture CaptureGenVertexArrays(const State &glState,
                                           bool isCallValid,
                                           GLsizei n,
                                           VertexArrayID *arraysPacked);
-angle::CallCapture CaptureGetActiveUniformBlockName(const Context *context,
+angle::CallCapture CaptureGetActiveUniformBlockName(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLuint uniformBlockIndex,
                                                     GLsizei bufSize,
                                                     GLsizei *length,
                                                     GLchar *uniformBlockName);
-angle::CallCapture CaptureGetActiveUniformBlockiv(const Context *context,
+angle::CallCapture CaptureGetActiveUniformBlockiv(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLuint uniformBlockIndex,
                                                   GLenum pname,
                                                   GLint *params);
-angle::CallCapture CaptureGetActiveUniformsiv(const Context *context,
+angle::CallCapture CaptureGetActiveUniformsiv(const State &glState,
                                               bool isCallValid,
                                               ShaderProgramID programPacked,
                                               GLsizei uniformCount,
                                               const GLuint *uniformIndices,
                                               GLenum pname,
                                               GLint *params);
-angle::CallCapture CaptureGetBufferParameteri64v(const Context *context,
+angle::CallCapture CaptureGetBufferParameteri64v(const State &glState,
                                                  bool isCallValid,
                                                  BufferBinding targetPacked,
                                                  GLenum pname,
                                                  GLint64 *params);
-angle::CallCapture CaptureGetBufferPointerv(const Context *context,
+angle::CallCapture CaptureGetBufferPointerv(const State &glState,
                                             bool isCallValid,
                                             BufferBinding targetPacked,
                                             GLenum pname,
                                             void **params);
-angle::CallCapture CaptureGetFragDataLocation(const Context *context,
+angle::CallCapture CaptureGetFragDataLocation(const State &glState,
                                               bool isCallValid,
                                               ShaderProgramID programPacked,
                                               const GLchar *name,
                                               GLint returnValue);
-angle::CallCapture CaptureGetInteger64i_v(const Context *context,
+angle::CallCapture CaptureGetInteger64i_v(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           GLuint index,
                                           GLint64 *data);
-angle::CallCapture CaptureGetInteger64v(const Context *context,
+angle::CallCapture CaptureGetInteger64v(const State &glState,
                                         bool isCallValid,
                                         GLenum pname,
                                         GLint64 *data);
-angle::CallCapture CaptureGetIntegeri_v(const Context *context,
+angle::CallCapture CaptureGetIntegeri_v(const State &glState,
                                         bool isCallValid,
                                         GLenum target,
                                         GLuint index,
                                         GLint *data);
-angle::CallCapture CaptureGetInternalformativ(const Context *context,
+angle::CallCapture CaptureGetInternalformativ(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLenum internalformat,
                                               GLenum pname,
                                               GLsizei bufSize,
                                               GLint *params);
-angle::CallCapture CaptureGetProgramBinary(const Context *context,
+angle::CallCapture CaptureGetProgramBinary(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLsizei bufSize,
                                            GLsizei *length,
                                            GLenum *binaryFormat,
                                            void *binary);
-angle::CallCapture CaptureGetQueryObjectuiv(const Context *context,
+angle::CallCapture CaptureGetQueryObjectuiv(const State &glState,
                                             bool isCallValid,
                                             QueryID idPacked,
                                             GLenum pname,
                                             GLuint *params);
-angle::CallCapture CaptureGetQueryiv(const Context *context,
+angle::CallCapture CaptureGetQueryiv(const State &glState,
                                      bool isCallValid,
                                      QueryType targetPacked,
                                      GLenum pname,
                                      GLint *params);
-angle::CallCapture CaptureGetSamplerParameterfv(const Context *context,
+angle::CallCapture CaptureGetSamplerParameterfv(const State &glState,
                                                 bool isCallValid,
                                                 SamplerID samplerPacked,
                                                 GLenum pname,
                                                 GLfloat *params);
-angle::CallCapture CaptureGetSamplerParameteriv(const Context *context,
+angle::CallCapture CaptureGetSamplerParameteriv(const State &glState,
                                                 bool isCallValid,
                                                 SamplerID samplerPacked,
                                                 GLenum pname,
                                                 GLint *params);
-angle::CallCapture CaptureGetStringi(const Context *context,
+angle::CallCapture CaptureGetStringi(const State &glState,
                                      bool isCallValid,
                                      GLenum name,
                                      GLuint index,
                                      const GLubyte *returnValue);
-angle::CallCapture CaptureGetSynciv(const Context *context,
+angle::CallCapture CaptureGetSynciv(const State &glState,
                                     bool isCallValid,
                                     GLsync sync,
                                     GLenum pname,
                                     GLsizei bufSize,
                                     GLsizei *length,
                                     GLint *values);
-angle::CallCapture CaptureGetTransformFeedbackVarying(const Context *context,
+angle::CallCapture CaptureGetTransformFeedbackVarying(const State &glState,
                                                       bool isCallValid,
                                                       ShaderProgramID programPacked,
                                                       GLuint index,
@@ -314,38 +311,38 @@
                                                       GLsizei *size,
                                                       GLenum *type,
                                                       GLchar *name);
-angle::CallCapture CaptureGetUniformBlockIndex(const Context *context,
+angle::CallCapture CaptureGetUniformBlockIndex(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID programPacked,
                                                const GLchar *uniformBlockName,
                                                GLuint returnValue);
-angle::CallCapture CaptureGetUniformIndices(const Context *context,
+angle::CallCapture CaptureGetUniformIndices(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLsizei uniformCount,
                                             const GLchar *const *uniformNames,
                                             GLuint *uniformIndices);
-angle::CallCapture CaptureGetUniformuiv(const Context *context,
+angle::CallCapture CaptureGetUniformuiv(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked,
                                         GLint location,
                                         GLuint *params);
-angle::CallCapture CaptureGetVertexAttribIiv(const Context *context,
+angle::CallCapture CaptureGetVertexAttribIiv(const State &glState,
                                              bool isCallValid,
                                              GLuint index,
                                              GLenum pname,
                                              GLint *params);
-angle::CallCapture CaptureGetVertexAttribIuiv(const Context *context,
+angle::CallCapture CaptureGetVertexAttribIuiv(const State &glState,
                                               bool isCallValid,
                                               GLuint index,
                                               GLenum pname,
                                               GLuint *params);
-angle::CallCapture CaptureInvalidateFramebuffer(const Context *context,
+angle::CallCapture CaptureInvalidateFramebuffer(const State &glState,
                                                 bool isCallValid,
                                                 GLenum target,
                                                 GLsizei numAttachments,
                                                 const GLenum *attachments);
-angle::CallCapture CaptureInvalidateSubFramebuffer(const Context *context,
+angle::CallCapture CaptureInvalidateSubFramebuffer(const State &glState,
                                                    bool isCallValid,
                                                    GLenum target,
                                                    GLsizei numAttachments,
@@ -354,75 +351,75 @@
                                                    GLint y,
                                                    GLsizei width,
                                                    GLsizei height);
-angle::CallCapture CaptureIsQuery(const Context *context,
+angle::CallCapture CaptureIsQuery(const State &glState,
                                   bool isCallValid,
                                   QueryID idPacked,
                                   GLboolean returnValue);
-angle::CallCapture CaptureIsSampler(const Context *context,
+angle::CallCapture CaptureIsSampler(const State &glState,
                                     bool isCallValid,
                                     SamplerID samplerPacked,
                                     GLboolean returnValue);
-angle::CallCapture CaptureIsSync(const Context *context,
+angle::CallCapture CaptureIsSync(const State &glState,
                                  bool isCallValid,
                                  GLsync sync,
                                  GLboolean returnValue);
-angle::CallCapture CaptureIsTransformFeedback(const Context *context,
+angle::CallCapture CaptureIsTransformFeedback(const State &glState,
                                               bool isCallValid,
                                               TransformFeedbackID idPacked,
                                               GLboolean returnValue);
-angle::CallCapture CaptureIsVertexArray(const Context *context,
+angle::CallCapture CaptureIsVertexArray(const State &glState,
                                         bool isCallValid,
                                         VertexArrayID arrayPacked,
                                         GLboolean returnValue);
-angle::CallCapture CaptureMapBufferRange(const Context *context,
+angle::CallCapture CaptureMapBufferRange(const State &glState,
                                          bool isCallValid,
                                          BufferBinding targetPacked,
                                          GLintptr offset,
                                          GLsizeiptr length,
                                          GLbitfield access,
                                          void *returnValue);
-angle::CallCapture CapturePauseTransformFeedback(const Context *context, bool isCallValid);
-angle::CallCapture CaptureProgramBinary(const Context *context,
+angle::CallCapture CapturePauseTransformFeedback(const State &glState, bool isCallValid);
+angle::CallCapture CaptureProgramBinary(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked,
                                         GLenum binaryFormat,
                                         const void *binary,
                                         GLsizei length);
-angle::CallCapture CaptureProgramParameteri(const Context *context,
+angle::CallCapture CaptureProgramParameteri(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLenum pname,
                                             GLint value);
-angle::CallCapture CaptureReadBuffer(const Context *context, bool isCallValid, GLenum src);
-angle::CallCapture CaptureRenderbufferStorageMultisample(const Context *context,
+angle::CallCapture CaptureReadBuffer(const State &glState, bool isCallValid, GLenum src);
+angle::CallCapture CaptureRenderbufferStorageMultisample(const State &glState,
                                                          bool isCallValid,
                                                          GLenum target,
                                                          GLsizei samples,
                                                          GLenum internalformat,
                                                          GLsizei width,
                                                          GLsizei height);
-angle::CallCapture CaptureResumeTransformFeedback(const Context *context, bool isCallValid);
-angle::CallCapture CaptureSamplerParameterf(const Context *context,
+angle::CallCapture CaptureResumeTransformFeedback(const State &glState, bool isCallValid);
+angle::CallCapture CaptureSamplerParameterf(const State &glState,
                                             bool isCallValid,
                                             SamplerID samplerPacked,
                                             GLenum pname,
                                             GLfloat param);
-angle::CallCapture CaptureSamplerParameterfv(const Context *context,
+angle::CallCapture CaptureSamplerParameterfv(const State &glState,
                                              bool isCallValid,
                                              SamplerID samplerPacked,
                                              GLenum pname,
                                              const GLfloat *param);
-angle::CallCapture CaptureSamplerParameteri(const Context *context,
+angle::CallCapture CaptureSamplerParameteri(const State &glState,
                                             bool isCallValid,
                                             SamplerID samplerPacked,
                                             GLenum pname,
                                             GLint param);
-angle::CallCapture CaptureSamplerParameteriv(const Context *context,
+angle::CallCapture CaptureSamplerParameteriv(const State &glState,
                                              bool isCallValid,
                                              SamplerID samplerPacked,
                                              GLenum pname,
                                              const GLint *param);
-angle::CallCapture CaptureTexImage3D(const Context *context,
+angle::CallCapture CaptureTexImage3D(const State &glState,
                                      bool isCallValid,
                                      TextureTarget targetPacked,
                                      GLint level,
@@ -434,14 +431,14 @@
                                      GLenum format,
                                      GLenum type,
                                      const void *pixels);
-angle::CallCapture CaptureTexStorage2D(const Context *context,
+angle::CallCapture CaptureTexStorage2D(const State &glState,
                                        bool isCallValid,
                                        TextureType targetPacked,
                                        GLsizei levels,
                                        GLenum internalformat,
                                        GLsizei width,
                                        GLsizei height);
-angle::CallCapture CaptureTexStorage3D(const Context *context,
+angle::CallCapture CaptureTexStorage3D(const State &glState,
                                        bool isCallValid,
                                        TextureType targetPacked,
                                        GLsizei levels,
@@ -449,7 +446,7 @@
                                        GLsizei width,
                                        GLsizei height,
                                        GLsizei depth);
-angle::CallCapture CaptureTexSubImage3D(const Context *context,
+angle::CallCapture CaptureTexSubImage3D(const State &glState,
                                         bool isCallValid,
                                         TextureTarget targetPacked,
                                         GLint level,
@@ -462,133 +459,133 @@
                                         GLenum format,
                                         GLenum type,
                                         const void *pixels);
-angle::CallCapture CaptureTransformFeedbackVaryings(const Context *context,
+angle::CallCapture CaptureTransformFeedbackVaryings(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLsizei count,
                                                     const GLchar *const *varyings,
                                                     GLenum bufferMode);
-angle::CallCapture CaptureUniform1ui(const Context *context,
+angle::CallCapture CaptureUniform1ui(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLuint v0);
-angle::CallCapture CaptureUniform1uiv(const Context *context,
+angle::CallCapture CaptureUniform1uiv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
                                       const GLuint *value);
-angle::CallCapture CaptureUniform2ui(const Context *context,
+angle::CallCapture CaptureUniform2ui(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLuint v0,
                                      GLuint v1);
-angle::CallCapture CaptureUniform2uiv(const Context *context,
+angle::CallCapture CaptureUniform2uiv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
                                       const GLuint *value);
-angle::CallCapture CaptureUniform3ui(const Context *context,
+angle::CallCapture CaptureUniform3ui(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLuint v0,
                                      GLuint v1,
                                      GLuint v2);
-angle::CallCapture CaptureUniform3uiv(const Context *context,
+angle::CallCapture CaptureUniform3uiv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
                                       const GLuint *value);
-angle::CallCapture CaptureUniform4ui(const Context *context,
+angle::CallCapture CaptureUniform4ui(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLuint v0,
                                      GLuint v1,
                                      GLuint v2,
                                      GLuint v3);
-angle::CallCapture CaptureUniform4uiv(const Context *context,
+angle::CallCapture CaptureUniform4uiv(const State &glState,
                                       bool isCallValid,
                                       GLint location,
                                       GLsizei count,
                                       const GLuint *value);
-angle::CallCapture CaptureUniformBlockBinding(const Context *context,
+angle::CallCapture CaptureUniformBlockBinding(const State &glState,
                                               bool isCallValid,
                                               ShaderProgramID programPacked,
                                               GLuint uniformBlockIndex,
                                               GLuint uniformBlockBinding);
-angle::CallCapture CaptureUniformMatrix2x3fv(const Context *context,
+angle::CallCapture CaptureUniformMatrix2x3fv(const State &glState,
                                              bool isCallValid,
                                              GLint location,
                                              GLsizei count,
                                              GLboolean transpose,
                                              const GLfloat *value);
-angle::CallCapture CaptureUniformMatrix2x4fv(const Context *context,
+angle::CallCapture CaptureUniformMatrix2x4fv(const State &glState,
                                              bool isCallValid,
                                              GLint location,
                                              GLsizei count,
                                              GLboolean transpose,
                                              const GLfloat *value);
-angle::CallCapture CaptureUniformMatrix3x2fv(const Context *context,
+angle::CallCapture CaptureUniformMatrix3x2fv(const State &glState,
                                              bool isCallValid,
                                              GLint location,
                                              GLsizei count,
                                              GLboolean transpose,
                                              const GLfloat *value);
-angle::CallCapture CaptureUniformMatrix3x4fv(const Context *context,
+angle::CallCapture CaptureUniformMatrix3x4fv(const State &glState,
                                              bool isCallValid,
                                              GLint location,
                                              GLsizei count,
                                              GLboolean transpose,
                                              const GLfloat *value);
-angle::CallCapture CaptureUniformMatrix4x2fv(const Context *context,
+angle::CallCapture CaptureUniformMatrix4x2fv(const State &glState,
                                              bool isCallValid,
                                              GLint location,
                                              GLsizei count,
                                              GLboolean transpose,
                                              const GLfloat *value);
-angle::CallCapture CaptureUniformMatrix4x3fv(const Context *context,
+angle::CallCapture CaptureUniformMatrix4x3fv(const State &glState,
                                              bool isCallValid,
                                              GLint location,
                                              GLsizei count,
                                              GLboolean transpose,
                                              const GLfloat *value);
-angle::CallCapture CaptureUnmapBuffer(const Context *context,
+angle::CallCapture CaptureUnmapBuffer(const State &glState,
                                       bool isCallValid,
                                       BufferBinding targetPacked,
                                       GLboolean returnValue);
-angle::CallCapture CaptureVertexAttribDivisor(const Context *context,
+angle::CallCapture CaptureVertexAttribDivisor(const State &glState,
                                               bool isCallValid,
                                               GLuint index,
                                               GLuint divisor);
-angle::CallCapture CaptureVertexAttribI4i(const Context *context,
+angle::CallCapture CaptureVertexAttribI4i(const State &glState,
                                           bool isCallValid,
                                           GLuint index,
                                           GLint x,
                                           GLint y,
                                           GLint z,
                                           GLint w);
-angle::CallCapture CaptureVertexAttribI4iv(const Context *context,
+angle::CallCapture CaptureVertexAttribI4iv(const State &glState,
                                            bool isCallValid,
                                            GLuint index,
                                            const GLint *v);
-angle::CallCapture CaptureVertexAttribI4ui(const Context *context,
+angle::CallCapture CaptureVertexAttribI4ui(const State &glState,
                                            bool isCallValid,
                                            GLuint index,
                                            GLuint x,
                                            GLuint y,
                                            GLuint z,
                                            GLuint w);
-angle::CallCapture CaptureVertexAttribI4uiv(const Context *context,
+angle::CallCapture CaptureVertexAttribI4uiv(const State &glState,
                                             bool isCallValid,
                                             GLuint index,
                                             const GLuint *v);
-angle::CallCapture CaptureVertexAttribIPointer(const Context *context,
+angle::CallCapture CaptureVertexAttribIPointer(const State &glState,
                                                bool isCallValid,
                                                GLuint index,
                                                GLint size,
                                                VertexAttribType typePacked,
                                                GLsizei stride,
                                                const void *pointer);
-angle::CallCapture CaptureWaitSync(const Context *context,
+angle::CallCapture CaptureWaitSync(const State &glState,
                                    bool isCallValid,
                                    GLsync sync,
                                    GLbitfield flags,
@@ -596,25 +593,25 @@
 
 // Parameter Captures
 
-void CaptureClearBufferfv_value(const Context *context,
+void CaptureClearBufferfv_value(const State &glState,
                                 bool isCallValid,
                                 GLenum buffer,
                                 GLint drawbuffer,
                                 const GLfloat *value,
                                 angle::ParamCapture *paramCapture);
-void CaptureClearBufferiv_value(const Context *context,
+void CaptureClearBufferiv_value(const State &glState,
                                 bool isCallValid,
                                 GLenum buffer,
                                 GLint drawbuffer,
                                 const GLint *value,
                                 angle::ParamCapture *paramCapture);
-void CaptureClearBufferuiv_value(const Context *context,
+void CaptureClearBufferuiv_value(const State &glState,
                                  bool isCallValid,
                                  GLenum buffer,
                                  GLint drawbuffer,
                                  const GLuint *value,
                                  angle::ParamCapture *paramCapture);
-void CaptureCompressedTexImage3D_data(const Context *context,
+void CaptureCompressedTexImage3D_data(const State &glState,
                                       bool isCallValid,
                                       TextureTarget targetPacked,
                                       GLint level,
@@ -626,7 +623,7 @@
                                       GLsizei imageSize,
                                       const void *data,
                                       angle::ParamCapture *paramCapture);
-void CaptureCompressedTexSubImage3D_data(const Context *context,
+void CaptureCompressedTexSubImage3D_data(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -640,32 +637,32 @@
                                          GLsizei imageSize,
                                          const void *data,
                                          angle::ParamCapture *paramCapture);
-void CaptureDeleteQueries_idsPacked(const Context *context,
+void CaptureDeleteQueries_idsPacked(const State &glState,
                                     bool isCallValid,
                                     GLsizei n,
                                     const QueryID *idsPacked,
                                     angle::ParamCapture *paramCapture);
-void CaptureDeleteSamplers_samplersPacked(const Context *context,
+void CaptureDeleteSamplers_samplersPacked(const State &glState,
                                           bool isCallValid,
                                           GLsizei count,
                                           const SamplerID *samplersPacked,
                                           angle::ParamCapture *paramCapture);
-void CaptureDeleteTransformFeedbacks_idsPacked(const Context *context,
+void CaptureDeleteTransformFeedbacks_idsPacked(const State &glState,
                                                bool isCallValid,
                                                GLsizei n,
                                                const TransformFeedbackID *idsPacked,
                                                angle::ParamCapture *paramCapture);
-void CaptureDeleteVertexArrays_arraysPacked(const Context *context,
+void CaptureDeleteVertexArrays_arraysPacked(const State &glState,
                                             bool isCallValid,
                                             GLsizei n,
                                             const VertexArrayID *arraysPacked,
                                             angle::ParamCapture *paramCapture);
-void CaptureDrawBuffers_bufs(const Context *context,
+void CaptureDrawBuffers_bufs(const State &glState,
                              bool isCallValid,
                              GLsizei n,
                              const GLenum *bufs,
                              angle::ParamCapture *paramCapture);
-void CaptureDrawElementsInstanced_indices(const Context *context,
+void CaptureDrawElementsInstanced_indices(const State &glState,
                                           bool isCallValid,
                                           PrimitiveMode modePacked,
                                           GLsizei count,
@@ -673,7 +670,7 @@
                                           const void *indices,
                                           GLsizei instancecount,
                                           angle::ParamCapture *paramCapture);
-void CaptureDrawRangeElements_indices(const Context *context,
+void CaptureDrawRangeElements_indices(const State &glState,
                                       bool isCallValid,
                                       PrimitiveMode modePacked,
                                       GLuint start,
@@ -682,27 +679,27 @@
                                       DrawElementsType typePacked,
                                       const void *indices,
                                       angle::ParamCapture *paramCapture);
-void CaptureGenQueries_idsPacked(const Context *context,
+void CaptureGenQueries_idsPacked(const State &glState,
                                  bool isCallValid,
                                  GLsizei n,
                                  QueryID *idsPacked,
                                  angle::ParamCapture *paramCapture);
-void CaptureGenSamplers_samplersPacked(const Context *context,
+void CaptureGenSamplers_samplersPacked(const State &glState,
                                        bool isCallValid,
                                        GLsizei count,
                                        SamplerID *samplersPacked,
                                        angle::ParamCapture *paramCapture);
-void CaptureGenTransformFeedbacks_idsPacked(const Context *context,
+void CaptureGenTransformFeedbacks_idsPacked(const State &glState,
                                             bool isCallValid,
                                             GLsizei n,
                                             TransformFeedbackID *idsPacked,
                                             angle::ParamCapture *paramCapture);
-void CaptureGenVertexArrays_arraysPacked(const Context *context,
+void CaptureGenVertexArrays_arraysPacked(const State &glState,
                                          bool isCallValid,
                                          GLsizei n,
                                          VertexArrayID *arraysPacked,
                                          angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniformBlockName_length(const Context *context,
+void CaptureGetActiveUniformBlockName_length(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLuint uniformBlockIndex,
@@ -710,7 +707,7 @@
                                              GLsizei *length,
                                              GLchar *uniformBlockName,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniformBlockName_uniformBlockName(const Context *context,
+void CaptureGetActiveUniformBlockName_uniformBlockName(const State &glState,
                                                        bool isCallValid,
                                                        ShaderProgramID programPacked,
                                                        GLuint uniformBlockIndex,
@@ -718,14 +715,14 @@
                                                        GLsizei *length,
                                                        GLchar *uniformBlockName,
                                                        angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniformBlockiv_params(const Context *context,
+void CaptureGetActiveUniformBlockiv_params(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLuint uniformBlockIndex,
                                            GLenum pname,
                                            GLint *params,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniformsiv_uniformIndices(const Context *context,
+void CaptureGetActiveUniformsiv_uniformIndices(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID programPacked,
                                                GLsizei uniformCount,
@@ -733,7 +730,7 @@
                                                GLenum pname,
                                                GLint *params,
                                                angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniformsiv_params(const Context *context,
+void CaptureGetActiveUniformsiv_params(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLsizei uniformCount,
@@ -741,41 +738,41 @@
                                        GLenum pname,
                                        GLint *params,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetBufferParameteri64v_params(const Context *context,
+void CaptureGetBufferParameteri64v_params(const State &glState,
                                           bool isCallValid,
                                           BufferBinding targetPacked,
                                           GLenum pname,
                                           GLint64 *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetBufferPointerv_params(const Context *context,
+void CaptureGetBufferPointerv_params(const State &glState,
                                      bool isCallValid,
                                      BufferBinding targetPacked,
                                      GLenum pname,
                                      void **params,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetFragDataLocation_name(const Context *context,
+void CaptureGetFragDataLocation_name(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      const GLchar *name,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetInteger64i_v_data(const Context *context,
+void CaptureGetInteger64i_v_data(const State &glState,
                                  bool isCallValid,
                                  GLenum target,
                                  GLuint index,
                                  GLint64 *data,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetInteger64v_data(const Context *context,
+void CaptureGetInteger64v_data(const State &glState,
                                bool isCallValid,
                                GLenum pname,
                                GLint64 *data,
                                angle::ParamCapture *paramCapture);
-void CaptureGetIntegeri_v_data(const Context *context,
+void CaptureGetIntegeri_v_data(const State &glState,
                                bool isCallValid,
                                GLenum target,
                                GLuint index,
                                GLint *data,
                                angle::ParamCapture *paramCapture);
-void CaptureGetInternalformativ_params(const Context *context,
+void CaptureGetInternalformativ_params(const State &glState,
                                        bool isCallValid,
                                        GLenum target,
                                        GLenum internalformat,
@@ -783,7 +780,7 @@
                                        GLsizei bufSize,
                                        GLint *params,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetProgramBinary_length(const Context *context,
+void CaptureGetProgramBinary_length(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLsizei bufSize,
@@ -791,7 +788,7 @@
                                     GLenum *binaryFormat,
                                     void *binary,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetProgramBinary_binaryFormat(const Context *context,
+void CaptureGetProgramBinary_binaryFormat(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID programPacked,
                                           GLsizei bufSize,
@@ -799,7 +796,7 @@
                                           GLenum *binaryFormat,
                                           void *binary,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetProgramBinary_binary(const Context *context,
+void CaptureGetProgramBinary_binary(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLsizei bufSize,
@@ -807,31 +804,31 @@
                                     GLenum *binaryFormat,
                                     void *binary,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectuiv_params(const Context *context,
+void CaptureGetQueryObjectuiv_params(const State &glState,
                                      bool isCallValid,
                                      QueryID idPacked,
                                      GLenum pname,
                                      GLuint *params,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetQueryiv_params(const Context *context,
+void CaptureGetQueryiv_params(const State &glState,
                               bool isCallValid,
                               QueryType targetPacked,
                               GLenum pname,
                               GLint *params,
                               angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterfv_params(const Context *context,
+void CaptureGetSamplerParameterfv_params(const State &glState,
                                          bool isCallValid,
                                          SamplerID samplerPacked,
                                          GLenum pname,
                                          GLfloat *params,
                                          angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameteriv_params(const Context *context,
+void CaptureGetSamplerParameteriv_params(const State &glState,
                                          bool isCallValid,
                                          SamplerID samplerPacked,
                                          GLenum pname,
                                          GLint *params,
                                          angle::ParamCapture *paramCapture);
-void CaptureGetSynciv_length(const Context *context,
+void CaptureGetSynciv_length(const State &glState,
                              bool isCallValid,
                              GLsync sync,
                              GLenum pname,
@@ -839,7 +836,7 @@
                              GLsizei *length,
                              GLint *values,
                              angle::ParamCapture *paramCapture);
-void CaptureGetSynciv_values(const Context *context,
+void CaptureGetSynciv_values(const State &glState,
                              bool isCallValid,
                              GLsync sync,
                              GLenum pname,
@@ -847,7 +844,7 @@
                              GLsizei *length,
                              GLint *values,
                              angle::ParamCapture *paramCapture);
-void CaptureGetTransformFeedbackVarying_length(const Context *context,
+void CaptureGetTransformFeedbackVarying_length(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID programPacked,
                                                GLuint index,
@@ -857,7 +854,7 @@
                                                GLenum *type,
                                                GLchar *name,
                                                angle::ParamCapture *paramCapture);
-void CaptureGetTransformFeedbackVarying_size(const Context *context,
+void CaptureGetTransformFeedbackVarying_size(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLuint index,
@@ -867,7 +864,7 @@
                                              GLenum *type,
                                              GLchar *name,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetTransformFeedbackVarying_type(const Context *context,
+void CaptureGetTransformFeedbackVarying_type(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLuint index,
@@ -877,7 +874,7 @@
                                              GLenum *type,
                                              GLchar *name,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetTransformFeedbackVarying_name(const Context *context,
+void CaptureGetTransformFeedbackVarying_name(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLuint index,
@@ -887,50 +884,50 @@
                                              GLenum *type,
                                              GLchar *name,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetUniformBlockIndex_uniformBlockName(const Context *context,
+void CaptureGetUniformBlockIndex_uniformBlockName(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   const GLchar *uniformBlockName,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetUniformIndices_uniformNames(const Context *context,
+void CaptureGetUniformIndices_uniformNames(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLsizei uniformCount,
                                            const GLchar *const *uniformNames,
                                            GLuint *uniformIndices,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetUniformIndices_uniformIndices(const Context *context,
+void CaptureGetUniformIndices_uniformIndices(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLsizei uniformCount,
                                              const GLchar *const *uniformNames,
                                              GLuint *uniformIndices,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetUniformuiv_params(const Context *context,
+void CaptureGetUniformuiv_params(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLint location,
                                  GLuint *params,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribIiv_params(const Context *context,
+void CaptureGetVertexAttribIiv_params(const State &glState,
                                       bool isCallValid,
                                       GLuint index,
                                       GLenum pname,
                                       GLint *params,
                                       angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribIuiv_params(const Context *context,
+void CaptureGetVertexAttribIuiv_params(const State &glState,
                                        bool isCallValid,
                                        GLuint index,
                                        GLenum pname,
                                        GLuint *params,
                                        angle::ParamCapture *paramCapture);
-void CaptureInvalidateFramebuffer_attachments(const Context *context,
+void CaptureInvalidateFramebuffer_attachments(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLsizei numAttachments,
                                               const GLenum *attachments,
                                               angle::ParamCapture *paramCapture);
-void CaptureInvalidateSubFramebuffer_attachments(const Context *context,
+void CaptureInvalidateSubFramebuffer_attachments(const State &glState,
                                                  bool isCallValid,
                                                  GLenum target,
                                                  GLsizei numAttachments,
@@ -940,26 +937,26 @@
                                                  GLsizei width,
                                                  GLsizei height,
                                                  angle::ParamCapture *paramCapture);
-void CaptureProgramBinary_binary(const Context *context,
+void CaptureProgramBinary_binary(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLenum binaryFormat,
                                  const void *binary,
                                  GLsizei length,
                                  angle::ParamCapture *paramCapture);
-void CaptureSamplerParameterfv_param(const Context *context,
+void CaptureSamplerParameterfv_param(const State &glState,
                                      bool isCallValid,
                                      SamplerID samplerPacked,
                                      GLenum pname,
                                      const GLfloat *param,
                                      angle::ParamCapture *paramCapture);
-void CaptureSamplerParameteriv_param(const Context *context,
+void CaptureSamplerParameteriv_param(const State &glState,
                                      bool isCallValid,
                                      SamplerID samplerPacked,
                                      GLenum pname,
                                      const GLint *param,
                                      angle::ParamCapture *paramCapture);
-void CaptureTexImage3D_pixels(const Context *context,
+void CaptureTexImage3D_pixels(const State &glState,
                               bool isCallValid,
                               TextureTarget targetPacked,
                               GLint level,
@@ -972,7 +969,7 @@
                               GLenum type,
                               const void *pixels,
                               angle::ParamCapture *paramCapture);
-void CaptureTexSubImage3D_pixels(const Context *context,
+void CaptureTexSubImage3D_pixels(const State &glState,
                                  bool isCallValid,
                                  TextureTarget targetPacked,
                                  GLint level,
@@ -986,90 +983,90 @@
                                  GLenum type,
                                  const void *pixels,
                                  angle::ParamCapture *paramCapture);
-void CaptureTransformFeedbackVaryings_varyings(const Context *context,
+void CaptureTransformFeedbackVaryings_varyings(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID programPacked,
                                                GLsizei count,
                                                const GLchar *const *varyings,
                                                GLenum bufferMode,
                                                angle::ParamCapture *paramCapture);
-void CaptureUniform1uiv_value(const Context *context,
+void CaptureUniform1uiv_value(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
                               const GLuint *value,
                               angle::ParamCapture *paramCapture);
-void CaptureUniform2uiv_value(const Context *context,
+void CaptureUniform2uiv_value(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
                               const GLuint *value,
                               angle::ParamCapture *paramCapture);
-void CaptureUniform3uiv_value(const Context *context,
+void CaptureUniform3uiv_value(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
                               const GLuint *value,
                               angle::ParamCapture *paramCapture);
-void CaptureUniform4uiv_value(const Context *context,
+void CaptureUniform4uiv_value(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
                               const GLuint *value,
                               angle::ParamCapture *paramCapture);
-void CaptureUniformMatrix2x3fv_value(const Context *context,
+void CaptureUniformMatrix2x3fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      GLboolean transpose,
                                      const GLfloat *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureUniformMatrix2x4fv_value(const Context *context,
+void CaptureUniformMatrix2x4fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      GLboolean transpose,
                                      const GLfloat *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureUniformMatrix3x2fv_value(const Context *context,
+void CaptureUniformMatrix3x2fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      GLboolean transpose,
                                      const GLfloat *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureUniformMatrix3x4fv_value(const Context *context,
+void CaptureUniformMatrix3x4fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      GLboolean transpose,
                                      const GLfloat *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureUniformMatrix4x2fv_value(const Context *context,
+void CaptureUniformMatrix4x2fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      GLboolean transpose,
                                      const GLfloat *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureUniformMatrix4x3fv_value(const Context *context,
+void CaptureUniformMatrix4x3fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
                                      GLboolean transpose,
                                      const GLfloat *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureVertexAttribI4iv_v(const Context *context,
+void CaptureVertexAttribI4iv_v(const State &glState,
                                bool isCallValid,
                                GLuint index,
                                const GLint *v,
                                angle::ParamCapture *paramCapture);
-void CaptureVertexAttribI4uiv_v(const Context *context,
+void CaptureVertexAttribI4uiv_v(const State &glState,
                                 bool isCallValid,
                                 GLuint index,
                                 const GLuint *v,
                                 angle::ParamCapture *paramCapture);
-void CaptureVertexAttribIPointer_pointer(const Context *context,
+void CaptureVertexAttribIPointer_pointer(const State &glState,
                                          bool isCallValid,
                                          GLuint index,
                                          GLint size,
diff --git a/src/libANGLE/capture_gles_3_0_params.cpp b/src/libANGLE/capture_gles_3_0_params.cpp
index d73c431..1029437 100644
--- a/src/libANGLE/capture_gles_3_0_params.cpp
+++ b/src/libANGLE/capture_gles_3_0_params.cpp
@@ -12,7 +12,7 @@
 
 namespace gl
 {
-void CaptureClearBufferfv_value(const Context *context,
+void CaptureClearBufferfv_value(const State &glState,
                                 bool isCallValid,
                                 GLenum buffer,
                                 GLint drawbuffer,
@@ -22,7 +22,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureClearBufferiv_value(const Context *context,
+void CaptureClearBufferiv_value(const State &glState,
                                 bool isCallValid,
                                 GLenum buffer,
                                 GLint drawbuffer,
@@ -32,7 +32,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureClearBufferuiv_value(const Context *context,
+void CaptureClearBufferuiv_value(const State &glState,
                                  bool isCallValid,
                                  GLenum buffer,
                                  GLint drawbuffer,
@@ -42,7 +42,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCompressedTexImage3D_data(const Context *context,
+void CaptureCompressedTexImage3D_data(const State &glState,
                                       bool isCallValid,
                                       TextureTarget targetPacked,
                                       GLint level,
@@ -58,7 +58,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCompressedTexSubImage3D_data(const Context *context,
+void CaptureCompressedTexSubImage3D_data(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -76,7 +76,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDeleteQueries_idsPacked(const Context *context,
+void CaptureDeleteQueries_idsPacked(const State &glState,
                                     bool isCallValid,
                                     GLsizei n,
                                     const QueryID *ids,
@@ -85,7 +85,7 @@
     CaptureMemory(ids, sizeof(QueryID) * n, paramCapture);
 }
 
-void CaptureDeleteSamplers_samplersPacked(const Context *context,
+void CaptureDeleteSamplers_samplersPacked(const State &glState,
                                           bool isCallValid,
                                           GLsizei count,
                                           const SamplerID *samplers,
@@ -94,7 +94,7 @@
     CaptureMemory(samplers, sizeof(SamplerID) * count, paramCapture);
 }
 
-void CaptureDeleteTransformFeedbacks_idsPacked(const Context *context,
+void CaptureDeleteTransformFeedbacks_idsPacked(const State &glState,
                                                bool isCallValid,
                                                GLsizei n,
                                                const TransformFeedbackID *ids,
@@ -103,7 +103,7 @@
     CaptureMemory(ids, sizeof(TransformFeedbackID) * n, paramCapture);
 }
 
-void CaptureDeleteVertexArrays_arraysPacked(const Context *context,
+void CaptureDeleteVertexArrays_arraysPacked(const State &glState,
                                             bool isCallValid,
                                             GLsizei n,
                                             const VertexArrayID *arrays,
@@ -112,7 +112,7 @@
     CaptureMemory(arrays, sizeof(VertexArrayID) * n, paramCapture);
 }
 
-void CaptureDrawBuffers_bufs(const Context *context,
+void CaptureDrawBuffers_bufs(const State &glState,
                              bool isCallValid,
                              GLsizei n,
                              const GLenum *bufs,
@@ -121,7 +121,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawElementsInstanced_indices(const Context *context,
+void CaptureDrawElementsInstanced_indices(const State &glState,
                                           bool isCallValid,
                                           PrimitiveMode modePacked,
                                           GLsizei count,
@@ -133,7 +133,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawRangeElements_indices(const Context *context,
+void CaptureDrawRangeElements_indices(const State &glState,
                                       bool isCallValid,
                                       PrimitiveMode modePacked,
                                       GLuint start,
@@ -146,7 +146,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGenQueries_idsPacked(const Context *context,
+void CaptureGenQueries_idsPacked(const State &glState,
                                  bool isCallValid,
                                  GLsizei n,
                                  QueryID *ids,
@@ -155,7 +155,7 @@
     CaptureGenHandles(n, ids, paramCapture);
 }
 
-void CaptureGenSamplers_samplersPacked(const Context *context,
+void CaptureGenSamplers_samplersPacked(const State &glState,
                                        bool isCallValid,
                                        GLsizei count,
                                        SamplerID *samplers,
@@ -164,7 +164,7 @@
     CaptureGenHandles(count, samplers, paramCapture);
 }
 
-void CaptureGenTransformFeedbacks_idsPacked(const Context *context,
+void CaptureGenTransformFeedbacks_idsPacked(const State &glState,
                                             bool isCallValid,
                                             GLsizei n,
                                             TransformFeedbackID *ids,
@@ -173,7 +173,7 @@
     CaptureGenHandles(n, ids, paramCapture);
 }
 
-void CaptureGenVertexArrays_arraysPacked(const Context *context,
+void CaptureGenVertexArrays_arraysPacked(const State &glState,
                                          bool isCallValid,
                                          GLsizei n,
                                          VertexArrayID *arrays,
@@ -182,7 +182,7 @@
     CaptureGenHandles(n, arrays, paramCapture);
 }
 
-void CaptureGetActiveUniformBlockName_length(const Context *context,
+void CaptureGetActiveUniformBlockName_length(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLuint uniformBlockIndex,
@@ -194,7 +194,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniformBlockName_uniformBlockName(const Context *context,
+void CaptureGetActiveUniformBlockName_uniformBlockName(const State &glState,
                                                        bool isCallValid,
                                                        ShaderProgramID program,
                                                        GLuint uniformBlockIndex,
@@ -206,7 +206,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniformBlockiv_params(const Context *context,
+void CaptureGetActiveUniformBlockiv_params(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID program,
                                            GLuint uniformBlockIndex,
@@ -217,7 +217,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniformsiv_uniformIndices(const Context *context,
+void CaptureGetActiveUniformsiv_uniformIndices(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID program,
                                                GLsizei uniformCount,
@@ -229,7 +229,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniformsiv_params(const Context *context,
+void CaptureGetActiveUniformsiv_params(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID program,
                                        GLsizei uniformCount,
@@ -241,7 +241,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBufferParameteri64v_params(const Context *context,
+void CaptureGetBufferParameteri64v_params(const State &glState,
                                           bool isCallValid,
                                           BufferBinding targetPacked,
                                           GLenum pname,
@@ -251,7 +251,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBufferPointerv_params(const Context *context,
+void CaptureGetBufferPointerv_params(const State &glState,
                                      bool isCallValid,
                                      BufferBinding targetPacked,
                                      GLenum pname,
@@ -261,7 +261,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFragDataLocation_name(const Context *context,
+void CaptureGetFragDataLocation_name(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID program,
                                      const GLchar *name,
@@ -270,7 +270,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetInteger64i_v_data(const Context *context,
+void CaptureGetInteger64i_v_data(const State &glState,
                                  bool isCallValid,
                                  GLenum target,
                                  GLuint index,
@@ -280,7 +280,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetInteger64v_data(const Context *context,
+void CaptureGetInteger64v_data(const State &glState,
                                bool isCallValid,
                                GLenum pname,
                                GLint64 *data,
@@ -289,7 +289,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetIntegeri_v_data(const Context *context,
+void CaptureGetIntegeri_v_data(const State &glState,
                                bool isCallValid,
                                GLenum target,
                                GLuint index,
@@ -299,7 +299,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetInternalformativ_params(const Context *context,
+void CaptureGetInternalformativ_params(const State &glState,
                                        bool isCallValid,
                                        GLenum target,
                                        GLenum internalformat,
@@ -311,7 +311,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramBinary_length(const Context *context,
+void CaptureGetProgramBinary_length(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLsizei bufSize,
@@ -323,7 +323,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramBinary_binaryFormat(const Context *context,
+void CaptureGetProgramBinary_binaryFormat(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID program,
                                           GLsizei bufSize,
@@ -335,7 +335,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramBinary_binary(const Context *context,
+void CaptureGetProgramBinary_binary(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLsizei bufSize,
@@ -347,7 +347,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectuiv_params(const Context *context,
+void CaptureGetQueryObjectuiv_params(const State &glState,
                                      bool isCallValid,
                                      QueryID id,
                                      GLenum pname,
@@ -357,7 +357,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryiv_params(const Context *context,
+void CaptureGetQueryiv_params(const State &glState,
                               bool isCallValid,
                               QueryType targetPacked,
                               GLenum pname,
@@ -367,7 +367,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterfv_params(const Context *context,
+void CaptureGetSamplerParameterfv_params(const State &glState,
                                          bool isCallValid,
                                          SamplerID sampler,
                                          GLenum pname,
@@ -377,7 +377,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameteriv_params(const Context *context,
+void CaptureGetSamplerParameteriv_params(const State &glState,
                                          bool isCallValid,
                                          SamplerID sampler,
                                          GLenum pname,
@@ -387,7 +387,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSynciv_length(const Context *context,
+void CaptureGetSynciv_length(const State &glState,
                              bool isCallValid,
                              GLsync sync,
                              GLenum pname,
@@ -399,7 +399,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSynciv_values(const Context *context,
+void CaptureGetSynciv_values(const State &glState,
                              bool isCallValid,
                              GLsync sync,
                              GLenum pname,
@@ -411,7 +411,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTransformFeedbackVarying_length(const Context *context,
+void CaptureGetTransformFeedbackVarying_length(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID program,
                                                GLuint index,
@@ -425,7 +425,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTransformFeedbackVarying_size(const Context *context,
+void CaptureGetTransformFeedbackVarying_size(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLuint index,
@@ -439,7 +439,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTransformFeedbackVarying_type(const Context *context,
+void CaptureGetTransformFeedbackVarying_type(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLuint index,
@@ -453,7 +453,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTransformFeedbackVarying_name(const Context *context,
+void CaptureGetTransformFeedbackVarying_name(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLuint index,
@@ -467,7 +467,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformBlockIndex_uniformBlockName(const Context *context,
+void CaptureGetUniformBlockIndex_uniformBlockName(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID program,
                                                   const GLchar *uniformBlockName,
@@ -476,7 +476,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformIndices_uniformNames(const Context *context,
+void CaptureGetUniformIndices_uniformNames(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID program,
                                            GLsizei uniformCount,
@@ -487,7 +487,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformIndices_uniformIndices(const Context *context,
+void CaptureGetUniformIndices_uniformIndices(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLsizei uniformCount,
@@ -498,7 +498,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformuiv_params(const Context *context,
+void CaptureGetUniformuiv_params(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID program,
                                  GLint location,
@@ -508,7 +508,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribIiv_params(const Context *context,
+void CaptureGetVertexAttribIiv_params(const State &glState,
                                       bool isCallValid,
                                       GLuint index,
                                       GLenum pname,
@@ -518,7 +518,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribIuiv_params(const Context *context,
+void CaptureGetVertexAttribIuiv_params(const State &glState,
                                        bool isCallValid,
                                        GLuint index,
                                        GLenum pname,
@@ -528,7 +528,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureInvalidateFramebuffer_attachments(const Context *context,
+void CaptureInvalidateFramebuffer_attachments(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLsizei numAttachments,
@@ -538,7 +538,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureInvalidateSubFramebuffer_attachments(const Context *context,
+void CaptureInvalidateSubFramebuffer_attachments(const State &glState,
                                                  bool isCallValid,
                                                  GLenum target,
                                                  GLsizei numAttachments,
@@ -552,7 +552,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramBinary_binary(const Context *context,
+void CaptureProgramBinary_binary(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID program,
                                  GLenum binaryFormat,
@@ -563,7 +563,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameterfv_param(const Context *context,
+void CaptureSamplerParameterfv_param(const State &glState,
                                      bool isCallValid,
                                      SamplerID sampler,
                                      GLenum pname,
@@ -573,7 +573,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameteriv_param(const Context *context,
+void CaptureSamplerParameteriv_param(const State &glState,
                                      bool isCallValid,
                                      SamplerID sampler,
                                      GLenum pname,
@@ -583,7 +583,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexImage3D_pixels(const Context *context,
+void CaptureTexImage3D_pixels(const State &glState,
                               bool isCallValid,
                               TextureTarget targetPacked,
                               GLint level,
@@ -600,7 +600,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexSubImage3D_pixels(const Context *context,
+void CaptureTexSubImage3D_pixels(const State &glState,
                                  bool isCallValid,
                                  TextureTarget targetPacked,
                                  GLint level,
@@ -618,7 +618,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTransformFeedbackVaryings_varyings(const Context *context,
+void CaptureTransformFeedbackVaryings_varyings(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID program,
                                                GLsizei count,
@@ -629,7 +629,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniform1uiv_value(const Context *context,
+void CaptureUniform1uiv_value(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -639,7 +639,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniform2uiv_value(const Context *context,
+void CaptureUniform2uiv_value(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -649,7 +649,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniform3uiv_value(const Context *context,
+void CaptureUniform3uiv_value(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -659,7 +659,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniform4uiv_value(const Context *context,
+void CaptureUniform4uiv_value(const State &glState,
                               bool isCallValid,
                               GLint location,
                               GLsizei count,
@@ -669,7 +669,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniformMatrix2x3fv_value(const Context *context,
+void CaptureUniformMatrix2x3fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
@@ -680,7 +680,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniformMatrix2x4fv_value(const Context *context,
+void CaptureUniformMatrix2x4fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
@@ -691,7 +691,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniformMatrix3x2fv_value(const Context *context,
+void CaptureUniformMatrix3x2fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
@@ -702,7 +702,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniformMatrix3x4fv_value(const Context *context,
+void CaptureUniformMatrix3x4fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
@@ -713,7 +713,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniformMatrix4x2fv_value(const Context *context,
+void CaptureUniformMatrix4x2fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
@@ -724,7 +724,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureUniformMatrix4x3fv_value(const Context *context,
+void CaptureUniformMatrix4x3fv_value(const State &glState,
                                      bool isCallValid,
                                      GLint location,
                                      GLsizei count,
@@ -735,7 +735,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureVertexAttribI4iv_v(const Context *context,
+void CaptureVertexAttribI4iv_v(const State &glState,
                                bool isCallValid,
                                GLuint index,
                                const GLint *v,
@@ -744,7 +744,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureVertexAttribI4uiv_v(const Context *context,
+void CaptureVertexAttribI4uiv_v(const State &glState,
                                 bool isCallValid,
                                 GLuint index,
                                 const GLuint *v,
@@ -753,7 +753,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureVertexAttribIPointer_pointer(const Context *context,
+void CaptureVertexAttribIPointer_pointer(const State &glState,
                                          bool isCallValid,
                                          GLuint index,
                                          GLint size,
diff --git a/src/libANGLE/capture_gles_3_1_autogen.cpp b/src/libANGLE/capture_gles_3_1_autogen.cpp
index 160ed77..9f661cc 100644
--- a/src/libANGLE/capture_gles_3_1_autogen.cpp
+++ b/src/libANGLE/capture_gles_3_1_autogen.cpp
@@ -20,7 +20,7 @@
 namespace gl
 {
 
-CallCapture CaptureActiveShaderProgram(const Context *context,
+CallCapture CaptureActiveShaderProgram(const State &glState,
                                        bool isCallValid,
                                        ProgramPipelineID pipelinePacked,
                                        ShaderProgramID programPacked)
@@ -33,7 +33,7 @@
     return CallCapture(gl::EntryPoint::ActiveShaderProgram, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindImageTexture(const Context *context,
+CallCapture CaptureBindImageTexture(const State &glState,
                                     bool isCallValid,
                                     GLuint unit,
                                     TextureID texturePacked,
@@ -56,7 +56,7 @@
     return CallCapture(gl::EntryPoint::BindImageTexture, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindProgramPipeline(const Context *context,
+CallCapture CaptureBindProgramPipeline(const State &glState,
                                        bool isCallValid,
                                        ProgramPipelineID pipelinePacked)
 {
@@ -67,7 +67,7 @@
     return CallCapture(gl::EntryPoint::BindProgramPipeline, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindVertexBuffer(const Context *context,
+CallCapture CaptureBindVertexBuffer(const State &glState,
                                     bool isCallValid,
                                     GLuint bindingindex,
                                     BufferID bufferPacked,
@@ -84,7 +84,7 @@
     return CallCapture(gl::EntryPoint::BindVertexBuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureCreateShaderProgramv(const Context *context,
+CallCapture CaptureCreateShaderProgramv(const State &glState,
                                         bool isCallValid,
                                         ShaderType typePacked,
                                         GLsizei count,
@@ -98,7 +98,7 @@
 
     ParamCapture stringsParam("strings", ParamType::TGLcharConstPointerPointer);
     InitParamValue(ParamType::TGLcharConstPointerPointer, strings, &stringsParam.value);
-    CaptureCreateShaderProgramv_strings(context, isCallValid, typePacked, count, strings,
+    CaptureCreateShaderProgramv_strings(glState, isCallValid, typePacked, count, strings,
                                         &stringsParam);
     paramBuffer.addParam(std::move(stringsParam));
 
@@ -109,7 +109,7 @@
     return CallCapture(gl::EntryPoint::CreateShaderProgramv, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteProgramPipelines(const Context *context,
+CallCapture CaptureDeleteProgramPipelines(const State &glState,
                                           bool isCallValid,
                                           GLsizei n,
                                           const ProgramPipelineID *pipelinesPacked)
@@ -121,14 +121,14 @@
     ParamCapture pipelinesPackedParam("pipelinesPacked", ParamType::TProgramPipelineIDConstPointer);
     InitParamValue(ParamType::TProgramPipelineIDConstPointer, pipelinesPacked,
                    &pipelinesPackedParam.value);
-    CaptureDeleteProgramPipelines_pipelinesPacked(context, isCallValid, n, pipelinesPacked,
+    CaptureDeleteProgramPipelines_pipelinesPacked(glState, isCallValid, n, pipelinesPacked,
                                                   &pipelinesPackedParam);
     paramBuffer.addParam(std::move(pipelinesPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteProgramPipelines, std::move(paramBuffer));
 }
 
-CallCapture CaptureDispatchCompute(const Context *context,
+CallCapture CaptureDispatchCompute(const State &glState,
                                    bool isCallValid,
                                    GLuint num_groups_x,
                                    GLuint num_groups_y,
@@ -143,7 +143,7 @@
     return CallCapture(gl::EntryPoint::DispatchCompute, std::move(paramBuffer));
 }
 
-CallCapture CaptureDispatchComputeIndirect(const Context *context,
+CallCapture CaptureDispatchComputeIndirect(const State &glState,
                                            bool isCallValid,
                                            GLintptr indirect)
 {
@@ -154,7 +154,7 @@
     return CallCapture(gl::EntryPoint::DispatchComputeIndirect, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawArraysIndirect(const Context *context,
+CallCapture CaptureDrawArraysIndirect(const State &glState,
                                       bool isCallValid,
                                       PrimitiveMode modePacked,
                                       const void *indirect)
@@ -165,13 +165,13 @@
 
     ParamCapture indirectParam("indirect", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indirect, &indirectParam.value);
-    CaptureDrawArraysIndirect_indirect(context, isCallValid, modePacked, indirect, &indirectParam);
+    CaptureDrawArraysIndirect_indirect(glState, isCallValid, modePacked, indirect, &indirectParam);
     paramBuffer.addParam(std::move(indirectParam));
 
     return CallCapture(gl::EntryPoint::DrawArraysIndirect, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawElementsIndirect(const Context *context,
+CallCapture CaptureDrawElementsIndirect(const State &glState,
                                         bool isCallValid,
                                         PrimitiveMode modePacked,
                                         DrawElementsType typePacked,
@@ -184,14 +184,14 @@
 
     ParamCapture indirectParam("indirect", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indirect, &indirectParam.value);
-    CaptureDrawElementsIndirect_indirect(context, isCallValid, modePacked, typePacked, indirect,
+    CaptureDrawElementsIndirect_indirect(glState, isCallValid, modePacked, typePacked, indirect,
                                          &indirectParam);
     paramBuffer.addParam(std::move(indirectParam));
 
     return CallCapture(gl::EntryPoint::DrawElementsIndirect, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferParameteri(const Context *context,
+CallCapture CaptureFramebufferParameteri(const State &glState,
                                          bool isCallValid,
                                          GLenum target,
                                          GLenum pname,
@@ -207,7 +207,7 @@
     return CallCapture(gl::EntryPoint::FramebufferParameteri, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenProgramPipelines(const Context *context,
+CallCapture CaptureGenProgramPipelines(const State &glState,
                                        bool isCallValid,
                                        GLsizei n,
                                        ProgramPipelineID *pipelinesPacked)
@@ -219,14 +219,14 @@
     ParamCapture pipelinesPackedParam("pipelinesPacked", ParamType::TProgramPipelineIDPointer);
     InitParamValue(ParamType::TProgramPipelineIDPointer, pipelinesPacked,
                    &pipelinesPackedParam.value);
-    CaptureGenProgramPipelines_pipelinesPacked(context, isCallValid, n, pipelinesPacked,
+    CaptureGenProgramPipelines_pipelinesPacked(glState, isCallValid, n, pipelinesPacked,
                                                &pipelinesPackedParam);
     paramBuffer.addParam(std::move(pipelinesPackedParam));
 
     return CallCapture(gl::EntryPoint::GenProgramPipelines, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBooleani_v(const Context *context,
+CallCapture CaptureGetBooleani_v(const State &glState,
                                  bool isCallValid,
                                  GLenum target,
                                  GLuint index,
@@ -239,13 +239,13 @@
 
     ParamCapture dataParam("data", ParamType::TGLbooleanPointer);
     InitParamValue(ParamType::TGLbooleanPointer, data, &dataParam.value);
-    CaptureGetBooleani_v_data(context, isCallValid, target, index, data, &dataParam);
+    CaptureGetBooleani_v_data(glState, isCallValid, target, index, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetBooleani_v, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFramebufferParameteriv(const Context *context,
+CallCapture CaptureGetFramebufferParameteriv(const State &glState,
                                              bool isCallValid,
                                              GLenum target,
                                              GLenum pname,
@@ -259,14 +259,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetFramebufferParameteriv_params(context, isCallValid, target, pname, params,
+    CaptureGetFramebufferParameteriv_params(glState, isCallValid, target, pname, params,
                                             &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetFramebufferParameteriv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetMultisamplefv(const Context *context,
+CallCapture CaptureGetMultisamplefv(const State &glState,
                                     bool isCallValid,
                                     GLenum pname,
                                     GLuint index,
@@ -279,13 +279,13 @@
 
     ParamCapture valParam("val", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, val, &valParam.value);
-    CaptureGetMultisamplefv_val(context, isCallValid, pname, index, val, &valParam);
+    CaptureGetMultisamplefv_val(glState, isCallValid, pname, index, val, &valParam);
     paramBuffer.addParam(std::move(valParam));
 
     return CallCapture(gl::EntryPoint::GetMultisamplefv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramInterfaceiv(const Context *context,
+CallCapture CaptureGetProgramInterfaceiv(const State &glState,
                                          bool isCallValid,
                                          ShaderProgramID programPacked,
                                          GLenum programInterface,
@@ -302,14 +302,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetProgramInterfaceiv_params(context, isCallValid, programPacked, programInterface,
+    CaptureGetProgramInterfaceiv_params(glState, isCallValid, programPacked, programInterface,
                                         pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetProgramInterfaceiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramPipelineInfoLog(const Context *context,
+CallCapture CaptureGetProgramPipelineInfoLog(const State &glState,
                                              bool isCallValid,
                                              ProgramPipelineID pipelinePacked,
                                              GLsizei bufSize,
@@ -323,20 +323,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetProgramPipelineInfoLog_length(context, isCallValid, pipelinePacked, bufSize, length,
+    CaptureGetProgramPipelineInfoLog_length(glState, isCallValid, pipelinePacked, bufSize, length,
                                             infoLog, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture infoLogParam("infoLog", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, infoLog, &infoLogParam.value);
-    CaptureGetProgramPipelineInfoLog_infoLog(context, isCallValid, pipelinePacked, bufSize, length,
+    CaptureGetProgramPipelineInfoLog_infoLog(glState, isCallValid, pipelinePacked, bufSize, length,
                                              infoLog, &infoLogParam);
     paramBuffer.addParam(std::move(infoLogParam));
 
     return CallCapture(gl::EntryPoint::GetProgramPipelineInfoLog, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramPipelineiv(const Context *context,
+CallCapture CaptureGetProgramPipelineiv(const State &glState,
                                         bool isCallValid,
                                         ProgramPipelineID pipelinePacked,
                                         GLenum pname,
@@ -350,14 +350,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetProgramPipelineiv_params(context, isCallValid, pipelinePacked, pname, params,
+    CaptureGetProgramPipelineiv_params(glState, isCallValid, pipelinePacked, pname, params,
                                        &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetProgramPipelineiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramResourceIndex(const Context *context,
+CallCapture CaptureGetProgramResourceIndex(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLenum programInterface,
@@ -372,7 +372,7 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureGetProgramResourceIndex_name(context, isCallValid, programPacked, programInterface, name,
+    CaptureGetProgramResourceIndex_name(glState, isCallValid, programPacked, programInterface, name,
                                         &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
@@ -383,7 +383,7 @@
     return CallCapture(gl::EntryPoint::GetProgramResourceIndex, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramResourceLocation(const Context *context,
+CallCapture CaptureGetProgramResourceLocation(const State &glState,
                                               bool isCallValid,
                                               ShaderProgramID programPacked,
                                               GLenum programInterface,
@@ -398,7 +398,7 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureGetProgramResourceLocation_name(context, isCallValid, programPacked, programInterface,
+    CaptureGetProgramResourceLocation_name(glState, isCallValid, programPacked, programInterface,
                                            name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
@@ -409,7 +409,7 @@
     return CallCapture(gl::EntryPoint::GetProgramResourceLocation, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramResourceName(const Context *context,
+CallCapture CaptureGetProgramResourceName(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID programPacked,
                                           GLenum programInterface,
@@ -428,20 +428,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetProgramResourceName_length(context, isCallValid, programPacked, programInterface,
+    CaptureGetProgramResourceName_length(glState, isCallValid, programPacked, programInterface,
                                          index, bufSize, length, name, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture nameParam("name", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, name, &nameParam.value);
-    CaptureGetProgramResourceName_name(context, isCallValid, programPacked, programInterface, index,
+    CaptureGetProgramResourceName_name(glState, isCallValid, programPacked, programInterface, index,
                                        bufSize, length, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::GetProgramResourceName, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramResourceiv(const Context *context,
+CallCapture CaptureGetProgramResourceiv(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked,
                                         GLenum programInterface,
@@ -462,7 +462,7 @@
 
     ParamCapture propsParam("props", ParamType::TGLenumConstPointer);
     InitParamValue(ParamType::TGLenumConstPointer, props, &propsParam.value);
-    CaptureGetProgramResourceiv_props(context, isCallValid, programPacked, programInterface, index,
+    CaptureGetProgramResourceiv_props(glState, isCallValid, programPacked, programInterface, index,
                                       propCount, props, bufSize, length, params, &propsParam);
     paramBuffer.addParam(std::move(propsParam));
 
@@ -470,20 +470,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetProgramResourceiv_length(context, isCallValid, programPacked, programInterface, index,
+    CaptureGetProgramResourceiv_length(glState, isCallValid, programPacked, programInterface, index,
                                        propCount, props, bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetProgramResourceiv_params(context, isCallValid, programPacked, programInterface, index,
+    CaptureGetProgramResourceiv_params(glState, isCallValid, programPacked, programInterface, index,
                                        propCount, props, bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetProgramResourceiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexLevelParameterfv(const Context *context,
+CallCapture CaptureGetTexLevelParameterfv(const State &glState,
                                           bool isCallValid,
                                           TextureTarget targetPacked,
                                           GLint level,
@@ -498,14 +498,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetTexLevelParameterfv_params(context, isCallValid, targetPacked, level, pname, params,
+    CaptureGetTexLevelParameterfv_params(glState, isCallValid, targetPacked, level, pname, params,
                                          &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexLevelParameterfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexLevelParameteriv(const Context *context,
+CallCapture CaptureGetTexLevelParameteriv(const State &glState,
                                           bool isCallValid,
                                           TextureTarget targetPacked,
                                           GLint level,
@@ -520,14 +520,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexLevelParameteriv_params(context, isCallValid, targetPacked, level, pname, params,
+    CaptureGetTexLevelParameteriv_params(glState, isCallValid, targetPacked, level, pname, params,
                                          &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexLevelParameteriv, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsProgramPipeline(const Context *context,
+CallCapture CaptureIsProgramPipeline(const State &glState,
                                      bool isCallValid,
                                      ProgramPipelineID pipelinePacked,
                                      GLboolean returnValue)
@@ -543,7 +543,7 @@
     return CallCapture(gl::EntryPoint::IsProgramPipeline, std::move(paramBuffer));
 }
 
-CallCapture CaptureMemoryBarrier(const Context *context, bool isCallValid, GLbitfield barriers)
+CallCapture CaptureMemoryBarrier(const State &glState, bool isCallValid, GLbitfield barriers)
 {
     ParamBuffer paramBuffer;
 
@@ -553,7 +553,7 @@
     return CallCapture(gl::EntryPoint::MemoryBarrier, std::move(paramBuffer));
 }
 
-CallCapture CaptureMemoryBarrierByRegion(const Context *context,
+CallCapture CaptureMemoryBarrierByRegion(const State &glState,
                                          bool isCallValid,
                                          GLbitfield barriers)
 {
@@ -565,7 +565,7 @@
     return CallCapture(gl::EntryPoint::MemoryBarrierByRegion, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform1f(const Context *context,
+CallCapture CaptureProgramUniform1f(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -580,7 +580,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform1f, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform1fv(const Context *context,
+CallCapture CaptureProgramUniform1fv(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -595,14 +595,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniform1fv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform1fv_value(glState, isCallValid, programPacked, location, count, value,
                                    &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform1fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform1i(const Context *context,
+CallCapture CaptureProgramUniform1i(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -617,7 +617,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform1i, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform1iv(const Context *context,
+CallCapture CaptureProgramUniform1iv(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -632,14 +632,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
-    CaptureProgramUniform1iv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform1iv_value(glState, isCallValid, programPacked, location, count, value,
                                    &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform1iv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform1ui(const Context *context,
+CallCapture CaptureProgramUniform1ui(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -654,7 +654,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform1ui, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform1uiv(const Context *context,
+CallCapture CaptureProgramUniform1uiv(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID programPacked,
                                       GLint location,
@@ -669,14 +669,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
-    CaptureProgramUniform1uiv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform1uiv_value(glState, isCallValid, programPacked, location, count, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform1uiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform2f(const Context *context,
+CallCapture CaptureProgramUniform2f(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -693,7 +693,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform2f, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform2fv(const Context *context,
+CallCapture CaptureProgramUniform2fv(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -708,14 +708,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniform2fv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform2fv_value(glState, isCallValid, programPacked, location, count, value,
                                    &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform2fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform2i(const Context *context,
+CallCapture CaptureProgramUniform2i(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -732,7 +732,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform2i, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform2iv(const Context *context,
+CallCapture CaptureProgramUniform2iv(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -747,14 +747,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
-    CaptureProgramUniform2iv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform2iv_value(glState, isCallValid, programPacked, location, count, value,
                                    &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform2iv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform2ui(const Context *context,
+CallCapture CaptureProgramUniform2ui(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -771,7 +771,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform2ui, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform2uiv(const Context *context,
+CallCapture CaptureProgramUniform2uiv(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID programPacked,
                                       GLint location,
@@ -786,14 +786,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
-    CaptureProgramUniform2uiv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform2uiv_value(glState, isCallValid, programPacked, location, count, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform2uiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform3f(const Context *context,
+CallCapture CaptureProgramUniform3f(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -812,7 +812,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform3f, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform3fv(const Context *context,
+CallCapture CaptureProgramUniform3fv(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -827,14 +827,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniform3fv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform3fv_value(glState, isCallValid, programPacked, location, count, value,
                                    &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform3fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform3i(const Context *context,
+CallCapture CaptureProgramUniform3i(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -853,7 +853,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform3i, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform3iv(const Context *context,
+CallCapture CaptureProgramUniform3iv(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -868,14 +868,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
-    CaptureProgramUniform3iv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform3iv_value(glState, isCallValid, programPacked, location, count, value,
                                    &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform3iv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform3ui(const Context *context,
+CallCapture CaptureProgramUniform3ui(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -894,7 +894,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform3ui, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform3uiv(const Context *context,
+CallCapture CaptureProgramUniform3uiv(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID programPacked,
                                       GLint location,
@@ -909,14 +909,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
-    CaptureProgramUniform3uiv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform3uiv_value(glState, isCallValid, programPacked, location, count, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform3uiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform4f(const Context *context,
+CallCapture CaptureProgramUniform4f(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -937,7 +937,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform4f, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform4fv(const Context *context,
+CallCapture CaptureProgramUniform4fv(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -952,14 +952,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniform4fv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform4fv_value(glState, isCallValid, programPacked, location, count, value,
                                    &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform4fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform4i(const Context *context,
+CallCapture CaptureProgramUniform4i(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -980,7 +980,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform4i, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform4iv(const Context *context,
+CallCapture CaptureProgramUniform4iv(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -995,14 +995,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
-    CaptureProgramUniform4iv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform4iv_value(glState, isCallValid, programPacked, location, count, value,
                                    &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform4iv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform4ui(const Context *context,
+CallCapture CaptureProgramUniform4ui(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
@@ -1023,7 +1023,7 @@
     return CallCapture(gl::EntryPoint::ProgramUniform4ui, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniform4uiv(const Context *context,
+CallCapture CaptureProgramUniform4uiv(const State &glState,
                                       bool isCallValid,
                                       ShaderProgramID programPacked,
                                       GLint location,
@@ -1038,14 +1038,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
-    CaptureProgramUniform4uiv_value(context, isCallValid, programPacked, location, count, value,
+    CaptureProgramUniform4uiv_value(glState, isCallValid, programPacked, location, count, value,
                                     &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniform4uiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniformMatrix2fv(const Context *context,
+CallCapture CaptureProgramUniformMatrix2fv(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -1062,14 +1062,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniformMatrix2fv_value(context, isCallValid, programPacked, location, count,
+    CaptureProgramUniformMatrix2fv_value(glState, isCallValid, programPacked, location, count,
                                          transpose, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniformMatrix2fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniformMatrix2x3fv(const Context *context,
+CallCapture CaptureProgramUniformMatrix2x3fv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
@@ -1086,14 +1086,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniformMatrix2x3fv_value(context, isCallValid, programPacked, location, count,
+    CaptureProgramUniformMatrix2x3fv_value(glState, isCallValid, programPacked, location, count,
                                            transpose, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniformMatrix2x3fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniformMatrix2x4fv(const Context *context,
+CallCapture CaptureProgramUniformMatrix2x4fv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
@@ -1110,14 +1110,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniformMatrix2x4fv_value(context, isCallValid, programPacked, location, count,
+    CaptureProgramUniformMatrix2x4fv_value(glState, isCallValid, programPacked, location, count,
                                            transpose, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniformMatrix2x4fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniformMatrix3fv(const Context *context,
+CallCapture CaptureProgramUniformMatrix3fv(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -1134,14 +1134,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniformMatrix3fv_value(context, isCallValid, programPacked, location, count,
+    CaptureProgramUniformMatrix3fv_value(glState, isCallValid, programPacked, location, count,
                                          transpose, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniformMatrix3fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniformMatrix3x2fv(const Context *context,
+CallCapture CaptureProgramUniformMatrix3x2fv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
@@ -1158,14 +1158,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniformMatrix3x2fv_value(context, isCallValid, programPacked, location, count,
+    CaptureProgramUniformMatrix3x2fv_value(glState, isCallValid, programPacked, location, count,
                                            transpose, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniformMatrix3x2fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniformMatrix3x4fv(const Context *context,
+CallCapture CaptureProgramUniformMatrix3x4fv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
@@ -1182,14 +1182,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniformMatrix3x4fv_value(context, isCallValid, programPacked, location, count,
+    CaptureProgramUniformMatrix3x4fv_value(glState, isCallValid, programPacked, location, count,
                                            transpose, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniformMatrix3x4fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniformMatrix4fv(const Context *context,
+CallCapture CaptureProgramUniformMatrix4fv(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -1206,14 +1206,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniformMatrix4fv_value(context, isCallValid, programPacked, location, count,
+    CaptureProgramUniformMatrix4fv_value(glState, isCallValid, programPacked, location, count,
                                          transpose, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniformMatrix4fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniformMatrix4x2fv(const Context *context,
+CallCapture CaptureProgramUniformMatrix4x2fv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
@@ -1230,14 +1230,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniformMatrix4x2fv_value(context, isCallValid, programPacked, location, count,
+    CaptureProgramUniformMatrix4x2fv_value(glState, isCallValid, programPacked, location, count,
                                            transpose, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniformMatrix4x2fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramUniformMatrix4x3fv(const Context *context,
+CallCapture CaptureProgramUniformMatrix4x3fv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
@@ -1254,14 +1254,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
-    CaptureProgramUniformMatrix4x3fv_value(context, isCallValid, programPacked, location, count,
+    CaptureProgramUniformMatrix4x3fv_value(glState, isCallValid, programPacked, location, count,
                                            transpose, value, &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::ProgramUniformMatrix4x3fv, std::move(paramBuffer));
 }
 
-CallCapture CaptureSampleMaski(const Context *context,
+CallCapture CaptureSampleMaski(const State &glState,
                                bool isCallValid,
                                GLuint maskNumber,
                                GLbitfield mask)
@@ -1274,7 +1274,7 @@
     return CallCapture(gl::EntryPoint::SampleMaski, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorage2DMultisample(const Context *context,
+CallCapture CaptureTexStorage2DMultisample(const State &glState,
                                            bool isCallValid,
                                            TextureType targetPacked,
                                            GLsizei samples,
@@ -1296,7 +1296,7 @@
     return CallCapture(gl::EntryPoint::TexStorage2DMultisample, std::move(paramBuffer));
 }
 
-CallCapture CaptureUseProgramStages(const Context *context,
+CallCapture CaptureUseProgramStages(const State &glState,
                                     bool isCallValid,
                                     ProgramPipelineID pipelinePacked,
                                     GLbitfield stages,
@@ -1312,7 +1312,7 @@
     return CallCapture(gl::EntryPoint::UseProgramStages, std::move(paramBuffer));
 }
 
-CallCapture CaptureValidateProgramPipeline(const Context *context,
+CallCapture CaptureValidateProgramPipeline(const State &glState,
                                            bool isCallValid,
                                            ProgramPipelineID pipelinePacked)
 {
@@ -1323,7 +1323,7 @@
     return CallCapture(gl::EntryPoint::ValidateProgramPipeline, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribBinding(const Context *context,
+CallCapture CaptureVertexAttribBinding(const State &glState,
                                        bool isCallValid,
                                        GLuint attribindex,
                                        GLuint bindingindex)
@@ -1336,7 +1336,7 @@
     return CallCapture(gl::EntryPoint::VertexAttribBinding, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribFormat(const Context *context,
+CallCapture CaptureVertexAttribFormat(const State &glState,
                                       bool isCallValid,
                                       GLuint attribindex,
                                       GLint size,
@@ -1355,7 +1355,7 @@
     return CallCapture(gl::EntryPoint::VertexAttribFormat, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribIFormat(const Context *context,
+CallCapture CaptureVertexAttribIFormat(const State &glState,
                                        bool isCallValid,
                                        GLuint attribindex,
                                        GLint size,
@@ -1372,7 +1372,7 @@
     return CallCapture(gl::EntryPoint::VertexAttribIFormat, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexBindingDivisor(const Context *context,
+CallCapture CaptureVertexBindingDivisor(const State &glState,
                                         bool isCallValid,
                                         GLuint bindingindex,
                                         GLuint divisor)
diff --git a/src/libANGLE/capture_gles_3_1_autogen.h b/src/libANGLE/capture_gles_3_1_autogen.h
index 6f580ac..adc768f 100644
--- a/src/libANGLE/capture_gles_3_1_autogen.h
+++ b/src/libANGLE/capture_gles_3_1_autogen.h
@@ -16,15 +16,14 @@
 
 namespace gl
 {
-class Context;
 
 // Method Captures
 
-angle::CallCapture CaptureActiveShaderProgram(const Context *context,
+angle::CallCapture CaptureActiveShaderProgram(const State &glState,
                                               bool isCallValid,
                                               ProgramPipelineID pipelinePacked,
                                               ShaderProgramID programPacked);
-angle::CallCapture CaptureBindImageTexture(const Context *context,
+angle::CallCapture CaptureBindImageTexture(const State &glState,
                                            bool isCallValid,
                                            GLuint unit,
                                            TextureID texturePacked,
@@ -33,96 +32,96 @@
                                            GLint layer,
                                            GLenum access,
                                            GLenum format);
-angle::CallCapture CaptureBindProgramPipeline(const Context *context,
+angle::CallCapture CaptureBindProgramPipeline(const State &glState,
                                               bool isCallValid,
                                               ProgramPipelineID pipelinePacked);
-angle::CallCapture CaptureBindVertexBuffer(const Context *context,
+angle::CallCapture CaptureBindVertexBuffer(const State &glState,
                                            bool isCallValid,
                                            GLuint bindingindex,
                                            BufferID bufferPacked,
                                            GLintptr offset,
                                            GLsizei stride);
-angle::CallCapture CaptureCreateShaderProgramv(const Context *context,
+angle::CallCapture CaptureCreateShaderProgramv(const State &glState,
                                                bool isCallValid,
                                                ShaderType typePacked,
                                                GLsizei count,
                                                const GLchar *const *strings,
                                                GLuint returnValue);
-angle::CallCapture CaptureDeleteProgramPipelines(const Context *context,
+angle::CallCapture CaptureDeleteProgramPipelines(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei n,
                                                  const ProgramPipelineID *pipelinesPacked);
-angle::CallCapture CaptureDispatchCompute(const Context *context,
+angle::CallCapture CaptureDispatchCompute(const State &glState,
                                           bool isCallValid,
                                           GLuint num_groups_x,
                                           GLuint num_groups_y,
                                           GLuint num_groups_z);
-angle::CallCapture CaptureDispatchComputeIndirect(const Context *context,
+angle::CallCapture CaptureDispatchComputeIndirect(const State &glState,
                                                   bool isCallValid,
                                                   GLintptr indirect);
-angle::CallCapture CaptureDrawArraysIndirect(const Context *context,
+angle::CallCapture CaptureDrawArraysIndirect(const State &glState,
                                              bool isCallValid,
                                              PrimitiveMode modePacked,
                                              const void *indirect);
-angle::CallCapture CaptureDrawElementsIndirect(const Context *context,
+angle::CallCapture CaptureDrawElementsIndirect(const State &glState,
                                                bool isCallValid,
                                                PrimitiveMode modePacked,
                                                DrawElementsType typePacked,
                                                const void *indirect);
-angle::CallCapture CaptureFramebufferParameteri(const Context *context,
+angle::CallCapture CaptureFramebufferParameteri(const State &glState,
                                                 bool isCallValid,
                                                 GLenum target,
                                                 GLenum pname,
                                                 GLint param);
-angle::CallCapture CaptureGenProgramPipelines(const Context *context,
+angle::CallCapture CaptureGenProgramPipelines(const State &glState,
                                               bool isCallValid,
                                               GLsizei n,
                                               ProgramPipelineID *pipelinesPacked);
-angle::CallCapture CaptureGetBooleani_v(const Context *context,
+angle::CallCapture CaptureGetBooleani_v(const State &glState,
                                         bool isCallValid,
                                         GLenum target,
                                         GLuint index,
                                         GLboolean *data);
-angle::CallCapture CaptureGetFramebufferParameteriv(const Context *context,
+angle::CallCapture CaptureGetFramebufferParameteriv(const State &glState,
                                                     bool isCallValid,
                                                     GLenum target,
                                                     GLenum pname,
                                                     GLint *params);
-angle::CallCapture CaptureGetMultisamplefv(const Context *context,
+angle::CallCapture CaptureGetMultisamplefv(const State &glState,
                                            bool isCallValid,
                                            GLenum pname,
                                            GLuint index,
                                            GLfloat *val);
-angle::CallCapture CaptureGetProgramInterfaceiv(const Context *context,
+angle::CallCapture CaptureGetProgramInterfaceiv(const State &glState,
                                                 bool isCallValid,
                                                 ShaderProgramID programPacked,
                                                 GLenum programInterface,
                                                 GLenum pname,
                                                 GLint *params);
-angle::CallCapture CaptureGetProgramPipelineInfoLog(const Context *context,
+angle::CallCapture CaptureGetProgramPipelineInfoLog(const State &glState,
                                                     bool isCallValid,
                                                     ProgramPipelineID pipelinePacked,
                                                     GLsizei bufSize,
                                                     GLsizei *length,
                                                     GLchar *infoLog);
-angle::CallCapture CaptureGetProgramPipelineiv(const Context *context,
+angle::CallCapture CaptureGetProgramPipelineiv(const State &glState,
                                                bool isCallValid,
                                                ProgramPipelineID pipelinePacked,
                                                GLenum pname,
                                                GLint *params);
-angle::CallCapture CaptureGetProgramResourceIndex(const Context *context,
+angle::CallCapture CaptureGetProgramResourceIndex(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLenum programInterface,
                                                   const GLchar *name,
                                                   GLuint returnValue);
-angle::CallCapture CaptureGetProgramResourceLocation(const Context *context,
+angle::CallCapture CaptureGetProgramResourceLocation(const State &glState,
                                                      bool isCallValid,
                                                      ShaderProgramID programPacked,
                                                      GLenum programInterface,
                                                      const GLchar *name,
                                                      GLint returnValue);
-angle::CallCapture CaptureGetProgramResourceName(const Context *context,
+angle::CallCapture CaptureGetProgramResourceName(const State &glState,
                                                  bool isCallValid,
                                                  ShaderProgramID programPacked,
                                                  GLenum programInterface,
@@ -130,7 +129,7 @@
                                                  GLsizei bufSize,
                                                  GLsizei *length,
                                                  GLchar *name);
-angle::CallCapture CaptureGetProgramResourceiv(const Context *context,
+angle::CallCapture CaptureGetProgramResourceiv(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID programPacked,
                                                GLenum programInterface,
@@ -140,137 +139,137 @@
                                                GLsizei bufSize,
                                                GLsizei *length,
                                                GLint *params);
-angle::CallCapture CaptureGetTexLevelParameterfv(const Context *context,
+angle::CallCapture CaptureGetTexLevelParameterfv(const State &glState,
                                                  bool isCallValid,
                                                  TextureTarget targetPacked,
                                                  GLint level,
                                                  GLenum pname,
                                                  GLfloat *params);
-angle::CallCapture CaptureGetTexLevelParameteriv(const Context *context,
+angle::CallCapture CaptureGetTexLevelParameteriv(const State &glState,
                                                  bool isCallValid,
                                                  TextureTarget targetPacked,
                                                  GLint level,
                                                  GLenum pname,
                                                  GLint *params);
-angle::CallCapture CaptureIsProgramPipeline(const Context *context,
+angle::CallCapture CaptureIsProgramPipeline(const State &glState,
                                             bool isCallValid,
                                             ProgramPipelineID pipelinePacked,
                                             GLboolean returnValue);
-angle::CallCapture CaptureMemoryBarrier(const Context *context,
+angle::CallCapture CaptureMemoryBarrier(const State &glState,
                                         bool isCallValid,
                                         GLbitfield barriers);
-angle::CallCapture CaptureMemoryBarrierByRegion(const Context *context,
+angle::CallCapture CaptureMemoryBarrierByRegion(const State &glState,
                                                 bool isCallValid,
                                                 GLbitfield barriers);
-angle::CallCapture CaptureProgramUniform1f(const Context *context,
+angle::CallCapture CaptureProgramUniform1f(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
                                            GLfloat v0);
-angle::CallCapture CaptureProgramUniform1fv(const Context *context,
+angle::CallCapture CaptureProgramUniform1fv(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLsizei count,
                                             const GLfloat *value);
-angle::CallCapture CaptureProgramUniform1i(const Context *context,
+angle::CallCapture CaptureProgramUniform1i(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
                                            GLint v0);
-angle::CallCapture CaptureProgramUniform1iv(const Context *context,
+angle::CallCapture CaptureProgramUniform1iv(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLsizei count,
                                             const GLint *value);
-angle::CallCapture CaptureProgramUniform1ui(const Context *context,
+angle::CallCapture CaptureProgramUniform1ui(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLuint v0);
-angle::CallCapture CaptureProgramUniform1uiv(const Context *context,
+angle::CallCapture CaptureProgramUniform1uiv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
                                              GLsizei count,
                                              const GLuint *value);
-angle::CallCapture CaptureProgramUniform2f(const Context *context,
+angle::CallCapture CaptureProgramUniform2f(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
                                            GLfloat v0,
                                            GLfloat v1);
-angle::CallCapture CaptureProgramUniform2fv(const Context *context,
+angle::CallCapture CaptureProgramUniform2fv(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLsizei count,
                                             const GLfloat *value);
-angle::CallCapture CaptureProgramUniform2i(const Context *context,
+angle::CallCapture CaptureProgramUniform2i(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
                                            GLint v0,
                                            GLint v1);
-angle::CallCapture CaptureProgramUniform2iv(const Context *context,
+angle::CallCapture CaptureProgramUniform2iv(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLsizei count,
                                             const GLint *value);
-angle::CallCapture CaptureProgramUniform2ui(const Context *context,
+angle::CallCapture CaptureProgramUniform2ui(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLuint v0,
                                             GLuint v1);
-angle::CallCapture CaptureProgramUniform2uiv(const Context *context,
+angle::CallCapture CaptureProgramUniform2uiv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
                                              GLsizei count,
                                              const GLuint *value);
-angle::CallCapture CaptureProgramUniform3f(const Context *context,
+angle::CallCapture CaptureProgramUniform3f(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
                                            GLfloat v0,
                                            GLfloat v1,
                                            GLfloat v2);
-angle::CallCapture CaptureProgramUniform3fv(const Context *context,
+angle::CallCapture CaptureProgramUniform3fv(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLsizei count,
                                             const GLfloat *value);
-angle::CallCapture CaptureProgramUniform3i(const Context *context,
+angle::CallCapture CaptureProgramUniform3i(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
                                            GLint v0,
                                            GLint v1,
                                            GLint v2);
-angle::CallCapture CaptureProgramUniform3iv(const Context *context,
+angle::CallCapture CaptureProgramUniform3iv(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLsizei count,
                                             const GLint *value);
-angle::CallCapture CaptureProgramUniform3ui(const Context *context,
+angle::CallCapture CaptureProgramUniform3ui(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLuint v0,
                                             GLuint v1,
                                             GLuint v2);
-angle::CallCapture CaptureProgramUniform3uiv(const Context *context,
+angle::CallCapture CaptureProgramUniform3uiv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
                                              GLsizei count,
                                              const GLuint *value);
-angle::CallCapture CaptureProgramUniform4f(const Context *context,
+angle::CallCapture CaptureProgramUniform4f(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -278,13 +277,13 @@
                                            GLfloat v1,
                                            GLfloat v2,
                                            GLfloat v3);
-angle::CallCapture CaptureProgramUniform4fv(const Context *context,
+angle::CallCapture CaptureProgramUniform4fv(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLsizei count,
                                             const GLfloat *value);
-angle::CallCapture CaptureProgramUniform4i(const Context *context,
+angle::CallCapture CaptureProgramUniform4i(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -292,13 +291,13 @@
                                            GLint v1,
                                            GLint v2,
                                            GLint v3);
-angle::CallCapture CaptureProgramUniform4iv(const Context *context,
+angle::CallCapture CaptureProgramUniform4iv(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
                                             GLsizei count,
                                             const GLint *value);
-angle::CallCapture CaptureProgramUniform4ui(const Context *context,
+angle::CallCapture CaptureProgramUniform4ui(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -306,80 +305,80 @@
                                             GLuint v1,
                                             GLuint v2,
                                             GLuint v3);
-angle::CallCapture CaptureProgramUniform4uiv(const Context *context,
+angle::CallCapture CaptureProgramUniform4uiv(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
                                              GLsizei count,
                                              const GLuint *value);
-angle::CallCapture CaptureProgramUniformMatrix2fv(const Context *context,
+angle::CallCapture CaptureProgramUniformMatrix2fv(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLint location,
                                                   GLsizei count,
                                                   GLboolean transpose,
                                                   const GLfloat *value);
-angle::CallCapture CaptureProgramUniformMatrix2x3fv(const Context *context,
+angle::CallCapture CaptureProgramUniformMatrix2x3fv(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLint location,
                                                     GLsizei count,
                                                     GLboolean transpose,
                                                     const GLfloat *value);
-angle::CallCapture CaptureProgramUniformMatrix2x4fv(const Context *context,
+angle::CallCapture CaptureProgramUniformMatrix2x4fv(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLint location,
                                                     GLsizei count,
                                                     GLboolean transpose,
                                                     const GLfloat *value);
-angle::CallCapture CaptureProgramUniformMatrix3fv(const Context *context,
+angle::CallCapture CaptureProgramUniformMatrix3fv(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLint location,
                                                   GLsizei count,
                                                   GLboolean transpose,
                                                   const GLfloat *value);
-angle::CallCapture CaptureProgramUniformMatrix3x2fv(const Context *context,
+angle::CallCapture CaptureProgramUniformMatrix3x2fv(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLint location,
                                                     GLsizei count,
                                                     GLboolean transpose,
                                                     const GLfloat *value);
-angle::CallCapture CaptureProgramUniformMatrix3x4fv(const Context *context,
+angle::CallCapture CaptureProgramUniformMatrix3x4fv(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLint location,
                                                     GLsizei count,
                                                     GLboolean transpose,
                                                     const GLfloat *value);
-angle::CallCapture CaptureProgramUniformMatrix4fv(const Context *context,
+angle::CallCapture CaptureProgramUniformMatrix4fv(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLint location,
                                                   GLsizei count,
                                                   GLboolean transpose,
                                                   const GLfloat *value);
-angle::CallCapture CaptureProgramUniformMatrix4x2fv(const Context *context,
+angle::CallCapture CaptureProgramUniformMatrix4x2fv(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLint location,
                                                     GLsizei count,
                                                     GLboolean transpose,
                                                     const GLfloat *value);
-angle::CallCapture CaptureProgramUniformMatrix4x3fv(const Context *context,
+angle::CallCapture CaptureProgramUniformMatrix4x3fv(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLint location,
                                                     GLsizei count,
                                                     GLboolean transpose,
                                                     const GLfloat *value);
-angle::CallCapture CaptureSampleMaski(const Context *context,
+angle::CallCapture CaptureSampleMaski(const State &glState,
                                       bool isCallValid,
                                       GLuint maskNumber,
                                       GLbitfield mask);
-angle::CallCapture CaptureTexStorage2DMultisample(const Context *context,
+angle::CallCapture CaptureTexStorage2DMultisample(const State &glState,
                                                   bool isCallValid,
                                                   TextureType targetPacked,
                                                   GLsizei samples,
@@ -387,123 +386,123 @@
                                                   GLsizei width,
                                                   GLsizei height,
                                                   GLboolean fixedsamplelocations);
-angle::CallCapture CaptureUseProgramStages(const Context *context,
+angle::CallCapture CaptureUseProgramStages(const State &glState,
                                            bool isCallValid,
                                            ProgramPipelineID pipelinePacked,
                                            GLbitfield stages,
                                            ShaderProgramID programPacked);
-angle::CallCapture CaptureValidateProgramPipeline(const Context *context,
+angle::CallCapture CaptureValidateProgramPipeline(const State &glState,
                                                   bool isCallValid,
                                                   ProgramPipelineID pipelinePacked);
-angle::CallCapture CaptureVertexAttribBinding(const Context *context,
+angle::CallCapture CaptureVertexAttribBinding(const State &glState,
                                               bool isCallValid,
                                               GLuint attribindex,
                                               GLuint bindingindex);
-angle::CallCapture CaptureVertexAttribFormat(const Context *context,
+angle::CallCapture CaptureVertexAttribFormat(const State &glState,
                                              bool isCallValid,
                                              GLuint attribindex,
                                              GLint size,
                                              VertexAttribType typePacked,
                                              GLboolean normalized,
                                              GLuint relativeoffset);
-angle::CallCapture CaptureVertexAttribIFormat(const Context *context,
+angle::CallCapture CaptureVertexAttribIFormat(const State &glState,
                                               bool isCallValid,
                                               GLuint attribindex,
                                               GLint size,
                                               VertexAttribType typePacked,
                                               GLuint relativeoffset);
-angle::CallCapture CaptureVertexBindingDivisor(const Context *context,
+angle::CallCapture CaptureVertexBindingDivisor(const State &glState,
                                                bool isCallValid,
                                                GLuint bindingindex,
                                                GLuint divisor);
 
 // Parameter Captures
 
-void CaptureCreateShaderProgramv_strings(const Context *context,
+void CaptureCreateShaderProgramv_strings(const State &glState,
                                          bool isCallValid,
                                          ShaderType typePacked,
                                          GLsizei count,
                                          const GLchar *const *strings,
                                          angle::ParamCapture *paramCapture);
-void CaptureDeleteProgramPipelines_pipelinesPacked(const Context *context,
+void CaptureDeleteProgramPipelines_pipelinesPacked(const State &glState,
                                                    bool isCallValid,
                                                    GLsizei n,
                                                    const ProgramPipelineID *pipelinesPacked,
                                                    angle::ParamCapture *paramCapture);
-void CaptureDrawArraysIndirect_indirect(const Context *context,
+void CaptureDrawArraysIndirect_indirect(const State &glState,
                                         bool isCallValid,
                                         PrimitiveMode modePacked,
                                         const void *indirect,
                                         angle::ParamCapture *paramCapture);
-void CaptureDrawElementsIndirect_indirect(const Context *context,
+void CaptureDrawElementsIndirect_indirect(const State &glState,
                                           bool isCallValid,
                                           PrimitiveMode modePacked,
                                           DrawElementsType typePacked,
                                           const void *indirect,
                                           angle::ParamCapture *paramCapture);
-void CaptureGenProgramPipelines_pipelinesPacked(const Context *context,
+void CaptureGenProgramPipelines_pipelinesPacked(const State &glState,
                                                 bool isCallValid,
                                                 GLsizei n,
                                                 ProgramPipelineID *pipelinesPacked,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetBooleani_v_data(const Context *context,
+void CaptureGetBooleani_v_data(const State &glState,
                                bool isCallValid,
                                GLenum target,
                                GLuint index,
                                GLboolean *data,
                                angle::ParamCapture *paramCapture);
-void CaptureGetFramebufferParameteriv_params(const Context *context,
+void CaptureGetFramebufferParameteriv_params(const State &glState,
                                              bool isCallValid,
                                              GLenum target,
                                              GLenum pname,
                                              GLint *params,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetMultisamplefv_val(const Context *context,
+void CaptureGetMultisamplefv_val(const State &glState,
                                  bool isCallValid,
                                  GLenum pname,
                                  GLuint index,
                                  GLfloat *val,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetProgramInterfaceiv_params(const Context *context,
+void CaptureGetProgramInterfaceiv_params(const State &glState,
                                          bool isCallValid,
                                          ShaderProgramID programPacked,
                                          GLenum programInterface,
                                          GLenum pname,
                                          GLint *params,
                                          angle::ParamCapture *paramCapture);
-void CaptureGetProgramPipelineInfoLog_length(const Context *context,
+void CaptureGetProgramPipelineInfoLog_length(const State &glState,
                                              bool isCallValid,
                                              ProgramPipelineID pipelinePacked,
                                              GLsizei bufSize,
                                              GLsizei *length,
                                              GLchar *infoLog,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetProgramPipelineInfoLog_infoLog(const Context *context,
+void CaptureGetProgramPipelineInfoLog_infoLog(const State &glState,
                                               bool isCallValid,
                                               ProgramPipelineID pipelinePacked,
                                               GLsizei bufSize,
                                               GLsizei *length,
                                               GLchar *infoLog,
                                               angle::ParamCapture *paramCapture);
-void CaptureGetProgramPipelineiv_params(const Context *context,
+void CaptureGetProgramPipelineiv_params(const State &glState,
                                         bool isCallValid,
                                         ProgramPipelineID pipelinePacked,
                                         GLenum pname,
                                         GLint *params,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetProgramResourceIndex_name(const Context *context,
+void CaptureGetProgramResourceIndex_name(const State &glState,
                                          bool isCallValid,
                                          ShaderProgramID programPacked,
                                          GLenum programInterface,
                                          const GLchar *name,
                                          angle::ParamCapture *paramCapture);
-void CaptureGetProgramResourceLocation_name(const Context *context,
+void CaptureGetProgramResourceLocation_name(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLenum programInterface,
                                             const GLchar *name,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetProgramResourceName_length(const Context *context,
+void CaptureGetProgramResourceName_length(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID programPacked,
                                           GLenum programInterface,
@@ -512,7 +511,7 @@
                                           GLsizei *length,
                                           GLchar *name,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetProgramResourceName_name(const Context *context,
+void CaptureGetProgramResourceName_name(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked,
                                         GLenum programInterface,
@@ -521,7 +520,7 @@
                                         GLsizei *length,
                                         GLchar *name,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetProgramResourceiv_props(const Context *context,
+void CaptureGetProgramResourceiv_props(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLenum programInterface,
@@ -532,7 +531,7 @@
                                        GLsizei *length,
                                        GLint *params,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetProgramResourceiv_length(const Context *context,
+void CaptureGetProgramResourceiv_length(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked,
                                         GLenum programInterface,
@@ -543,7 +542,7 @@
                                         GLsizei *length,
                                         GLint *params,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetProgramResourceiv_params(const Context *context,
+void CaptureGetProgramResourceiv_params(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked,
                                         GLenum programInterface,
@@ -554,105 +553,105 @@
                                         GLsizei *length,
                                         GLint *params,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetTexLevelParameterfv_params(const Context *context,
+void CaptureGetTexLevelParameterfv_params(const State &glState,
                                           bool isCallValid,
                                           TextureTarget targetPacked,
                                           GLint level,
                                           GLenum pname,
                                           GLfloat *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetTexLevelParameteriv_params(const Context *context,
+void CaptureGetTexLevelParameteriv_params(const State &glState,
                                           bool isCallValid,
                                           TextureTarget targetPacked,
                                           GLint level,
                                           GLenum pname,
                                           GLint *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureProgramUniform1fv_value(const Context *context,
+void CaptureProgramUniform1fv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei count,
                                     const GLfloat *value,
                                     angle::ParamCapture *paramCapture);
-void CaptureProgramUniform1iv_value(const Context *context,
+void CaptureProgramUniform1iv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei count,
                                     const GLint *value,
                                     angle::ParamCapture *paramCapture);
-void CaptureProgramUniform1uiv_value(const Context *context,
+void CaptureProgramUniform1uiv_value(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
                                      GLsizei count,
                                      const GLuint *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureProgramUniform2fv_value(const Context *context,
+void CaptureProgramUniform2fv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei count,
                                     const GLfloat *value,
                                     angle::ParamCapture *paramCapture);
-void CaptureProgramUniform2iv_value(const Context *context,
+void CaptureProgramUniform2iv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei count,
                                     const GLint *value,
                                     angle::ParamCapture *paramCapture);
-void CaptureProgramUniform2uiv_value(const Context *context,
+void CaptureProgramUniform2uiv_value(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
                                      GLsizei count,
                                      const GLuint *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureProgramUniform3fv_value(const Context *context,
+void CaptureProgramUniform3fv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei count,
                                     const GLfloat *value,
                                     angle::ParamCapture *paramCapture);
-void CaptureProgramUniform3iv_value(const Context *context,
+void CaptureProgramUniform3iv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei count,
                                     const GLint *value,
                                     angle::ParamCapture *paramCapture);
-void CaptureProgramUniform3uiv_value(const Context *context,
+void CaptureProgramUniform3uiv_value(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
                                      GLsizei count,
                                      const GLuint *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureProgramUniform4fv_value(const Context *context,
+void CaptureProgramUniform4fv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei count,
                                     const GLfloat *value,
                                     angle::ParamCapture *paramCapture);
-void CaptureProgramUniform4iv_value(const Context *context,
+void CaptureProgramUniform4iv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei count,
                                     const GLint *value,
                                     angle::ParamCapture *paramCapture);
-void CaptureProgramUniform4uiv_value(const Context *context,
+void CaptureProgramUniform4uiv_value(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      GLint location,
                                      GLsizei count,
                                      const GLuint *value,
                                      angle::ParamCapture *paramCapture);
-void CaptureProgramUniformMatrix2fv_value(const Context *context,
+void CaptureProgramUniformMatrix2fv_value(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID programPacked,
                                           GLint location,
@@ -660,7 +659,7 @@
                                           GLboolean transpose,
                                           const GLfloat *value,
                                           angle::ParamCapture *paramCapture);
-void CaptureProgramUniformMatrix2x3fv_value(const Context *context,
+void CaptureProgramUniformMatrix2x3fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -668,7 +667,7 @@
                                             GLboolean transpose,
                                             const GLfloat *value,
                                             angle::ParamCapture *paramCapture);
-void CaptureProgramUniformMatrix2x4fv_value(const Context *context,
+void CaptureProgramUniformMatrix2x4fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -676,7 +675,7 @@
                                             GLboolean transpose,
                                             const GLfloat *value,
                                             angle::ParamCapture *paramCapture);
-void CaptureProgramUniformMatrix3fv_value(const Context *context,
+void CaptureProgramUniformMatrix3fv_value(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID programPacked,
                                           GLint location,
@@ -684,7 +683,7 @@
                                           GLboolean transpose,
                                           const GLfloat *value,
                                           angle::ParamCapture *paramCapture);
-void CaptureProgramUniformMatrix3x2fv_value(const Context *context,
+void CaptureProgramUniformMatrix3x2fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -692,7 +691,7 @@
                                             GLboolean transpose,
                                             const GLfloat *value,
                                             angle::ParamCapture *paramCapture);
-void CaptureProgramUniformMatrix3x4fv_value(const Context *context,
+void CaptureProgramUniformMatrix3x4fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -700,7 +699,7 @@
                                             GLboolean transpose,
                                             const GLfloat *value,
                                             angle::ParamCapture *paramCapture);
-void CaptureProgramUniformMatrix4fv_value(const Context *context,
+void CaptureProgramUniformMatrix4fv_value(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID programPacked,
                                           GLint location,
@@ -708,7 +707,7 @@
                                           GLboolean transpose,
                                           const GLfloat *value,
                                           angle::ParamCapture *paramCapture);
-void CaptureProgramUniformMatrix4x2fv_value(const Context *context,
+void CaptureProgramUniformMatrix4x2fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -716,7 +715,7 @@
                                             GLboolean transpose,
                                             const GLfloat *value,
                                             angle::ParamCapture *paramCapture);
-void CaptureProgramUniformMatrix4x3fv_value(const Context *context,
+void CaptureProgramUniformMatrix4x3fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
diff --git a/src/libANGLE/capture_gles_3_1_params.cpp b/src/libANGLE/capture_gles_3_1_params.cpp
index 8cadb2b..1da03eb 100644
--- a/src/libANGLE/capture_gles_3_1_params.cpp
+++ b/src/libANGLE/capture_gles_3_1_params.cpp
@@ -13,7 +13,7 @@
 namespace gl
 {
 
-void CaptureCreateShaderProgramv_strings(const Context *context,
+void CaptureCreateShaderProgramv_strings(const State &glState,
                                          bool isCallValid,
                                          ShaderType typePacked,
                                          GLsizei count,
@@ -23,7 +23,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDeleteProgramPipelines_pipelinesPacked(const Context *context,
+void CaptureDeleteProgramPipelines_pipelinesPacked(const State &glState,
                                                    bool isCallValid,
                                                    GLsizei n,
                                                    const ProgramPipelineID *pipelines,
@@ -32,7 +32,7 @@
     CaptureMemory(pipelines, sizeof(ProgramPipelineID) * n, paramCapture);
 }
 
-void CaptureDrawArraysIndirect_indirect(const Context *context,
+void CaptureDrawArraysIndirect_indirect(const State &glState,
                                         bool isCallValid,
                                         PrimitiveMode modePacked,
                                         const void *indirect,
@@ -41,7 +41,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawElementsIndirect_indirect(const Context *context,
+void CaptureDrawElementsIndirect_indirect(const State &glState,
                                           bool isCallValid,
                                           PrimitiveMode modePacked,
                                           DrawElementsType typePacked,
@@ -51,7 +51,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGenProgramPipelines_pipelinesPacked(const Context *context,
+void CaptureGenProgramPipelines_pipelinesPacked(const State &glState,
                                                 bool isCallValid,
                                                 GLsizei n,
                                                 ProgramPipelineID *pipelines,
@@ -60,7 +60,7 @@
     CaptureGenHandles(n, pipelines, paramCapture);
 }
 
-void CaptureGetBooleani_v_data(const Context *context,
+void CaptureGetBooleani_v_data(const State &glState,
                                bool isCallValid,
                                GLenum target,
                                GLuint index,
@@ -70,7 +70,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFramebufferParameteriv_params(const Context *context,
+void CaptureGetFramebufferParameteriv_params(const State &glState,
                                              bool isCallValid,
                                              GLenum target,
                                              GLenum pname,
@@ -80,7 +80,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetMultisamplefv_val(const Context *context,
+void CaptureGetMultisamplefv_val(const State &glState,
                                  bool isCallValid,
                                  GLenum pname,
                                  GLuint index,
@@ -90,7 +90,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramInterfaceiv_params(const Context *context,
+void CaptureGetProgramInterfaceiv_params(const State &glState,
                                          bool isCallValid,
                                          ShaderProgramID program,
                                          GLenum programInterface,
@@ -101,7 +101,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramPipelineInfoLog_length(const Context *context,
+void CaptureGetProgramPipelineInfoLog_length(const State &glState,
                                              bool isCallValid,
                                              ProgramPipelineID pipeline,
                                              GLsizei bufSize,
@@ -112,7 +112,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramPipelineInfoLog_infoLog(const Context *context,
+void CaptureGetProgramPipelineInfoLog_infoLog(const State &glState,
                                               bool isCallValid,
                                               ProgramPipelineID pipeline,
                                               GLsizei bufSize,
@@ -123,7 +123,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramPipelineiv_params(const Context *context,
+void CaptureGetProgramPipelineiv_params(const State &glState,
                                         bool isCallValid,
                                         ProgramPipelineID pipeline,
                                         GLenum pname,
@@ -133,7 +133,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramResourceIndex_name(const Context *context,
+void CaptureGetProgramResourceIndex_name(const State &glState,
                                          bool isCallValid,
                                          ShaderProgramID program,
                                          GLenum programInterface,
@@ -143,7 +143,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramResourceLocation_name(const Context *context,
+void CaptureGetProgramResourceLocation_name(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLenum programInterface,
@@ -153,7 +153,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramResourceName_length(const Context *context,
+void CaptureGetProgramResourceName_length(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID program,
                                           GLenum programInterface,
@@ -166,7 +166,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramResourceName_name(const Context *context,
+void CaptureGetProgramResourceName_name(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID program,
                                         GLenum programInterface,
@@ -179,7 +179,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramResourceiv_props(const Context *context,
+void CaptureGetProgramResourceiv_props(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID program,
                                        GLenum programInterface,
@@ -194,7 +194,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramResourceiv_length(const Context *context,
+void CaptureGetProgramResourceiv_length(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID program,
                                         GLenum programInterface,
@@ -209,7 +209,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramResourceiv_params(const Context *context,
+void CaptureGetProgramResourceiv_params(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID program,
                                         GLenum programInterface,
@@ -224,7 +224,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexLevelParameterfv_params(const Context *context,
+void CaptureGetTexLevelParameterfv_params(const State &glState,
                                           bool isCallValid,
                                           TextureTarget targetPacked,
                                           GLint level,
@@ -235,7 +235,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexLevelParameteriv_params(const Context *context,
+void CaptureGetTexLevelParameteriv_params(const State &glState,
                                           bool isCallValid,
                                           TextureTarget targetPacked,
                                           GLint level,
@@ -246,7 +246,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform1fv_value(const Context *context,
+void CaptureProgramUniform1fv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -257,7 +257,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform1iv_value(const Context *context,
+void CaptureProgramUniform1iv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -268,7 +268,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform1uiv_value(const Context *context,
+void CaptureProgramUniform1uiv_value(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID program,
                                      GLint location,
@@ -279,7 +279,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform2fv_value(const Context *context,
+void CaptureProgramUniform2fv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -290,7 +290,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform2iv_value(const Context *context,
+void CaptureProgramUniform2iv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -301,7 +301,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform2uiv_value(const Context *context,
+void CaptureProgramUniform2uiv_value(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID program,
                                      GLint location,
@@ -312,7 +312,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform3fv_value(const Context *context,
+void CaptureProgramUniform3fv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -323,7 +323,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform3iv_value(const Context *context,
+void CaptureProgramUniform3iv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -334,7 +334,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform3uiv_value(const Context *context,
+void CaptureProgramUniform3uiv_value(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID program,
                                      GLint location,
@@ -345,7 +345,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform4fv_value(const Context *context,
+void CaptureProgramUniform4fv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -356,7 +356,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform4iv_value(const Context *context,
+void CaptureProgramUniform4iv_value(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -367,7 +367,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniform4uiv_value(const Context *context,
+void CaptureProgramUniform4uiv_value(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID program,
                                      GLint location,
@@ -378,7 +378,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniformMatrix2fv_value(const Context *context,
+void CaptureProgramUniformMatrix2fv_value(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID program,
                                           GLint location,
@@ -390,7 +390,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniformMatrix2x3fv_value(const Context *context,
+void CaptureProgramUniformMatrix2x3fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -402,7 +402,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniformMatrix2x4fv_value(const Context *context,
+void CaptureProgramUniformMatrix2x4fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -414,7 +414,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniformMatrix3fv_value(const Context *context,
+void CaptureProgramUniformMatrix3fv_value(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID program,
                                           GLint location,
@@ -426,7 +426,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniformMatrix3x2fv_value(const Context *context,
+void CaptureProgramUniformMatrix3x2fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -438,7 +438,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniformMatrix3x4fv_value(const Context *context,
+void CaptureProgramUniformMatrix3x4fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -450,7 +450,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniformMatrix4fv_value(const Context *context,
+void CaptureProgramUniformMatrix4fv_value(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID program,
                                           GLint location,
@@ -462,7 +462,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniformMatrix4x2fv_value(const Context *context,
+void CaptureProgramUniformMatrix4x2fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -474,7 +474,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramUniformMatrix4x3fv_value(const Context *context,
+void CaptureProgramUniformMatrix4x3fv_value(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
diff --git a/src/libANGLE/capture_gles_3_2_autogen.cpp b/src/libANGLE/capture_gles_3_2_autogen.cpp
index 0a8ec9e..2a096ac 100644
--- a/src/libANGLE/capture_gles_3_2_autogen.cpp
+++ b/src/libANGLE/capture_gles_3_2_autogen.cpp
@@ -20,14 +20,14 @@
 namespace gl
 {
 
-CallCapture CaptureBlendBarrier(const Context *context, bool isCallValid)
+CallCapture CaptureBlendBarrier(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::BlendBarrier, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlendEquationSeparatei(const Context *context,
+CallCapture CaptureBlendEquationSeparatei(const State &glState,
                                           bool isCallValid,
                                           GLuint buf,
                                           GLenum modeRGB,
@@ -44,7 +44,7 @@
     return CallCapture(gl::EntryPoint::BlendEquationSeparatei, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlendEquationi(const Context *context, bool isCallValid, GLuint buf, GLenum mode)
+CallCapture CaptureBlendEquationi(const State &glState, bool isCallValid, GLuint buf, GLenum mode)
 {
     ParamBuffer paramBuffer;
 
@@ -54,7 +54,7 @@
     return CallCapture(gl::EntryPoint::BlendEquationi, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlendFuncSeparatei(const Context *context,
+CallCapture CaptureBlendFuncSeparatei(const State &glState,
                                       bool isCallValid,
                                       GLuint buf,
                                       GLenum srcRGB,
@@ -73,7 +73,7 @@
     return CallCapture(gl::EntryPoint::BlendFuncSeparatei, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlendFunci(const Context *context,
+CallCapture CaptureBlendFunci(const State &glState,
                               bool isCallValid,
                               GLuint buf,
                               GLenum src,
@@ -88,7 +88,7 @@
     return CallCapture(gl::EntryPoint::BlendFunci, std::move(paramBuffer));
 }
 
-CallCapture CaptureColorMaski(const Context *context,
+CallCapture CaptureColorMaski(const State &glState,
                               bool isCallValid,
                               GLuint index,
                               GLboolean r,
@@ -107,7 +107,7 @@
     return CallCapture(gl::EntryPoint::ColorMaski, std::move(paramBuffer));
 }
 
-CallCapture CaptureCopyImageSubData(const Context *context,
+CallCapture CaptureCopyImageSubData(const State &glState,
                                     bool isCallValid,
                                     GLuint srcName,
                                     GLenum srcTarget,
@@ -148,7 +148,7 @@
     return CallCapture(gl::EntryPoint::CopyImageSubData, std::move(paramBuffer));
 }
 
-CallCapture CaptureDebugMessageCallback(const Context *context,
+CallCapture CaptureDebugMessageCallback(const State &glState,
                                         bool isCallValid,
                                         GLDEBUGPROC callback,
                                         const void *userParam)
@@ -159,14 +159,14 @@
 
     ParamCapture userParamParam("userParam", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, userParam, &userParamParam.value);
-    CaptureDebugMessageCallback_userParam(context, isCallValid, callback, userParam,
+    CaptureDebugMessageCallback_userParam(glState, isCallValid, callback, userParam,
                                           &userParamParam);
     paramBuffer.addParam(std::move(userParamParam));
 
     return CallCapture(gl::EntryPoint::DebugMessageCallback, std::move(paramBuffer));
 }
 
-CallCapture CaptureDebugMessageControl(const Context *context,
+CallCapture CaptureDebugMessageControl(const State &glState,
                                        bool isCallValid,
                                        GLenum source,
                                        GLenum type,
@@ -184,7 +184,7 @@
 
     ParamCapture idsParam("ids", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, ids, &idsParam.value);
-    CaptureDebugMessageControl_ids(context, isCallValid, source, type, severity, count, ids,
+    CaptureDebugMessageControl_ids(glState, isCallValid, source, type, severity, count, ids,
                                    enabled, &idsParam);
     paramBuffer.addParam(std::move(idsParam));
 
@@ -193,7 +193,7 @@
     return CallCapture(gl::EntryPoint::DebugMessageControl, std::move(paramBuffer));
 }
 
-CallCapture CaptureDebugMessageInsert(const Context *context,
+CallCapture CaptureDebugMessageInsert(const State &glState,
                                       bool isCallValid,
                                       GLenum source,
                                       GLenum type,
@@ -212,14 +212,14 @@
 
     ParamCapture bufParam("buf", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, buf, &bufParam.value);
-    CaptureDebugMessageInsert_buf(context, isCallValid, source, type, id, severity, length, buf,
+    CaptureDebugMessageInsert_buf(glState, isCallValid, source, type, id, severity, length, buf,
                                   &bufParam);
     paramBuffer.addParam(std::move(bufParam));
 
     return CallCapture(gl::EntryPoint::DebugMessageInsert, std::move(paramBuffer));
 }
 
-CallCapture CaptureDisablei(const Context *context, bool isCallValid, GLenum target, GLuint index)
+CallCapture CaptureDisablei(const State &glState, bool isCallValid, GLenum target, GLuint index)
 {
     ParamBuffer paramBuffer;
 
@@ -229,7 +229,7 @@
     return CallCapture(gl::EntryPoint::Disablei, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawElementsBaseVertex(const Context *context,
+CallCapture CaptureDrawElementsBaseVertex(const State &glState,
                                           bool isCallValid,
                                           GLenum mode,
                                           GLsizei count,
@@ -245,7 +245,7 @@
 
     ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
-    CaptureDrawElementsBaseVertex_indices(context, isCallValid, mode, count, type, indices,
+    CaptureDrawElementsBaseVertex_indices(glState, isCallValid, mode, count, type, indices,
                                           basevertex, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
@@ -254,7 +254,7 @@
     return CallCapture(gl::EntryPoint::DrawElementsBaseVertex, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawElementsInstancedBaseVertex(const Context *context,
+CallCapture CaptureDrawElementsInstancedBaseVertex(const State &glState,
                                                    bool isCallValid,
                                                    GLenum mode,
                                                    GLsizei count,
@@ -271,7 +271,7 @@
 
     ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
-    CaptureDrawElementsInstancedBaseVertex_indices(context, isCallValid, mode, count, type, indices,
+    CaptureDrawElementsInstancedBaseVertex_indices(glState, isCallValid, mode, count, type, indices,
                                                    instancecount, basevertex, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
@@ -281,7 +281,7 @@
     return CallCapture(gl::EntryPoint::DrawElementsInstancedBaseVertex, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawRangeElementsBaseVertex(const Context *context,
+CallCapture CaptureDrawRangeElementsBaseVertex(const State &glState,
                                                bool isCallValid,
                                                GLenum mode,
                                                GLuint start,
@@ -301,7 +301,7 @@
 
     ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
-    CaptureDrawRangeElementsBaseVertex_indices(context, isCallValid, mode, start, end, count, type,
+    CaptureDrawRangeElementsBaseVertex_indices(glState, isCallValid, mode, start, end, count, type,
                                                indices, basevertex, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
@@ -310,7 +310,7 @@
     return CallCapture(gl::EntryPoint::DrawRangeElementsBaseVertex, std::move(paramBuffer));
 }
 
-CallCapture CaptureEnablei(const Context *context, bool isCallValid, GLenum target, GLuint index)
+CallCapture CaptureEnablei(const State &glState, bool isCallValid, GLenum target, GLuint index)
 {
     ParamBuffer paramBuffer;
 
@@ -320,7 +320,7 @@
     return CallCapture(gl::EntryPoint::Enablei, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferTexture(const Context *context,
+CallCapture CaptureFramebufferTexture(const State &glState,
                                       bool isCallValid,
                                       GLenum target,
                                       GLenum attachment,
@@ -338,7 +338,7 @@
     return CallCapture(gl::EntryPoint::FramebufferTexture, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetDebugMessageLog(const Context *context,
+CallCapture CaptureGetDebugMessageLog(const State &glState,
                                       bool isCallValid,
                                       GLuint count,
                                       GLsizei bufSize,
@@ -357,37 +357,37 @@
 
     ParamCapture sourcesParam("sources", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, sources, &sourcesParam.value);
-    CaptureGetDebugMessageLog_sources(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLog_sources(glState, isCallValid, count, bufSize, sources, types, ids,
                                       severities, lengths, messageLog, &sourcesParam);
     paramBuffer.addParam(std::move(sourcesParam));
 
     ParamCapture typesParam("types", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, types, &typesParam.value);
-    CaptureGetDebugMessageLog_types(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLog_types(glState, isCallValid, count, bufSize, sources, types, ids,
                                     severities, lengths, messageLog, &typesParam);
     paramBuffer.addParam(std::move(typesParam));
 
     ParamCapture idsParam("ids", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, ids, &idsParam.value);
-    CaptureGetDebugMessageLog_ids(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLog_ids(glState, isCallValid, count, bufSize, sources, types, ids,
                                   severities, lengths, messageLog, &idsParam);
     paramBuffer.addParam(std::move(idsParam));
 
     ParamCapture severitiesParam("severities", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, severities, &severitiesParam.value);
-    CaptureGetDebugMessageLog_severities(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLog_severities(glState, isCallValid, count, bufSize, sources, types, ids,
                                          severities, lengths, messageLog, &severitiesParam);
     paramBuffer.addParam(std::move(severitiesParam));
 
     ParamCapture lengthsParam("lengths", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, lengths, &lengthsParam.value);
-    CaptureGetDebugMessageLog_lengths(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLog_lengths(glState, isCallValid, count, bufSize, sources, types, ids,
                                       severities, lengths, messageLog, &lengthsParam);
     paramBuffer.addParam(std::move(lengthsParam));
 
     ParamCapture messageLogParam("messageLog", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, messageLog, &messageLogParam.value);
-    CaptureGetDebugMessageLog_messageLog(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLog_messageLog(glState, isCallValid, count, bufSize, sources, types, ids,
                                          severities, lengths, messageLog, &messageLogParam);
     paramBuffer.addParam(std::move(messageLogParam));
 
@@ -398,7 +398,7 @@
     return CallCapture(gl::EntryPoint::GetDebugMessageLog, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetGraphicsResetStatus(const Context *context,
+CallCapture CaptureGetGraphicsResetStatus(const State &glState,
                                           bool isCallValid,
                                           GLenum returnValue)
 {
@@ -411,7 +411,7 @@
     return CallCapture(gl::EntryPoint::GetGraphicsResetStatus, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetObjectLabel(const Context *context,
+CallCapture CaptureGetObjectLabel(const State &glState,
                                   bool isCallValid,
                                   GLenum identifier,
                                   GLuint name,
@@ -428,20 +428,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetObjectLabel_length(context, isCallValid, identifier, name, bufSize, length, label,
+    CaptureGetObjectLabel_length(glState, isCallValid, identifier, name, bufSize, length, label,
                                  &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture labelParam("label", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, label, &labelParam.value);
-    CaptureGetObjectLabel_label(context, isCallValid, identifier, name, bufSize, length, label,
+    CaptureGetObjectLabel_label(glState, isCallValid, identifier, name, bufSize, length, label,
                                 &labelParam);
     paramBuffer.addParam(std::move(labelParam));
 
     return CallCapture(gl::EntryPoint::GetObjectLabel, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetObjectPtrLabel(const Context *context,
+CallCapture CaptureGetObjectPtrLabel(const State &glState,
                                      bool isCallValid,
                                      const void *ptr,
                                      GLsizei bufSize,
@@ -452,29 +452,26 @@
 
     ParamCapture ptrParam("ptr", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, ptr, &ptrParam.value);
-    CaptureGetObjectPtrLabel_ptr(context, isCallValid, ptr, bufSize, length, label, &ptrParam);
+    CaptureGetObjectPtrLabel_ptr(glState, isCallValid, ptr, bufSize, length, label, &ptrParam);
     paramBuffer.addParam(std::move(ptrParam));
 
     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetObjectPtrLabel_length(context, isCallValid, ptr, bufSize, length, label,
+    CaptureGetObjectPtrLabel_length(glState, isCallValid, ptr, bufSize, length, label,
                                     &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture labelParam("label", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, label, &labelParam.value);
-    CaptureGetObjectPtrLabel_label(context, isCallValid, ptr, bufSize, length, label, &labelParam);
+    CaptureGetObjectPtrLabel_label(glState, isCallValid, ptr, bufSize, length, label, &labelParam);
     paramBuffer.addParam(std::move(labelParam));
 
     return CallCapture(gl::EntryPoint::GetObjectPtrLabel, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetPointerv(const Context *context,
-                               bool isCallValid,
-                               GLenum pname,
-                               void **params)
+CallCapture CaptureGetPointerv(const State &glState, bool isCallValid, GLenum pname, void **params)
 {
     ParamBuffer paramBuffer;
 
@@ -482,13 +479,13 @@
 
     ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
     InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
-    CaptureGetPointerv_params(context, isCallValid, pname, params, &paramsParam);
+    CaptureGetPointerv_params(glState, isCallValid, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetPointerv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameterIiv(const Context *context,
+CallCapture CaptureGetSamplerParameterIiv(const State &glState,
                                           bool isCallValid,
                                           SamplerID samplerPacked,
                                           GLenum pname,
@@ -501,14 +498,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameterIiv_params(context, isCallValid, samplerPacked, pname, params,
+    CaptureGetSamplerParameterIiv_params(glState, isCallValid, samplerPacked, pname, params,
                                          &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameterIiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameterIuiv(const Context *context,
+CallCapture CaptureGetSamplerParameterIuiv(const State &glState,
                                            bool isCallValid,
                                            SamplerID samplerPacked,
                                            GLenum pname,
@@ -521,14 +518,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameterIuiv_params(context, isCallValid, samplerPacked, pname, params,
+    CaptureGetSamplerParameterIuiv_params(glState, isCallValid, samplerPacked, pname, params,
                                           &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameterIuiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterIiv(const Context *context,
+CallCapture CaptureGetTexParameterIiv(const State &glState,
                                       bool isCallValid,
                                       TextureType targetPacked,
                                       GLenum pname,
@@ -541,14 +538,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexParameterIiv_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetTexParameterIiv_params(glState, isCallValid, targetPacked, pname, params,
                                      &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterIiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterIuiv(const Context *context,
+CallCapture CaptureGetTexParameterIuiv(const State &glState,
                                        bool isCallValid,
                                        TextureType targetPacked,
                                        GLenum pname,
@@ -561,14 +558,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetTexParameterIuiv_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetTexParameterIuiv_params(glState, isCallValid, targetPacked, pname, params,
                                       &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterIuiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetnUniformfv(const Context *context,
+CallCapture CaptureGetnUniformfv(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLint location,
@@ -583,14 +580,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetnUniformfv_params(context, isCallValid, programPacked, location, bufSize, params,
+    CaptureGetnUniformfv_params(glState, isCallValid, programPacked, location, bufSize, params,
                                 &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetnUniformfv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetnUniformiv(const Context *context,
+CallCapture CaptureGetnUniformiv(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLint location,
@@ -605,14 +602,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetnUniformiv_params(context, isCallValid, programPacked, location, bufSize, params,
+    CaptureGetnUniformiv_params(glState, isCallValid, programPacked, location, bufSize, params,
                                 &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetnUniformiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetnUniformuiv(const Context *context,
+CallCapture CaptureGetnUniformuiv(const State &glState,
                                   bool isCallValid,
                                   ShaderProgramID programPacked,
                                   GLint location,
@@ -627,14 +624,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetnUniformuiv_params(context, isCallValid, programPacked, location, bufSize, params,
+    CaptureGetnUniformuiv_params(glState, isCallValid, programPacked, location, bufSize, params,
                                  &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetnUniformuiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsEnabledi(const Context *context,
+CallCapture CaptureIsEnabledi(const State &glState,
                               bool isCallValid,
                               GLenum target,
                               GLuint index,
@@ -652,7 +649,7 @@
     return CallCapture(gl::EntryPoint::IsEnabledi, std::move(paramBuffer));
 }
 
-CallCapture CaptureMinSampleShading(const Context *context, bool isCallValid, GLfloat value)
+CallCapture CaptureMinSampleShading(const State &glState, bool isCallValid, GLfloat value)
 {
     ParamBuffer paramBuffer;
 
@@ -661,7 +658,7 @@
     return CallCapture(gl::EntryPoint::MinSampleShading, std::move(paramBuffer));
 }
 
-CallCapture CaptureObjectLabel(const Context *context,
+CallCapture CaptureObjectLabel(const State &glState,
                                bool isCallValid,
                                GLenum identifier,
                                GLuint name,
@@ -677,13 +674,13 @@
 
     ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, label, &labelParam.value);
-    CaptureObjectLabel_label(context, isCallValid, identifier, name, length, label, &labelParam);
+    CaptureObjectLabel_label(glState, isCallValid, identifier, name, length, label, &labelParam);
     paramBuffer.addParam(std::move(labelParam));
 
     return CallCapture(gl::EntryPoint::ObjectLabel, std::move(paramBuffer));
 }
 
-CallCapture CaptureObjectPtrLabel(const Context *context,
+CallCapture CaptureObjectPtrLabel(const State &glState,
                                   bool isCallValid,
                                   const void *ptr,
                                   GLsizei length,
@@ -693,20 +690,20 @@
 
     ParamCapture ptrParam("ptr", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, ptr, &ptrParam.value);
-    CaptureObjectPtrLabel_ptr(context, isCallValid, ptr, length, label, &ptrParam);
+    CaptureObjectPtrLabel_ptr(glState, isCallValid, ptr, length, label, &ptrParam);
     paramBuffer.addParam(std::move(ptrParam));
 
     paramBuffer.addValueParam("length", ParamType::TGLsizei, length);
 
     ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, label, &labelParam.value);
-    CaptureObjectPtrLabel_label(context, isCallValid, ptr, length, label, &labelParam);
+    CaptureObjectPtrLabel_label(glState, isCallValid, ptr, length, label, &labelParam);
     paramBuffer.addParam(std::move(labelParam));
 
     return CallCapture(gl::EntryPoint::ObjectPtrLabel, std::move(paramBuffer));
 }
 
-CallCapture CapturePatchParameteri(const Context *context,
+CallCapture CapturePatchParameteri(const State &glState,
                                    bool isCallValid,
                                    GLenum pname,
                                    GLint value)
@@ -719,14 +716,14 @@
     return CallCapture(gl::EntryPoint::PatchParameteri, std::move(paramBuffer));
 }
 
-CallCapture CapturePopDebugGroup(const Context *context, bool isCallValid)
+CallCapture CapturePopDebugGroup(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::PopDebugGroup, std::move(paramBuffer));
 }
 
-CallCapture CapturePrimitiveBoundingBox(const Context *context,
+CallCapture CapturePrimitiveBoundingBox(const State &glState,
                                         bool isCallValid,
                                         GLfloat minX,
                                         GLfloat minY,
@@ -751,7 +748,7 @@
     return CallCapture(gl::EntryPoint::PrimitiveBoundingBox, std::move(paramBuffer));
 }
 
-CallCapture CapturePushDebugGroup(const Context *context,
+CallCapture CapturePushDebugGroup(const State &glState,
                                   bool isCallValid,
                                   GLenum source,
                                   GLuint id,
@@ -766,13 +763,13 @@
 
     ParamCapture messageParam("message", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, message, &messageParam.value);
-    CapturePushDebugGroup_message(context, isCallValid, source, id, length, message, &messageParam);
+    CapturePushDebugGroup_message(glState, isCallValid, source, id, length, message, &messageParam);
     paramBuffer.addParam(std::move(messageParam));
 
     return CallCapture(gl::EntryPoint::PushDebugGroup, std::move(paramBuffer));
 }
 
-CallCapture CaptureReadnPixels(const Context *context,
+CallCapture CaptureReadnPixels(const State &glState,
                                bool isCallValid,
                                GLint x,
                                GLint y,
@@ -795,14 +792,14 @@
 
     ParamCapture dataParam("data", ParamType::TvoidPointer);
     InitParamValue(ParamType::TvoidPointer, data, &dataParam.value);
-    CaptureReadnPixels_data(context, isCallValid, x, y, width, height, format, type, bufSize, data,
+    CaptureReadnPixels_data(glState, isCallValid, x, y, width, height, format, type, bufSize, data,
                             &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::ReadnPixels, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterIiv(const Context *context,
+CallCapture CaptureSamplerParameterIiv(const State &glState,
                                        bool isCallValid,
                                        SamplerID samplerPacked,
                                        GLenum pname,
@@ -815,14 +812,14 @@
 
     ParamCapture paramParam("param", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, param, &paramParam.value);
-    CaptureSamplerParameterIiv_param(context, isCallValid, samplerPacked, pname, param,
+    CaptureSamplerParameterIiv_param(glState, isCallValid, samplerPacked, pname, param,
                                      &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameterIiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterIuiv(const Context *context,
+CallCapture CaptureSamplerParameterIuiv(const State &glState,
                                         bool isCallValid,
                                         SamplerID samplerPacked,
                                         GLenum pname,
@@ -835,14 +832,14 @@
 
     ParamCapture paramParam("param", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, param, &paramParam.value);
-    CaptureSamplerParameterIuiv_param(context, isCallValid, samplerPacked, pname, param,
+    CaptureSamplerParameterIuiv_param(glState, isCallValid, samplerPacked, pname, param,
                                       &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameterIuiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexBuffer(const Context *context,
+CallCapture CaptureTexBuffer(const State &glState,
                              bool isCallValid,
                              GLenum target,
                              GLenum internalformat,
@@ -858,7 +855,7 @@
     return CallCapture(gl::EntryPoint::TexBuffer, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexBufferRange(const Context *context,
+CallCapture CaptureTexBufferRange(const State &glState,
                                   bool isCallValid,
                                   GLenum target,
                                   GLenum internalformat,
@@ -878,7 +875,7 @@
     return CallCapture(gl::EntryPoint::TexBufferRange, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterIiv(const Context *context,
+CallCapture CaptureTexParameterIiv(const State &glState,
                                    bool isCallValid,
                                    TextureType targetPacked,
                                    GLenum pname,
@@ -891,13 +888,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
-    CaptureTexParameterIiv_params(context, isCallValid, targetPacked, pname, params, &paramsParam);
+    CaptureTexParameterIiv_params(glState, isCallValid, targetPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterIiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterIuiv(const Context *context,
+CallCapture CaptureTexParameterIuiv(const State &glState,
                                     bool isCallValid,
                                     TextureType targetPacked,
                                     GLenum pname,
@@ -910,13 +907,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, params, &paramsParam.value);
-    CaptureTexParameterIuiv_params(context, isCallValid, targetPacked, pname, params, &paramsParam);
+    CaptureTexParameterIuiv_params(glState, isCallValid, targetPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterIuiv, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorage3DMultisample(const Context *context,
+CallCapture CaptureTexStorage3DMultisample(const State &glState,
                                            bool isCallValid,
                                            TextureType targetPacked,
                                            GLsizei samples,
diff --git a/src/libANGLE/capture_gles_3_2_autogen.h b/src/libANGLE/capture_gles_3_2_autogen.h
index df90318..00b5859 100644
--- a/src/libANGLE/capture_gles_3_2_autogen.h
+++ b/src/libANGLE/capture_gles_3_2_autogen.h
@@ -16,40 +16,39 @@
 
 namespace gl
 {
-class Context;
 
 // Method Captures
 
-angle::CallCapture CaptureBlendBarrier(const Context *context, bool isCallValid);
-angle::CallCapture CaptureBlendEquationSeparatei(const Context *context,
+angle::CallCapture CaptureBlendBarrier(const State &glState, bool isCallValid);
+angle::CallCapture CaptureBlendEquationSeparatei(const State &glState,
                                                  bool isCallValid,
                                                  GLuint buf,
                                                  GLenum modeRGB,
                                                  GLenum modeAlpha);
-angle::CallCapture CaptureBlendEquationi(const Context *context,
+angle::CallCapture CaptureBlendEquationi(const State &glState,
                                          bool isCallValid,
                                          GLuint buf,
                                          GLenum mode);
-angle::CallCapture CaptureBlendFuncSeparatei(const Context *context,
+angle::CallCapture CaptureBlendFuncSeparatei(const State &glState,
                                              bool isCallValid,
                                              GLuint buf,
                                              GLenum srcRGB,
                                              GLenum dstRGB,
                                              GLenum srcAlpha,
                                              GLenum dstAlpha);
-angle::CallCapture CaptureBlendFunci(const Context *context,
+angle::CallCapture CaptureBlendFunci(const State &glState,
                                      bool isCallValid,
                                      GLuint buf,
                                      GLenum src,
                                      GLenum dst);
-angle::CallCapture CaptureColorMaski(const Context *context,
+angle::CallCapture CaptureColorMaski(const State &glState,
                                      bool isCallValid,
                                      GLuint index,
                                      GLboolean r,
                                      GLboolean g,
                                      GLboolean b,
                                      GLboolean a);
-angle::CallCapture CaptureCopyImageSubData(const Context *context,
+angle::CallCapture CaptureCopyImageSubData(const State &glState,
                                            bool isCallValid,
                                            GLuint srcName,
                                            GLenum srcTarget,
@@ -66,11 +65,11 @@
                                            GLsizei srcWidth,
                                            GLsizei srcHeight,
                                            GLsizei srcDepth);
-angle::CallCapture CaptureDebugMessageCallback(const Context *context,
+angle::CallCapture CaptureDebugMessageCallback(const State &glState,
                                                bool isCallValid,
                                                GLDEBUGPROC callback,
                                                const void *userParam);
-angle::CallCapture CaptureDebugMessageControl(const Context *context,
+angle::CallCapture CaptureDebugMessageControl(const State &glState,
                                               bool isCallValid,
                                               GLenum source,
                                               GLenum type,
@@ -78,7 +77,7 @@
                                               GLsizei count,
                                               const GLuint *ids,
                                               GLboolean enabled);
-angle::CallCapture CaptureDebugMessageInsert(const Context *context,
+angle::CallCapture CaptureDebugMessageInsert(const State &glState,
                                              bool isCallValid,
                                              GLenum source,
                                              GLenum type,
@@ -86,18 +85,18 @@
                                              GLenum severity,
                                              GLsizei length,
                                              const GLchar *buf);
-angle::CallCapture CaptureDisablei(const Context *context,
+angle::CallCapture CaptureDisablei(const State &glState,
                                    bool isCallValid,
                                    GLenum target,
                                    GLuint index);
-angle::CallCapture CaptureDrawElementsBaseVertex(const Context *context,
+angle::CallCapture CaptureDrawElementsBaseVertex(const State &glState,
                                                  bool isCallValid,
                                                  GLenum mode,
                                                  GLsizei count,
                                                  GLenum type,
                                                  const void *indices,
                                                  GLint basevertex);
-angle::CallCapture CaptureDrawElementsInstancedBaseVertex(const Context *context,
+angle::CallCapture CaptureDrawElementsInstancedBaseVertex(const State &glState,
                                                           bool isCallValid,
                                                           GLenum mode,
                                                           GLsizei count,
@@ -105,7 +104,7 @@
                                                           const void *indices,
                                                           GLsizei instancecount,
                                                           GLint basevertex);
-angle::CallCapture CaptureDrawRangeElementsBaseVertex(const Context *context,
+angle::CallCapture CaptureDrawRangeElementsBaseVertex(const State &glState,
                                                       bool isCallValid,
                                                       GLenum mode,
                                                       GLuint start,
@@ -114,17 +113,17 @@
                                                       GLenum type,
                                                       const void *indices,
                                                       GLint basevertex);
-angle::CallCapture CaptureEnablei(const Context *context,
+angle::CallCapture CaptureEnablei(const State &glState,
                                   bool isCallValid,
                                   GLenum target,
                                   GLuint index);
-angle::CallCapture CaptureFramebufferTexture(const Context *context,
+angle::CallCapture CaptureFramebufferTexture(const State &glState,
                                              bool isCallValid,
                                              GLenum target,
                                              GLenum attachment,
                                              TextureID texturePacked,
                                              GLint level);
-angle::CallCapture CaptureGetDebugMessageLog(const Context *context,
+angle::CallCapture CaptureGetDebugMessageLog(const State &glState,
                                              bool isCallValid,
                                              GLuint count,
                                              GLsizei bufSize,
@@ -135,87 +134,87 @@
                                              GLsizei *lengths,
                                              GLchar *messageLog,
                                              GLuint returnValue);
-angle::CallCapture CaptureGetGraphicsResetStatus(const Context *context,
+angle::CallCapture CaptureGetGraphicsResetStatus(const State &glState,
                                                  bool isCallValid,
                                                  GLenum returnValue);
-angle::CallCapture CaptureGetObjectLabel(const Context *context,
+angle::CallCapture CaptureGetObjectLabel(const State &glState,
                                          bool isCallValid,
                                          GLenum identifier,
                                          GLuint name,
                                          GLsizei bufSize,
                                          GLsizei *length,
                                          GLchar *label);
-angle::CallCapture CaptureGetObjectPtrLabel(const Context *context,
+angle::CallCapture CaptureGetObjectPtrLabel(const State &glState,
                                             bool isCallValid,
                                             const void *ptr,
                                             GLsizei bufSize,
                                             GLsizei *length,
                                             GLchar *label);
-angle::CallCapture CaptureGetPointerv(const Context *context,
+angle::CallCapture CaptureGetPointerv(const State &glState,
                                       bool isCallValid,
                                       GLenum pname,
                                       void **params);
-angle::CallCapture CaptureGetSamplerParameterIiv(const Context *context,
+angle::CallCapture CaptureGetSamplerParameterIiv(const State &glState,
                                                  bool isCallValid,
                                                  SamplerID samplerPacked,
                                                  GLenum pname,
                                                  GLint *params);
-angle::CallCapture CaptureGetSamplerParameterIuiv(const Context *context,
+angle::CallCapture CaptureGetSamplerParameterIuiv(const State &glState,
                                                   bool isCallValid,
                                                   SamplerID samplerPacked,
                                                   GLenum pname,
                                                   GLuint *params);
-angle::CallCapture CaptureGetTexParameterIiv(const Context *context,
+angle::CallCapture CaptureGetTexParameterIiv(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLenum pname,
                                              GLint *params);
-angle::CallCapture CaptureGetTexParameterIuiv(const Context *context,
+angle::CallCapture CaptureGetTexParameterIuiv(const State &glState,
                                               bool isCallValid,
                                               TextureType targetPacked,
                                               GLenum pname,
                                               GLuint *params);
-angle::CallCapture CaptureGetnUniformfv(const Context *context,
+angle::CallCapture CaptureGetnUniformfv(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked,
                                         GLint location,
                                         GLsizei bufSize,
                                         GLfloat *params);
-angle::CallCapture CaptureGetnUniformiv(const Context *context,
+angle::CallCapture CaptureGetnUniformiv(const State &glState,
                                         bool isCallValid,
                                         ShaderProgramID programPacked,
                                         GLint location,
                                         GLsizei bufSize,
                                         GLint *params);
-angle::CallCapture CaptureGetnUniformuiv(const Context *context,
+angle::CallCapture CaptureGetnUniformuiv(const State &glState,
                                          bool isCallValid,
                                          ShaderProgramID programPacked,
                                          GLint location,
                                          GLsizei bufSize,
                                          GLuint *params);
-angle::CallCapture CaptureIsEnabledi(const Context *context,
+angle::CallCapture CaptureIsEnabledi(const State &glState,
                                      bool isCallValid,
                                      GLenum target,
                                      GLuint index,
                                      GLboolean returnValue);
-angle::CallCapture CaptureMinSampleShading(const Context *context, bool isCallValid, GLfloat value);
-angle::CallCapture CaptureObjectLabel(const Context *context,
+angle::CallCapture CaptureMinSampleShading(const State &glState, bool isCallValid, GLfloat value);
+angle::CallCapture CaptureObjectLabel(const State &glState,
                                       bool isCallValid,
                                       GLenum identifier,
                                       GLuint name,
                                       GLsizei length,
                                       const GLchar *label);
-angle::CallCapture CaptureObjectPtrLabel(const Context *context,
+angle::CallCapture CaptureObjectPtrLabel(const State &glState,
                                          bool isCallValid,
                                          const void *ptr,
                                          GLsizei length,
                                          const GLchar *label);
-angle::CallCapture CapturePatchParameteri(const Context *context,
+angle::CallCapture CapturePatchParameteri(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLint value);
-angle::CallCapture CapturePopDebugGroup(const Context *context, bool isCallValid);
-angle::CallCapture CapturePrimitiveBoundingBox(const Context *context,
+angle::CallCapture CapturePopDebugGroup(const State &glState, bool isCallValid);
+angle::CallCapture CapturePrimitiveBoundingBox(const State &glState,
                                                bool isCallValid,
                                                GLfloat minX,
                                                GLfloat minY,
@@ -225,13 +224,13 @@
                                                GLfloat maxY,
                                                GLfloat maxZ,
                                                GLfloat maxW);
-angle::CallCapture CapturePushDebugGroup(const Context *context,
+angle::CallCapture CapturePushDebugGroup(const State &glState,
                                          bool isCallValid,
                                          GLenum source,
                                          GLuint id,
                                          GLsizei length,
                                          const GLchar *message);
-angle::CallCapture CaptureReadnPixels(const Context *context,
+angle::CallCapture CaptureReadnPixels(const State &glState,
                                       bool isCallValid,
                                       GLint x,
                                       GLint y,
@@ -241,39 +240,39 @@
                                       GLenum type,
                                       GLsizei bufSize,
                                       void *data);
-angle::CallCapture CaptureSamplerParameterIiv(const Context *context,
+angle::CallCapture CaptureSamplerParameterIiv(const State &glState,
                                               bool isCallValid,
                                               SamplerID samplerPacked,
                                               GLenum pname,
                                               const GLint *param);
-angle::CallCapture CaptureSamplerParameterIuiv(const Context *context,
+angle::CallCapture CaptureSamplerParameterIuiv(const State &glState,
                                                bool isCallValid,
                                                SamplerID samplerPacked,
                                                GLenum pname,
                                                const GLuint *param);
-angle::CallCapture CaptureTexBuffer(const Context *context,
+angle::CallCapture CaptureTexBuffer(const State &glState,
                                     bool isCallValid,
                                     GLenum target,
                                     GLenum internalformat,
                                     BufferID bufferPacked);
-angle::CallCapture CaptureTexBufferRange(const Context *context,
+angle::CallCapture CaptureTexBufferRange(const State &glState,
                                          bool isCallValid,
                                          GLenum target,
                                          GLenum internalformat,
                                          BufferID bufferPacked,
                                          GLintptr offset,
                                          GLsizeiptr size);
-angle::CallCapture CaptureTexParameterIiv(const Context *context,
+angle::CallCapture CaptureTexParameterIiv(const State &glState,
                                           bool isCallValid,
                                           TextureType targetPacked,
                                           GLenum pname,
                                           const GLint *params);
-angle::CallCapture CaptureTexParameterIuiv(const Context *context,
+angle::CallCapture CaptureTexParameterIuiv(const State &glState,
                                            bool isCallValid,
                                            TextureType targetPacked,
                                            GLenum pname,
                                            const GLuint *params);
-angle::CallCapture CaptureTexStorage3DMultisample(const Context *context,
+angle::CallCapture CaptureTexStorage3DMultisample(const State &glState,
                                                   bool isCallValid,
                                                   TextureType targetPacked,
                                                   GLsizei samples,
@@ -285,12 +284,12 @@
 
 // Parameter Captures
 
-void CaptureDebugMessageCallback_userParam(const Context *context,
+void CaptureDebugMessageCallback_userParam(const State &glState,
                                            bool isCallValid,
                                            GLDEBUGPROC callback,
                                            const void *userParam,
                                            angle::ParamCapture *paramCapture);
-void CaptureDebugMessageControl_ids(const Context *context,
+void CaptureDebugMessageControl_ids(const State &glState,
                                     bool isCallValid,
                                     GLenum source,
                                     GLenum type,
@@ -299,7 +298,7 @@
                                     const GLuint *ids,
                                     GLboolean enabled,
                                     angle::ParamCapture *paramCapture);
-void CaptureDebugMessageInsert_buf(const Context *context,
+void CaptureDebugMessageInsert_buf(const State &glState,
                                    bool isCallValid,
                                    GLenum source,
                                    GLenum type,
@@ -308,7 +307,7 @@
                                    GLsizei length,
                                    const GLchar *buf,
                                    angle::ParamCapture *paramCapture);
-void CaptureDrawElementsBaseVertex_indices(const Context *context,
+void CaptureDrawElementsBaseVertex_indices(const State &glState,
                                            bool isCallValid,
                                            GLenum mode,
                                            GLsizei count,
@@ -316,7 +315,7 @@
                                            const void *indices,
                                            GLint basevertex,
                                            angle::ParamCapture *paramCapture);
-void CaptureDrawElementsInstancedBaseVertex_indices(const Context *context,
+void CaptureDrawElementsInstancedBaseVertex_indices(const State &glState,
                                                     bool isCallValid,
                                                     GLenum mode,
                                                     GLsizei count,
@@ -325,7 +324,7 @@
                                                     GLsizei instancecount,
                                                     GLint basevertex,
                                                     angle::ParamCapture *paramCapture);
-void CaptureDrawRangeElementsBaseVertex_indices(const Context *context,
+void CaptureDrawRangeElementsBaseVertex_indices(const State &glState,
                                                 bool isCallValid,
                                                 GLenum mode,
                                                 GLuint start,
@@ -335,7 +334,7 @@
                                                 const void *indices,
                                                 GLint basevertex,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLog_sources(const Context *context,
+void CaptureGetDebugMessageLog_sources(const State &glState,
                                        bool isCallValid,
                                        GLuint count,
                                        GLsizei bufSize,
@@ -346,7 +345,7 @@
                                        GLsizei *lengths,
                                        GLchar *messageLog,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLog_types(const Context *context,
+void CaptureGetDebugMessageLog_types(const State &glState,
                                      bool isCallValid,
                                      GLuint count,
                                      GLsizei bufSize,
@@ -357,7 +356,7 @@
                                      GLsizei *lengths,
                                      GLchar *messageLog,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLog_ids(const Context *context,
+void CaptureGetDebugMessageLog_ids(const State &glState,
                                    bool isCallValid,
                                    GLuint count,
                                    GLsizei bufSize,
@@ -368,7 +367,7 @@
                                    GLsizei *lengths,
                                    GLchar *messageLog,
                                    angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLog_severities(const Context *context,
+void CaptureGetDebugMessageLog_severities(const State &glState,
                                           bool isCallValid,
                                           GLuint count,
                                           GLsizei bufSize,
@@ -379,7 +378,7 @@
                                           GLsizei *lengths,
                                           GLchar *messageLog,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLog_lengths(const Context *context,
+void CaptureGetDebugMessageLog_lengths(const State &glState,
                                        bool isCallValid,
                                        GLuint count,
                                        GLsizei bufSize,
@@ -390,7 +389,7 @@
                                        GLsizei *lengths,
                                        GLchar *messageLog,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLog_messageLog(const Context *context,
+void CaptureGetDebugMessageLog_messageLog(const State &glState,
                                           bool isCallValid,
                                           GLuint count,
                                           GLsizei bufSize,
@@ -401,7 +400,7 @@
                                           GLsizei *lengths,
                                           GLchar *messageLog,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetObjectLabel_length(const Context *context,
+void CaptureGetObjectLabel_length(const State &glState,
                                   bool isCallValid,
                                   GLenum identifier,
                                   GLuint name,
@@ -409,7 +408,7 @@
                                   GLsizei *length,
                                   GLchar *label,
                                   angle::ParamCapture *paramCapture);
-void CaptureGetObjectLabel_label(const Context *context,
+void CaptureGetObjectLabel_label(const State &glState,
                                  bool isCallValid,
                                  GLenum identifier,
                                  GLuint name,
@@ -417,104 +416,104 @@
                                  GLsizei *length,
                                  GLchar *label,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetObjectPtrLabel_ptr(const Context *context,
+void CaptureGetObjectPtrLabel_ptr(const State &glState,
                                   bool isCallValid,
                                   const void *ptr,
                                   GLsizei bufSize,
                                   GLsizei *length,
                                   GLchar *label,
                                   angle::ParamCapture *paramCapture);
-void CaptureGetObjectPtrLabel_length(const Context *context,
+void CaptureGetObjectPtrLabel_length(const State &glState,
                                      bool isCallValid,
                                      const void *ptr,
                                      GLsizei bufSize,
                                      GLsizei *length,
                                      GLchar *label,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetObjectPtrLabel_label(const Context *context,
+void CaptureGetObjectPtrLabel_label(const State &glState,
                                     bool isCallValid,
                                     const void *ptr,
                                     GLsizei bufSize,
                                     GLsizei *length,
                                     GLchar *label,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetPointerv_params(const Context *context,
+void CaptureGetPointerv_params(const State &glState,
                                bool isCallValid,
                                GLenum pname,
                                void **params,
                                angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterIiv_params(const Context *context,
+void CaptureGetSamplerParameterIiv_params(const State &glState,
                                           bool isCallValid,
                                           SamplerID samplerPacked,
                                           GLenum pname,
                                           GLint *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterIuiv_params(const Context *context,
+void CaptureGetSamplerParameterIuiv_params(const State &glState,
                                            bool isCallValid,
                                            SamplerID samplerPacked,
                                            GLenum pname,
                                            GLuint *params,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterIiv_params(const Context *context,
+void CaptureGetTexParameterIiv_params(const State &glState,
                                       bool isCallValid,
                                       TextureType targetPacked,
                                       GLenum pname,
                                       GLint *params,
                                       angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterIuiv_params(const Context *context,
+void CaptureGetTexParameterIuiv_params(const State &glState,
                                        bool isCallValid,
                                        TextureType targetPacked,
                                        GLenum pname,
                                        GLuint *params,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetnUniformfv_params(const Context *context,
+void CaptureGetnUniformfv_params(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLint location,
                                  GLsizei bufSize,
                                  GLfloat *params,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetnUniformiv_params(const Context *context,
+void CaptureGetnUniformiv_params(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID programPacked,
                                  GLint location,
                                  GLsizei bufSize,
                                  GLint *params,
                                  angle::ParamCapture *paramCapture);
-void CaptureGetnUniformuiv_params(const Context *context,
+void CaptureGetnUniformuiv_params(const State &glState,
                                   bool isCallValid,
                                   ShaderProgramID programPacked,
                                   GLint location,
                                   GLsizei bufSize,
                                   GLuint *params,
                                   angle::ParamCapture *paramCapture);
-void CaptureObjectLabel_label(const Context *context,
+void CaptureObjectLabel_label(const State &glState,
                               bool isCallValid,
                               GLenum identifier,
                               GLuint name,
                               GLsizei length,
                               const GLchar *label,
                               angle::ParamCapture *paramCapture);
-void CaptureObjectPtrLabel_ptr(const Context *context,
+void CaptureObjectPtrLabel_ptr(const State &glState,
                                bool isCallValid,
                                const void *ptr,
                                GLsizei length,
                                const GLchar *label,
                                angle::ParamCapture *paramCapture);
-void CaptureObjectPtrLabel_label(const Context *context,
+void CaptureObjectPtrLabel_label(const State &glState,
                                  bool isCallValid,
                                  const void *ptr,
                                  GLsizei length,
                                  const GLchar *label,
                                  angle::ParamCapture *paramCapture);
-void CapturePushDebugGroup_message(const Context *context,
+void CapturePushDebugGroup_message(const State &glState,
                                    bool isCallValid,
                                    GLenum source,
                                    GLuint id,
                                    GLsizei length,
                                    const GLchar *message,
                                    angle::ParamCapture *paramCapture);
-void CaptureReadnPixels_data(const Context *context,
+void CaptureReadnPixels_data(const State &glState,
                              bool isCallValid,
                              GLint x,
                              GLint y,
@@ -525,25 +524,25 @@
                              GLsizei bufSize,
                              void *data,
                              angle::ParamCapture *paramCapture);
-void CaptureSamplerParameterIiv_param(const Context *context,
+void CaptureSamplerParameterIiv_param(const State &glState,
                                       bool isCallValid,
                                       SamplerID samplerPacked,
                                       GLenum pname,
                                       const GLint *param,
                                       angle::ParamCapture *paramCapture);
-void CaptureSamplerParameterIuiv_param(const Context *context,
+void CaptureSamplerParameterIuiv_param(const State &glState,
                                        bool isCallValid,
                                        SamplerID samplerPacked,
                                        GLenum pname,
                                        const GLuint *param,
                                        angle::ParamCapture *paramCapture);
-void CaptureTexParameterIiv_params(const Context *context,
+void CaptureTexParameterIiv_params(const State &glState,
                                    bool isCallValid,
                                    TextureType targetPacked,
                                    GLenum pname,
                                    const GLint *params,
                                    angle::ParamCapture *paramCapture);
-void CaptureTexParameterIuiv_params(const Context *context,
+void CaptureTexParameterIuiv_params(const State &glState,
                                     bool isCallValid,
                                     TextureType targetPacked,
                                     GLenum pname,
diff --git a/src/libANGLE/capture_gles_3_2_params.cpp b/src/libANGLE/capture_gles_3_2_params.cpp
index 638374b..c3210c3 100644
--- a/src/libANGLE/capture_gles_3_2_params.cpp
+++ b/src/libANGLE/capture_gles_3_2_params.cpp
@@ -13,7 +13,7 @@
 namespace gl
 {
 
-void CaptureDebugMessageCallback_userParam(const Context *context,
+void CaptureDebugMessageCallback_userParam(const State &glState,
                                            bool isCallValid,
                                            GLDEBUGPROC callback,
                                            const void *userParam,
@@ -22,7 +22,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDebugMessageControl_ids(const Context *context,
+void CaptureDebugMessageControl_ids(const State &glState,
                                     bool isCallValid,
                                     GLenum source,
                                     GLenum type,
@@ -35,7 +35,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDebugMessageInsert_buf(const Context *context,
+void CaptureDebugMessageInsert_buf(const State &glState,
                                    bool isCallValid,
                                    GLenum source,
                                    GLenum type,
@@ -48,7 +48,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawElementsBaseVertex_indices(const Context *context,
+void CaptureDrawElementsBaseVertex_indices(const State &glState,
                                            bool isCallValid,
                                            GLenum mode,
                                            GLsizei count,
@@ -60,7 +60,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawElementsInstancedBaseVertex_indices(const Context *context,
+void CaptureDrawElementsInstancedBaseVertex_indices(const State &glState,
                                                     bool isCallValid,
                                                     GLenum mode,
                                                     GLsizei count,
@@ -73,7 +73,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawRangeElementsBaseVertex_indices(const Context *context,
+void CaptureDrawRangeElementsBaseVertex_indices(const State &glState,
                                                 bool isCallValid,
                                                 GLenum mode,
                                                 GLuint start,
@@ -87,7 +87,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLog_sources(const Context *context,
+void CaptureGetDebugMessageLog_sources(const State &glState,
                                        bool isCallValid,
                                        GLuint count,
                                        GLsizei bufSize,
@@ -102,7 +102,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLog_types(const Context *context,
+void CaptureGetDebugMessageLog_types(const State &glState,
                                      bool isCallValid,
                                      GLuint count,
                                      GLsizei bufSize,
@@ -117,7 +117,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLog_ids(const Context *context,
+void CaptureGetDebugMessageLog_ids(const State &glState,
                                    bool isCallValid,
                                    GLuint count,
                                    GLsizei bufSize,
@@ -132,7 +132,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLog_severities(const Context *context,
+void CaptureGetDebugMessageLog_severities(const State &glState,
                                           bool isCallValid,
                                           GLuint count,
                                           GLsizei bufSize,
@@ -147,7 +147,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLog_lengths(const Context *context,
+void CaptureGetDebugMessageLog_lengths(const State &glState,
                                        bool isCallValid,
                                        GLuint count,
                                        GLsizei bufSize,
@@ -162,7 +162,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLog_messageLog(const Context *context,
+void CaptureGetDebugMessageLog_messageLog(const State &glState,
                                           bool isCallValid,
                                           GLuint count,
                                           GLsizei bufSize,
@@ -177,7 +177,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectLabel_length(const Context *context,
+void CaptureGetObjectLabel_length(const State &glState,
                                   bool isCallValid,
                                   GLenum identifier,
                                   GLuint name,
@@ -189,7 +189,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectLabel_label(const Context *context,
+void CaptureGetObjectLabel_label(const State &glState,
                                  bool isCallValid,
                                  GLenum identifier,
                                  GLuint name,
@@ -201,7 +201,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectPtrLabel_ptr(const Context *context,
+void CaptureGetObjectPtrLabel_ptr(const State &glState,
                                   bool isCallValid,
                                   const void *ptr,
                                   GLsizei bufSize,
@@ -212,7 +212,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectPtrLabel_length(const Context *context,
+void CaptureGetObjectPtrLabel_length(const State &glState,
                                      bool isCallValid,
                                      const void *ptr,
                                      GLsizei bufSize,
@@ -223,7 +223,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectPtrLabel_label(const Context *context,
+void CaptureGetObjectPtrLabel_label(const State &glState,
                                     bool isCallValid,
                                     const void *ptr,
                                     GLsizei bufSize,
@@ -234,7 +234,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetPointerv_params(const Context *context,
+void CaptureGetPointerv_params(const State &glState,
                                bool isCallValid,
                                GLenum pname,
                                void **params,
@@ -243,7 +243,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterIiv_params(const Context *context,
+void CaptureGetSamplerParameterIiv_params(const State &glState,
                                           bool isCallValid,
                                           SamplerID sampler,
                                           GLenum pname,
@@ -253,7 +253,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterIuiv_params(const Context *context,
+void CaptureGetSamplerParameterIuiv_params(const State &glState,
                                            bool isCallValid,
                                            SamplerID sampler,
                                            GLenum pname,
@@ -263,7 +263,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterIiv_params(const Context *context,
+void CaptureGetTexParameterIiv_params(const State &glState,
                                       bool isCallValid,
                                       TextureType targetPacked,
                                       GLenum pname,
@@ -273,7 +273,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterIuiv_params(const Context *context,
+void CaptureGetTexParameterIuiv_params(const State &glState,
                                        bool isCallValid,
                                        TextureType targetPacked,
                                        GLenum pname,
@@ -283,7 +283,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformfv_params(const Context *context,
+void CaptureGetnUniformfv_params(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID program,
                                  GLint location,
@@ -294,7 +294,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformiv_params(const Context *context,
+void CaptureGetnUniformiv_params(const State &glState,
                                  bool isCallValid,
                                  ShaderProgramID program,
                                  GLint location,
@@ -305,7 +305,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformuiv_params(const Context *context,
+void CaptureGetnUniformuiv_params(const State &glState,
                                   bool isCallValid,
                                   ShaderProgramID program,
                                   GLint location,
@@ -316,7 +316,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureObjectLabel_label(const Context *context,
+void CaptureObjectLabel_label(const State &glState,
                               bool isCallValid,
                               GLenum identifier,
                               GLuint name,
@@ -327,7 +327,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureObjectPtrLabel_ptr(const Context *context,
+void CaptureObjectPtrLabel_ptr(const State &glState,
                                bool isCallValid,
                                const void *ptr,
                                GLsizei length,
@@ -337,7 +337,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureObjectPtrLabel_label(const Context *context,
+void CaptureObjectPtrLabel_label(const State &glState,
                                  bool isCallValid,
                                  const void *ptr,
                                  GLsizei length,
@@ -347,7 +347,7 @@
     UNIMPLEMENTED();
 }
 
-void CapturePushDebugGroup_message(const Context *context,
+void CapturePushDebugGroup_message(const State &glState,
                                    bool isCallValid,
                                    GLenum source,
                                    GLuint id,
@@ -358,7 +358,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadnPixels_data(const Context *context,
+void CaptureReadnPixels_data(const State &glState,
                              bool isCallValid,
                              GLint x,
                              GLint y,
@@ -373,7 +373,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameterIiv_param(const Context *context,
+void CaptureSamplerParameterIiv_param(const State &glState,
                                       bool isCallValid,
                                       SamplerID sampler,
                                       GLenum pname,
@@ -383,7 +383,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameterIuiv_param(const Context *context,
+void CaptureSamplerParameterIuiv_param(const State &glState,
                                        bool isCallValid,
                                        SamplerID sampler,
                                        GLenum pname,
@@ -393,7 +393,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameterIiv_params(const Context *context,
+void CaptureTexParameterIiv_params(const State &glState,
                                    bool isCallValid,
                                    TextureType targetPacked,
                                    GLenum pname,
@@ -403,7 +403,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameterIuiv_params(const Context *context,
+void CaptureTexParameterIuiv_params(const State &glState,
                                     bool isCallValid,
                                     TextureType targetPacked,
                                     GLenum pname,
diff --git a/src/libANGLE/capture_gles_ext_autogen.cpp b/src/libANGLE/capture_gles_ext_autogen.cpp
index 30259f8..9e91e95 100644
--- a/src/libANGLE/capture_gles_ext_autogen.cpp
+++ b/src/libANGLE/capture_gles_ext_autogen.cpp
@@ -20,7 +20,7 @@
 namespace gl
 {
 
-CallCapture CaptureDrawArraysInstancedBaseInstanceANGLE(const Context *context,
+CallCapture CaptureDrawArraysInstancedBaseInstanceANGLE(const State &glState,
                                                         bool isCallValid,
                                                         PrimitiveMode modePacked,
                                                         GLint first,
@@ -40,7 +40,7 @@
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawElementsInstancedBaseVertexBaseInstanceANGLE(const Context *context,
+CallCapture CaptureDrawElementsInstancedBaseVertexBaseInstanceANGLE(const State &glState,
                                                                     bool isCallValid,
                                                                     PrimitiveMode modePacked,
                                                                     GLsizei count,
@@ -59,7 +59,7 @@
     ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointer);
     InitParamValue(ParamType::TGLvoidConstPointer, indices, &indicesParam.value);
     CaptureDrawElementsInstancedBaseVertexBaseInstanceANGLE_indices(
-        context, isCallValid, modePacked, count, typePacked, indices, instanceCounts, baseVertex,
+        glState, isCallValid, modePacked, count, typePacked, indices, instanceCounts, baseVertex,
         baseInstance, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
@@ -71,7 +71,7 @@
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureMultiDrawArraysInstancedBaseInstanceANGLE(const Context *context,
+CallCapture CaptureMultiDrawArraysInstancedBaseInstanceANGLE(const State &glState,
                                                              bool isCallValid,
                                                              PrimitiveMode modePacked,
                                                              const GLint *firsts,
@@ -86,14 +86,14 @@
 
     ParamCapture firstsParam("firsts", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, firsts, &firstsParam.value);
-    CaptureMultiDrawArraysInstancedBaseInstanceANGLE_firsts(context, isCallValid, modePacked,
+    CaptureMultiDrawArraysInstancedBaseInstanceANGLE_firsts(glState, isCallValid, modePacked,
                                                             firsts, counts, instanceCounts,
                                                             baseInstances, drawcount, &firstsParam);
     paramBuffer.addParam(std::move(firstsParam));
 
     ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
-    CaptureMultiDrawArraysInstancedBaseInstanceANGLE_counts(context, isCallValid, modePacked,
+    CaptureMultiDrawArraysInstancedBaseInstanceANGLE_counts(glState, isCallValid, modePacked,
                                                             firsts, counts, instanceCounts,
                                                             baseInstances, drawcount, &countsParam);
     paramBuffer.addParam(std::move(countsParam));
@@ -101,14 +101,14 @@
     ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, instanceCounts, &instanceCountsParam.value);
     CaptureMultiDrawArraysInstancedBaseInstanceANGLE_instanceCounts(
-        context, isCallValid, modePacked, firsts, counts, instanceCounts, baseInstances, drawcount,
+        glState, isCallValid, modePacked, firsts, counts, instanceCounts, baseInstances, drawcount,
         &instanceCountsParam);
     paramBuffer.addParam(std::move(instanceCountsParam));
 
     ParamCapture baseInstancesParam("baseInstances", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, baseInstances, &baseInstancesParam.value);
     CaptureMultiDrawArraysInstancedBaseInstanceANGLE_baseInstances(
-        context, isCallValid, modePacked, firsts, counts, instanceCounts, baseInstances, drawcount,
+        glState, isCallValid, modePacked, firsts, counts, instanceCounts, baseInstances, drawcount,
         &baseInstancesParam);
     paramBuffer.addParam(std::move(baseInstancesParam));
 
@@ -119,7 +119,7 @@
 }
 
 CallCapture CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -137,7 +137,7 @@
     ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
     CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_counts(
-        context, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
+        glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
         baseInstances, drawcount, &countsParam);
     paramBuffer.addParam(std::move(countsParam));
 
@@ -146,28 +146,28 @@
     ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointerPointer);
     InitParamValue(ParamType::TGLvoidConstPointerPointer, indices, &indicesParam.value);
     CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_indices(
-        context, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
+        glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
         baseInstances, drawcount, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
     ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, instanceCounts, &instanceCountsParam.value);
     CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_instanceCounts(
-        context, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
+        glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
         baseInstances, drawcount, &instanceCountsParam);
     paramBuffer.addParam(std::move(instanceCountsParam));
 
     ParamCapture baseVerticesParam("baseVertices", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, baseVertices, &baseVerticesParam.value);
     CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_baseVertices(
-        context, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
+        glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
         baseInstances, drawcount, &baseVerticesParam);
     paramBuffer.addParam(std::move(baseVerticesParam));
 
     ParamCapture baseInstancesParam("baseInstances", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, baseInstances, &baseInstancesParam.value);
     CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_baseInstances(
-        context, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
+        glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
         baseInstances, drawcount, &baseInstancesParam);
     paramBuffer.addParam(std::move(baseInstancesParam));
 
@@ -177,7 +177,7 @@
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureCopyTexture3DANGLE(const Context *context,
+CallCapture CaptureCopyTexture3DANGLE(const State &glState,
                                       bool isCallValid,
                                       TextureID sourceIdPacked,
                                       GLint sourceLevel,
@@ -208,7 +208,7 @@
     return CallCapture(gl::EntryPoint::CopyTexture3DANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureCopySubTexture3DANGLE(const Context *context,
+CallCapture CaptureCopySubTexture3DANGLE(const State &glState,
                                          bool isCallValid,
                                          TextureID sourceIdPacked,
                                          GLint sourceLevel,
@@ -253,7 +253,7 @@
     return CallCapture(gl::EntryPoint::CopySubTexture3DANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureBlitFramebufferANGLE(const Context *context,
+CallCapture CaptureBlitFramebufferANGLE(const State &glState,
                                         bool isCallValid,
                                         GLint srcX0,
                                         GLint srcY0,
@@ -283,7 +283,7 @@
     return CallCapture(gl::EntryPoint::BlitFramebufferANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureRenderbufferStorageMultisampleANGLE(const Context *context,
+CallCapture CaptureRenderbufferStorageMultisampleANGLE(const State &glState,
                                                        bool isCallValid,
                                                        GLenum target,
                                                        GLsizei samples,
@@ -303,7 +303,7 @@
     return CallCapture(gl::EntryPoint::RenderbufferStorageMultisampleANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexImageANGLE(const Context *context,
+CallCapture CaptureGetTexImageANGLE(const State &glState,
                                     bool isCallValid,
                                     TextureTarget targetPacked,
                                     GLint level,
@@ -320,14 +320,14 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
     InitParamValue(ParamType::TvoidPointer, pixels, &pixelsParam.value);
-    CaptureGetTexImageANGLE_pixels(context, isCallValid, targetPacked, level, format, type, pixels,
+    CaptureGetTexImageANGLE_pixels(glState, isCallValid, targetPacked, level, format, type, pixels,
                                    &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
 
     return CallCapture(gl::EntryPoint::GetTexImageANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetRenderbufferImageANGLE(const Context *context,
+CallCapture CaptureGetRenderbufferImageANGLE(const State &glState,
                                              bool isCallValid,
                                              GLenum target,
                                              GLenum format,
@@ -342,14 +342,14 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
     InitParamValue(ParamType::TvoidPointer, pixels, &pixelsParam.value);
-    CaptureGetRenderbufferImageANGLE_pixels(context, isCallValid, target, format, type, pixels,
+    CaptureGetRenderbufferImageANGLE_pixels(glState, isCallValid, target, format, type, pixels,
                                             &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
 
     return CallCapture(gl::EntryPoint::GetRenderbufferImageANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawArraysInstancedANGLE(const Context *context,
+CallCapture CaptureDrawArraysInstancedANGLE(const State &glState,
                                             bool isCallValid,
                                             PrimitiveMode modePacked,
                                             GLint first,
@@ -366,7 +366,7 @@
     return CallCapture(gl::EntryPoint::DrawArraysInstancedANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawElementsInstancedANGLE(const Context *context,
+CallCapture CaptureDrawElementsInstancedANGLE(const State &glState,
                                               bool isCallValid,
                                               PrimitiveMode modePacked,
                                               GLsizei count,
@@ -382,7 +382,7 @@
 
     ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
-    CaptureDrawElementsInstancedANGLE_indices(context, isCallValid, modePacked, count, typePacked,
+    CaptureDrawElementsInstancedANGLE_indices(glState, isCallValid, modePacked, count, typePacked,
                                               indices, primcount, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
@@ -391,7 +391,7 @@
     return CallCapture(gl::EntryPoint::DrawElementsInstancedANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribDivisorANGLE(const Context *context,
+CallCapture CaptureVertexAttribDivisorANGLE(const State &glState,
                                             bool isCallValid,
                                             GLuint index,
                                             GLuint divisor)
@@ -404,7 +404,7 @@
     return CallCapture(gl::EntryPoint::VertexAttribDivisorANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureMultiDrawArraysANGLE(const Context *context,
+CallCapture CaptureMultiDrawArraysANGLE(const State &glState,
                                         bool isCallValid,
                                         PrimitiveMode modePacked,
                                         const GLint *firsts,
@@ -417,13 +417,13 @@
 
     ParamCapture firstsParam("firsts", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, firsts, &firstsParam.value);
-    CaptureMultiDrawArraysANGLE_firsts(context, isCallValid, modePacked, firsts, counts, drawcount,
+    CaptureMultiDrawArraysANGLE_firsts(glState, isCallValid, modePacked, firsts, counts, drawcount,
                                        &firstsParam);
     paramBuffer.addParam(std::move(firstsParam));
 
     ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
-    CaptureMultiDrawArraysANGLE_counts(context, isCallValid, modePacked, firsts, counts, drawcount,
+    CaptureMultiDrawArraysANGLE_counts(glState, isCallValid, modePacked, firsts, counts, drawcount,
                                        &countsParam);
     paramBuffer.addParam(std::move(countsParam));
 
@@ -432,7 +432,7 @@
     return CallCapture(gl::EntryPoint::MultiDrawArraysANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureMultiDrawArraysInstancedANGLE(const Context *context,
+CallCapture CaptureMultiDrawArraysInstancedANGLE(const State &glState,
                                                  bool isCallValid,
                                                  PrimitiveMode modePacked,
                                                  const GLint *firsts,
@@ -446,19 +446,19 @@
 
     ParamCapture firstsParam("firsts", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, firsts, &firstsParam.value);
-    CaptureMultiDrawArraysInstancedANGLE_firsts(context, isCallValid, modePacked, firsts, counts,
+    CaptureMultiDrawArraysInstancedANGLE_firsts(glState, isCallValid, modePacked, firsts, counts,
                                                 instanceCounts, drawcount, &firstsParam);
     paramBuffer.addParam(std::move(firstsParam));
 
     ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
-    CaptureMultiDrawArraysInstancedANGLE_counts(context, isCallValid, modePacked, firsts, counts,
+    CaptureMultiDrawArraysInstancedANGLE_counts(glState, isCallValid, modePacked, firsts, counts,
                                                 instanceCounts, drawcount, &countsParam);
     paramBuffer.addParam(std::move(countsParam));
 
     ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, instanceCounts, &instanceCountsParam.value);
-    CaptureMultiDrawArraysInstancedANGLE_instanceCounts(context, isCallValid, modePacked, firsts,
+    CaptureMultiDrawArraysInstancedANGLE_instanceCounts(glState, isCallValid, modePacked, firsts,
                                                         counts, instanceCounts, drawcount,
                                                         &instanceCountsParam);
     paramBuffer.addParam(std::move(instanceCountsParam));
@@ -468,7 +468,7 @@
     return CallCapture(gl::EntryPoint::MultiDrawArraysInstancedANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureMultiDrawElementsANGLE(const Context *context,
+CallCapture CaptureMultiDrawElementsANGLE(const State &glState,
                                           bool isCallValid,
                                           PrimitiveMode modePacked,
                                           const GLsizei *counts,
@@ -482,7 +482,7 @@
 
     ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
-    CaptureMultiDrawElementsANGLE_counts(context, isCallValid, modePacked, counts, typePacked,
+    CaptureMultiDrawElementsANGLE_counts(glState, isCallValid, modePacked, counts, typePacked,
                                          indices, drawcount, &countsParam);
     paramBuffer.addParam(std::move(countsParam));
 
@@ -490,7 +490,7 @@
 
     ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointerPointer);
     InitParamValue(ParamType::TGLvoidConstPointerPointer, indices, &indicesParam.value);
-    CaptureMultiDrawElementsANGLE_indices(context, isCallValid, modePacked, counts, typePacked,
+    CaptureMultiDrawElementsANGLE_indices(glState, isCallValid, modePacked, counts, typePacked,
                                           indices, drawcount, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
@@ -499,7 +499,7 @@
     return CallCapture(gl::EntryPoint::MultiDrawElementsANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureMultiDrawElementsInstancedANGLE(const Context *context,
+CallCapture CaptureMultiDrawElementsInstancedANGLE(const State &glState,
                                                    bool isCallValid,
                                                    PrimitiveMode modePacked,
                                                    const GLsizei *counts,
@@ -514,7 +514,7 @@
 
     ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
-    CaptureMultiDrawElementsInstancedANGLE_counts(context, isCallValid, modePacked, counts,
+    CaptureMultiDrawElementsInstancedANGLE_counts(glState, isCallValid, modePacked, counts,
                                                   typePacked, indices, instanceCounts, drawcount,
                                                   &countsParam);
     paramBuffer.addParam(std::move(countsParam));
@@ -523,14 +523,14 @@
 
     ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointerPointer);
     InitParamValue(ParamType::TGLvoidConstPointerPointer, indices, &indicesParam.value);
-    CaptureMultiDrawElementsInstancedANGLE_indices(context, isCallValid, modePacked, counts,
+    CaptureMultiDrawElementsInstancedANGLE_indices(glState, isCallValid, modePacked, counts,
                                                    typePacked, indices, instanceCounts, drawcount,
                                                    &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
     ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
     InitParamValue(ParamType::TGLsizeiConstPointer, instanceCounts, &instanceCountsParam.value);
-    CaptureMultiDrawElementsInstancedANGLE_instanceCounts(context, isCallValid, modePacked, counts,
+    CaptureMultiDrawElementsInstancedANGLE_instanceCounts(glState, isCallValid, modePacked, counts,
                                                           typePacked, indices, instanceCounts,
                                                           drawcount, &instanceCountsParam);
     paramBuffer.addParam(std::move(instanceCountsParam));
@@ -540,7 +540,7 @@
     return CallCapture(gl::EntryPoint::MultiDrawElementsInstancedANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureProvokingVertexANGLE(const Context *context,
+CallCapture CaptureProvokingVertexANGLE(const State &glState,
                                         bool isCallValid,
                                         ProvokingVertexConvention modePacked)
 {
@@ -551,35 +551,31 @@
     return CallCapture(gl::EntryPoint::ProvokingVertexANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureRequestExtensionANGLE(const Context *context,
-                                         bool isCallValid,
-                                         const GLchar *name)
+CallCapture CaptureRequestExtensionANGLE(const State &glState, bool isCallValid, const GLchar *name)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureRequestExtensionANGLE_name(context, isCallValid, name, &nameParam);
+    CaptureRequestExtensionANGLE_name(glState, isCallValid, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::RequestExtensionANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureDisableExtensionANGLE(const Context *context,
-                                         bool isCallValid,
-                                         const GLchar *name)
+CallCapture CaptureDisableExtensionANGLE(const State &glState, bool isCallValid, const GLchar *name)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureDisableExtensionANGLE_name(context, isCallValid, name, &nameParam);
+    CaptureDisableExtensionANGLE_name(glState, isCallValid, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::DisableExtensionANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBooleanvRobustANGLE(const Context *context,
+CallCapture CaptureGetBooleanvRobustANGLE(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
@@ -593,20 +589,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetBooleanvRobustANGLE_length(context, isCallValid, pname, bufSize, length, params,
+    CaptureGetBooleanvRobustANGLE_length(glState, isCallValid, pname, bufSize, length, params,
                                          &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLbooleanPointer);
     InitParamValue(ParamType::TGLbooleanPointer, params, &paramsParam.value);
-    CaptureGetBooleanvRobustANGLE_params(context, isCallValid, pname, bufSize, length, params,
+    CaptureGetBooleanvRobustANGLE_params(glState, isCallValid, pname, bufSize, length, params,
                                          &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetBooleanvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBufferParameterivRobustANGLE(const Context *context,
+CallCapture CaptureGetBufferParameterivRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    BufferBinding targetPacked,
                                                    GLenum pname,
@@ -622,20 +618,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetBufferParameterivRobustANGLE_length(context, isCallValid, targetPacked, pname,
+    CaptureGetBufferParameterivRobustANGLE_length(glState, isCallValid, targetPacked, pname,
                                                   bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetBufferParameterivRobustANGLE_params(context, isCallValid, targetPacked, pname,
+    CaptureGetBufferParameterivRobustANGLE_params(glState, isCallValid, targetPacked, pname,
                                                   bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetBufferParameterivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFloatvRobustANGLE(const Context *context,
+CallCapture CaptureGetFloatvRobustANGLE(const State &glState,
                                         bool isCallValid,
                                         GLenum pname,
                                         GLsizei bufSize,
@@ -649,20 +645,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetFloatvRobustANGLE_length(context, isCallValid, pname, bufSize, length, params,
+    CaptureGetFloatvRobustANGLE_length(glState, isCallValid, pname, bufSize, length, params,
                                        &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetFloatvRobustANGLE_params(context, isCallValid, pname, bufSize, length, params,
+    CaptureGetFloatvRobustANGLE_params(glState, isCallValid, pname, bufSize, length, params,
                                        &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetFloatvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFramebufferAttachmentParameterivRobustANGLE(const Context *context,
+CallCapture CaptureGetFramebufferAttachmentParameterivRobustANGLE(const State &glState,
                                                                   bool isCallValid,
                                                                   GLenum target,
                                                                   GLenum attachment,
@@ -682,20 +678,20 @@
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
     CaptureGetFramebufferAttachmentParameterivRobustANGLE_length(
-        context, isCallValid, target, attachment, pname, bufSize, length, params, &lengthParam);
+        glState, isCallValid, target, attachment, pname, bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
     CaptureGetFramebufferAttachmentParameterivRobustANGLE_params(
-        context, isCallValid, target, attachment, pname, bufSize, length, params, &paramsParam);
+        glState, isCallValid, target, attachment, pname, bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetFramebufferAttachmentParameterivRobustANGLE,
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureGetIntegervRobustANGLE(const Context *context,
+CallCapture CaptureGetIntegervRobustANGLE(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
@@ -709,20 +705,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetIntegervRobustANGLE_length(context, isCallValid, pname, bufSize, length, data,
+    CaptureGetIntegervRobustANGLE_length(glState, isCallValid, pname, bufSize, length, data,
                                          &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture dataParam("data", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, data, &dataParam.value);
-    CaptureGetIntegervRobustANGLE_data(context, isCallValid, pname, bufSize, length, data,
+    CaptureGetIntegervRobustANGLE_data(glState, isCallValid, pname, bufSize, length, data,
                                        &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetIntegervRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramivRobustANGLE(const Context *context,
+CallCapture CaptureGetProgramivRobustANGLE(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLenum pname,
@@ -738,20 +734,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetProgramivRobustANGLE_length(context, isCallValid, programPacked, pname, bufSize,
+    CaptureGetProgramivRobustANGLE_length(glState, isCallValid, programPacked, pname, bufSize,
                                           length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetProgramivRobustANGLE_params(context, isCallValid, programPacked, pname, bufSize,
+    CaptureGetProgramivRobustANGLE_params(glState, isCallValid, programPacked, pname, bufSize,
                                           length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetProgramivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetRenderbufferParameterivRobustANGLE(const Context *context,
+CallCapture CaptureGetRenderbufferParameterivRobustANGLE(const State &glState,
                                                          bool isCallValid,
                                                          GLenum target,
                                                          GLenum pname,
@@ -767,13 +763,13 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetRenderbufferParameterivRobustANGLE_length(context, isCallValid, target, pname,
+    CaptureGetRenderbufferParameterivRobustANGLE_length(glState, isCallValid, target, pname,
                                                         bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetRenderbufferParameterivRobustANGLE_params(context, isCallValid, target, pname,
+    CaptureGetRenderbufferParameterivRobustANGLE_params(glState, isCallValid, target, pname,
                                                         bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
@@ -781,7 +777,7 @@
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureGetShaderivRobustANGLE(const Context *context,
+CallCapture CaptureGetShaderivRobustANGLE(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID shaderPacked,
                                           GLenum pname,
@@ -797,20 +793,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetShaderivRobustANGLE_length(context, isCallValid, shaderPacked, pname, bufSize, length,
+    CaptureGetShaderivRobustANGLE_length(glState, isCallValid, shaderPacked, pname, bufSize, length,
                                          params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetShaderivRobustANGLE_params(context, isCallValid, shaderPacked, pname, bufSize, length,
+    CaptureGetShaderivRobustANGLE_params(glState, isCallValid, shaderPacked, pname, bufSize, length,
                                          params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetShaderivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterfvRobustANGLE(const Context *context,
+CallCapture CaptureGetTexParameterfvRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -826,20 +822,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetTexParameterfvRobustANGLE_length(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetTexParameterfvRobustANGLE_length(glState, isCallValid, targetPacked, pname, bufSize,
                                                length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetTexParameterfvRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetTexParameterfvRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
                                                length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterfvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterivRobustANGLE(const Context *context,
+CallCapture CaptureGetTexParameterivRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -855,20 +851,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetTexParameterivRobustANGLE_length(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetTexParameterivRobustANGLE_length(glState, isCallValid, targetPacked, pname, bufSize,
                                                length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexParameterivRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetTexParameterivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
                                                length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUniformfvRobustANGLE(const Context *context,
+CallCapture CaptureGetUniformfvRobustANGLE(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -884,20 +880,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetUniformfvRobustANGLE_length(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetUniformfvRobustANGLE_length(glState, isCallValid, programPacked, location, bufSize,
                                           length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetUniformfvRobustANGLE_params(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetUniformfvRobustANGLE_params(glState, isCallValid, programPacked, location, bufSize,
                                           length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetUniformfvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUniformivRobustANGLE(const Context *context,
+CallCapture CaptureGetUniformivRobustANGLE(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -913,20 +909,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetUniformivRobustANGLE_length(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetUniformivRobustANGLE_length(glState, isCallValid, programPacked, location, bufSize,
                                           length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetUniformivRobustANGLE_params(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetUniformivRobustANGLE_params(glState, isCallValid, programPacked, location, bufSize,
                                           length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetUniformivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribfvRobustANGLE(const Context *context,
+CallCapture CaptureGetVertexAttribfvRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -942,20 +938,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetVertexAttribfvRobustANGLE_length(context, isCallValid, index, pname, bufSize, length,
+    CaptureGetVertexAttribfvRobustANGLE_length(glState, isCallValid, index, pname, bufSize, length,
                                                params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetVertexAttribfvRobustANGLE_params(context, isCallValid, index, pname, bufSize, length,
+    CaptureGetVertexAttribfvRobustANGLE_params(glState, isCallValid, index, pname, bufSize, length,
                                                params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribfvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribivRobustANGLE(const Context *context,
+CallCapture CaptureGetVertexAttribivRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -971,20 +967,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetVertexAttribivRobustANGLE_length(context, isCallValid, index, pname, bufSize, length,
+    CaptureGetVertexAttribivRobustANGLE_length(glState, isCallValid, index, pname, bufSize, length,
                                                params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetVertexAttribivRobustANGLE_params(context, isCallValid, index, pname, bufSize, length,
+    CaptureGetVertexAttribivRobustANGLE_params(glState, isCallValid, index, pname, bufSize, length,
                                                params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribPointervRobustANGLE(const Context *context,
+CallCapture CaptureGetVertexAttribPointervRobustANGLE(const State &glState,
                                                       bool isCallValid,
                                                       GLuint index,
                                                       GLenum pname,
@@ -1000,20 +996,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetVertexAttribPointervRobustANGLE_length(context, isCallValid, index, pname, bufSize,
+    CaptureGetVertexAttribPointervRobustANGLE_length(glState, isCallValid, index, pname, bufSize,
                                                      length, pointer, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture pointerParam("pointer", ParamType::TvoidPointerPointer);
     InitParamValue(ParamType::TvoidPointerPointer, pointer, &pointerParam.value);
-    CaptureGetVertexAttribPointervRobustANGLE_pointer(context, isCallValid, index, pname, bufSize,
+    CaptureGetVertexAttribPointervRobustANGLE_pointer(glState, isCallValid, index, pname, bufSize,
                                                       length, pointer, &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribPointervRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureReadPixelsRobustANGLE(const Context *context,
+CallCapture CaptureReadPixelsRobustANGLE(const State &glState,
                                          bool isCallValid,
                                          GLint x,
                                          GLint y,
@@ -1039,32 +1035,32 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureReadPixelsRobustANGLE_length(context, isCallValid, x, y, width, height, format, type,
+    CaptureReadPixelsRobustANGLE_length(glState, isCallValid, x, y, width, height, format, type,
                                         bufSize, length, columns, rows, pixels, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture columnsParam("columns", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, columns, &columnsParam.value);
-    CaptureReadPixelsRobustANGLE_columns(context, isCallValid, x, y, width, height, format, type,
+    CaptureReadPixelsRobustANGLE_columns(glState, isCallValid, x, y, width, height, format, type,
                                          bufSize, length, columns, rows, pixels, &columnsParam);
     paramBuffer.addParam(std::move(columnsParam));
 
     ParamCapture rowsParam("rows", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, rows, &rowsParam.value);
-    CaptureReadPixelsRobustANGLE_rows(context, isCallValid, x, y, width, height, format, type,
+    CaptureReadPixelsRobustANGLE_rows(glState, isCallValid, x, y, width, height, format, type,
                                       bufSize, length, columns, rows, pixels, &rowsParam);
     paramBuffer.addParam(std::move(rowsParam));
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
     InitParamValue(ParamType::TvoidPointer, pixels, &pixelsParam.value);
-    CaptureReadPixelsRobustANGLE_pixels(context, isCallValid, x, y, width, height, format, type,
+    CaptureReadPixelsRobustANGLE_pixels(glState, isCallValid, x, y, width, height, format, type,
                                         bufSize, length, columns, rows, pixels, &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
 
     return CallCapture(gl::EntryPoint::ReadPixelsRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexImage2DRobustANGLE(const Context *context,
+CallCapture CaptureTexImage2DRobustANGLE(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -1091,7 +1087,7 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexImage2DRobustANGLE_pixels(context, isCallValid, targetPacked, level, internalformat,
+    CaptureTexImage2DRobustANGLE_pixels(glState, isCallValid, targetPacked, level, internalformat,
                                         width, height, border, format, type, bufSize, pixels,
                                         &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
@@ -1099,7 +1095,7 @@
     return CallCapture(gl::EntryPoint::TexImage2DRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterfvRobustANGLE(const Context *context,
+CallCapture CaptureTexParameterfvRobustANGLE(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLenum pname,
@@ -1114,14 +1110,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
-    CaptureTexParameterfvRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureTexParameterfvRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
                                             params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterfvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterivRobustANGLE(const Context *context,
+CallCapture CaptureTexParameterivRobustANGLE(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLenum pname,
@@ -1136,14 +1132,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
-    CaptureTexParameterivRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureTexParameterivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
                                             params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexSubImage2DRobustANGLE(const Context *context,
+CallCapture CaptureTexSubImage2DRobustANGLE(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -1170,7 +1166,7 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexSubImage2DRobustANGLE_pixels(context, isCallValid, targetPacked, level, xoffset,
+    CaptureTexSubImage2DRobustANGLE_pixels(glState, isCallValid, targetPacked, level, xoffset,
                                            yoffset, width, height, format, type, bufSize, pixels,
                                            &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
@@ -1178,7 +1174,7 @@
     return CallCapture(gl::EntryPoint::TexSubImage2DRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexImage3DRobustANGLE(const Context *context,
+CallCapture CaptureTexImage3DRobustANGLE(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -1207,7 +1203,7 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexImage3DRobustANGLE_pixels(context, isCallValid, targetPacked, level, internalformat,
+    CaptureTexImage3DRobustANGLE_pixels(glState, isCallValid, targetPacked, level, internalformat,
                                         width, height, depth, border, format, type, bufSize, pixels,
                                         &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
@@ -1215,7 +1211,7 @@
     return CallCapture(gl::EntryPoint::TexImage3DRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexSubImage3DRobustANGLE(const Context *context,
+CallCapture CaptureTexSubImage3DRobustANGLE(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -1246,7 +1242,7 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexSubImage3DRobustANGLE_pixels(context, isCallValid, targetPacked, level, xoffset,
+    CaptureTexSubImage3DRobustANGLE_pixels(glState, isCallValid, targetPacked, level, xoffset,
                                            yoffset, zoffset, width, height, depth, format, type,
                                            bufSize, pixels, &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
@@ -1254,7 +1250,7 @@
     return CallCapture(gl::EntryPoint::TexSubImage3DRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexImage2DRobustANGLE(const Context *context,
+CallCapture CaptureCompressedTexImage2DRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    TextureTarget targetPacked,
                                                    GLint level,
@@ -1280,7 +1276,7 @@
 
     ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
     InitParamValue(ParamType::TGLvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexImage2DRobustANGLE_data(context, isCallValid, targetPacked, level,
+    CaptureCompressedTexImage2DRobustANGLE_data(glState, isCallValid, targetPacked, level,
                                                 internalformat, width, height, border, imageSize,
                                                 dataSize, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
@@ -1288,7 +1284,7 @@
     return CallCapture(gl::EntryPoint::CompressedTexImage2DRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexSubImage2DRobustANGLE(const Context *context,
+CallCapture CaptureCompressedTexSubImage2DRobustANGLE(const State &glState,
                                                       bool isCallValid,
                                                       TextureTarget targetPacked,
                                                       GLint level,
@@ -1315,7 +1311,7 @@
 
     ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
     InitParamValue(ParamType::TGLvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexSubImage2DRobustANGLE_data(context, isCallValid, targetPacked, level,
+    CaptureCompressedTexSubImage2DRobustANGLE_data(glState, isCallValid, targetPacked, level,
                                                    xoffset, yoffset, width, height, format,
                                                    imageSize, dataSize, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
@@ -1323,7 +1319,7 @@
     return CallCapture(gl::EntryPoint::CompressedTexSubImage2DRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexImage3DRobustANGLE(const Context *context,
+CallCapture CaptureCompressedTexImage3DRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    TextureTarget targetPacked,
                                                    GLint level,
@@ -1351,7 +1347,7 @@
 
     ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
     InitParamValue(ParamType::TGLvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexImage3DRobustANGLE_data(context, isCallValid, targetPacked, level,
+    CaptureCompressedTexImage3DRobustANGLE_data(glState, isCallValid, targetPacked, level,
                                                 internalformat, width, height, depth, border,
                                                 imageSize, dataSize, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
@@ -1359,7 +1355,7 @@
     return CallCapture(gl::EntryPoint::CompressedTexImage3DRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexSubImage3DRobustANGLE(const Context *context,
+CallCapture CaptureCompressedTexSubImage3DRobustANGLE(const State &glState,
                                                       bool isCallValid,
                                                       TextureTarget targetPacked,
                                                       GLint level,
@@ -1390,7 +1386,7 @@
 
     ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
     InitParamValue(ParamType::TGLvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexSubImage3DRobustANGLE_data(context, isCallValid, targetPacked, level,
+    CaptureCompressedTexSubImage3DRobustANGLE_data(glState, isCallValid, targetPacked, level,
                                                    xoffset, yoffset, zoffset, width, height, depth,
                                                    format, imageSize, dataSize, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
@@ -1398,7 +1394,7 @@
     return CallCapture(gl::EntryPoint::CompressedTexSubImage3DRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryivRobustANGLE(const Context *context,
+CallCapture CaptureGetQueryivRobustANGLE(const State &glState,
                                          bool isCallValid,
                                          QueryType targetPacked,
                                          GLenum pname,
@@ -1414,20 +1410,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetQueryivRobustANGLE_length(context, isCallValid, targetPacked, pname, bufSize, length,
+    CaptureGetQueryivRobustANGLE_length(glState, isCallValid, targetPacked, pname, bufSize, length,
                                         params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetQueryivRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize, length,
+    CaptureGetQueryivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize, length,
                                         params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryObjectuivRobustANGLE(const Context *context,
+CallCapture CaptureGetQueryObjectuivRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 QueryID idPacked,
                                                 GLenum pname,
@@ -1443,20 +1439,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetQueryObjectuivRobustANGLE_length(context, isCallValid, idPacked, pname, bufSize,
+    CaptureGetQueryObjectuivRobustANGLE_length(glState, isCallValid, idPacked, pname, bufSize,
                                                length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetQueryObjectuivRobustANGLE_params(context, isCallValid, idPacked, pname, bufSize,
+    CaptureGetQueryObjectuivRobustANGLE_params(glState, isCallValid, idPacked, pname, bufSize,
                                                length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryObjectuivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBufferPointervRobustANGLE(const Context *context,
+CallCapture CaptureGetBufferPointervRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 BufferBinding targetPacked,
                                                 GLenum pname,
@@ -1472,20 +1468,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetBufferPointervRobustANGLE_length(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetBufferPointervRobustANGLE_length(glState, isCallValid, targetPacked, pname, bufSize,
                                                length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
     InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
-    CaptureGetBufferPointervRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetBufferPointervRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
                                                length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetBufferPointervRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetIntegeri_vRobustANGLE(const Context *context,
+CallCapture CaptureGetIntegeri_vRobustANGLE(const State &glState,
                                             bool isCallValid,
                                             GLenum target,
                                             GLuint index,
@@ -1501,20 +1497,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetIntegeri_vRobustANGLE_length(context, isCallValid, target, index, bufSize, length,
+    CaptureGetIntegeri_vRobustANGLE_length(glState, isCallValid, target, index, bufSize, length,
                                            data, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture dataParam("data", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, data, &dataParam.value);
-    CaptureGetIntegeri_vRobustANGLE_data(context, isCallValid, target, index, bufSize, length, data,
+    CaptureGetIntegeri_vRobustANGLE_data(glState, isCallValid, target, index, bufSize, length, data,
                                          &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetIntegeri_vRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetInternalformativRobustANGLE(const Context *context,
+CallCapture CaptureGetInternalformativRobustANGLE(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum internalformat,
@@ -1533,20 +1529,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetInternalformativRobustANGLE_length(context, isCallValid, target, internalformat,
+    CaptureGetInternalformativRobustANGLE_length(glState, isCallValid, target, internalformat,
                                                  pname, bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetInternalformativRobustANGLE_params(context, isCallValid, target, internalformat,
+    CaptureGetInternalformativRobustANGLE_params(glState, isCallValid, target, internalformat,
                                                  pname, bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetInternalformativRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribIivRobustANGLE(const Context *context,
+CallCapture CaptureGetVertexAttribIivRobustANGLE(const State &glState,
                                                  bool isCallValid,
                                                  GLuint index,
                                                  GLenum pname,
@@ -1562,20 +1558,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetVertexAttribIivRobustANGLE_length(context, isCallValid, index, pname, bufSize, length,
+    CaptureGetVertexAttribIivRobustANGLE_length(glState, isCallValid, index, pname, bufSize, length,
                                                 params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetVertexAttribIivRobustANGLE_params(context, isCallValid, index, pname, bufSize, length,
+    CaptureGetVertexAttribIivRobustANGLE_params(glState, isCallValid, index, pname, bufSize, length,
                                                 params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribIivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetVertexAttribIuivRobustANGLE(const Context *context,
+CallCapture CaptureGetVertexAttribIuivRobustANGLE(const State &glState,
                                                   bool isCallValid,
                                                   GLuint index,
                                                   GLenum pname,
@@ -1591,20 +1587,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetVertexAttribIuivRobustANGLE_length(context, isCallValid, index, pname, bufSize,
+    CaptureGetVertexAttribIuivRobustANGLE_length(glState, isCallValid, index, pname, bufSize,
                                                  length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetVertexAttribIuivRobustANGLE_params(context, isCallValid, index, pname, bufSize,
+    CaptureGetVertexAttribIuivRobustANGLE_params(glState, isCallValid, index, pname, bufSize,
                                                  length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetVertexAttribIuivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUniformuivRobustANGLE(const Context *context,
+CallCapture CaptureGetUniformuivRobustANGLE(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -1620,20 +1616,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetUniformuivRobustANGLE_length(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetUniformuivRobustANGLE_length(glState, isCallValid, programPacked, location, bufSize,
                                            length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetUniformuivRobustANGLE_params(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetUniformuivRobustANGLE_params(glState, isCallValid, programPacked, location, bufSize,
                                            length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetUniformuivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetActiveUniformBlockivRobustANGLE(const Context *context,
+CallCapture CaptureGetActiveUniformBlockivRobustANGLE(const State &glState,
                                                       bool isCallValid,
                                                       ShaderProgramID programPacked,
                                                       GLuint uniformBlockIndex,
@@ -1651,14 +1647,14 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetActiveUniformBlockivRobustANGLE_length(context, isCallValid, programPacked,
+    CaptureGetActiveUniformBlockivRobustANGLE_length(glState, isCallValid, programPacked,
                                                      uniformBlockIndex, pname, bufSize, length,
                                                      params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetActiveUniformBlockivRobustANGLE_params(context, isCallValid, programPacked,
+    CaptureGetActiveUniformBlockivRobustANGLE_params(glState, isCallValid, programPacked,
                                                      uniformBlockIndex, pname, bufSize, length,
                                                      params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
@@ -1666,7 +1662,7 @@
     return CallCapture(gl::EntryPoint::GetActiveUniformBlockivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetInteger64vRobustANGLE(const Context *context,
+CallCapture CaptureGetInteger64vRobustANGLE(const State &glState,
                                             bool isCallValid,
                                             GLenum pname,
                                             GLsizei bufSize,
@@ -1680,20 +1676,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetInteger64vRobustANGLE_length(context, isCallValid, pname, bufSize, length, data,
+    CaptureGetInteger64vRobustANGLE_length(glState, isCallValid, pname, bufSize, length, data,
                                            &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture dataParam("data", ParamType::TGLint64Pointer);
     InitParamValue(ParamType::TGLint64Pointer, data, &dataParam.value);
-    CaptureGetInteger64vRobustANGLE_data(context, isCallValid, pname, bufSize, length, data,
+    CaptureGetInteger64vRobustANGLE_data(glState, isCallValid, pname, bufSize, length, data,
                                          &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetInteger64vRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetInteger64i_vRobustANGLE(const Context *context,
+CallCapture CaptureGetInteger64i_vRobustANGLE(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLuint index,
@@ -1709,20 +1705,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetInteger64i_vRobustANGLE_length(context, isCallValid, target, index, bufSize, length,
+    CaptureGetInteger64i_vRobustANGLE_length(glState, isCallValid, target, index, bufSize, length,
                                              data, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture dataParam("data", ParamType::TGLint64Pointer);
     InitParamValue(ParamType::TGLint64Pointer, data, &dataParam.value);
-    CaptureGetInteger64i_vRobustANGLE_data(context, isCallValid, target, index, bufSize, length,
+    CaptureGetInteger64i_vRobustANGLE_data(glState, isCallValid, target, index, bufSize, length,
                                            data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetInteger64i_vRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBufferParameteri64vRobustANGLE(const Context *context,
+CallCapture CaptureGetBufferParameteri64vRobustANGLE(const State &glState,
                                                      bool isCallValid,
                                                      BufferBinding targetPacked,
                                                      GLenum pname,
@@ -1738,20 +1734,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetBufferParameteri64vRobustANGLE_length(context, isCallValid, targetPacked, pname,
+    CaptureGetBufferParameteri64vRobustANGLE_length(glState, isCallValid, targetPacked, pname,
                                                     bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
     InitParamValue(ParamType::TGLint64Pointer, params, &paramsParam.value);
-    CaptureGetBufferParameteri64vRobustANGLE_params(context, isCallValid, targetPacked, pname,
+    CaptureGetBufferParameteri64vRobustANGLE_params(glState, isCallValid, targetPacked, pname,
                                                     bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetBufferParameteri64vRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterivRobustANGLE(const Context *context,
+CallCapture CaptureSamplerParameterivRobustANGLE(const State &glState,
                                                  bool isCallValid,
                                                  SamplerID samplerPacked,
                                                  GLuint pname,
@@ -1766,14 +1762,14 @@
 
     ParamCapture paramParam("param", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, param, &paramParam.value);
-    CaptureSamplerParameterivRobustANGLE_param(context, isCallValid, samplerPacked, pname, bufSize,
+    CaptureSamplerParameterivRobustANGLE_param(glState, isCallValid, samplerPacked, pname, bufSize,
                                                param, &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameterivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterfvRobustANGLE(const Context *context,
+CallCapture CaptureSamplerParameterfvRobustANGLE(const State &glState,
                                                  bool isCallValid,
                                                  SamplerID samplerPacked,
                                                  GLenum pname,
@@ -1788,14 +1784,14 @@
 
     ParamCapture paramParam("param", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, param, &paramParam.value);
-    CaptureSamplerParameterfvRobustANGLE_param(context, isCallValid, samplerPacked, pname, bufSize,
+    CaptureSamplerParameterfvRobustANGLE_param(glState, isCallValid, samplerPacked, pname, bufSize,
                                                param, &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameterfvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameterivRobustANGLE(const Context *context,
+CallCapture CaptureGetSamplerParameterivRobustANGLE(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID samplerPacked,
                                                     GLenum pname,
@@ -1811,20 +1807,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetSamplerParameterivRobustANGLE_length(context, isCallValid, samplerPacked, pname,
+    CaptureGetSamplerParameterivRobustANGLE_length(glState, isCallValid, samplerPacked, pname,
                                                    bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameterivRobustANGLE_params(context, isCallValid, samplerPacked, pname,
+    CaptureGetSamplerParameterivRobustANGLE_params(glState, isCallValid, samplerPacked, pname,
                                                    bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameterivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameterfvRobustANGLE(const Context *context,
+CallCapture CaptureGetSamplerParameterfvRobustANGLE(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID samplerPacked,
                                                     GLenum pname,
@@ -1840,20 +1836,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetSamplerParameterfvRobustANGLE_length(context, isCallValid, samplerPacked, pname,
+    CaptureGetSamplerParameterfvRobustANGLE_length(glState, isCallValid, samplerPacked, pname,
                                                    bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameterfvRobustANGLE_params(context, isCallValid, samplerPacked, pname,
+    CaptureGetSamplerParameterfvRobustANGLE_params(glState, isCallValid, samplerPacked, pname,
                                                    bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameterfvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFramebufferParameterivRobustANGLE(const Context *context,
+CallCapture CaptureGetFramebufferParameterivRobustANGLE(const State &glState,
                                                         bool isCallValid,
                                                         GLenum target,
                                                         GLenum pname,
@@ -1869,13 +1865,13 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetFramebufferParameterivRobustANGLE_length(context, isCallValid, target, pname, bufSize,
+    CaptureGetFramebufferParameterivRobustANGLE_length(glState, isCallValid, target, pname, bufSize,
                                                        length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetFramebufferParameterivRobustANGLE_params(context, isCallValid, target, pname, bufSize,
+    CaptureGetFramebufferParameterivRobustANGLE_params(glState, isCallValid, target, pname, bufSize,
                                                        length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
@@ -1883,7 +1879,7 @@
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramInterfaceivRobustANGLE(const Context *context,
+CallCapture CaptureGetProgramInterfaceivRobustANGLE(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLenum programInterface,
@@ -1902,14 +1898,14 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetProgramInterfaceivRobustANGLE_length(context, isCallValid, programPacked,
+    CaptureGetProgramInterfaceivRobustANGLE_length(glState, isCallValid, programPacked,
                                                    programInterface, pname, bufSize, length, params,
                                                    &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetProgramInterfaceivRobustANGLE_params(context, isCallValid, programPacked,
+    CaptureGetProgramInterfaceivRobustANGLE_params(glState, isCallValid, programPacked,
                                                    programInterface, pname, bufSize, length, params,
                                                    &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
@@ -1917,7 +1913,7 @@
     return CallCapture(gl::EntryPoint::GetProgramInterfaceivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBooleani_vRobustANGLE(const Context *context,
+CallCapture CaptureGetBooleani_vRobustANGLE(const State &glState,
                                             bool isCallValid,
                                             GLenum target,
                                             GLuint index,
@@ -1933,20 +1929,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetBooleani_vRobustANGLE_length(context, isCallValid, target, index, bufSize, length,
+    CaptureGetBooleani_vRobustANGLE_length(glState, isCallValid, target, index, bufSize, length,
                                            data, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture dataParam("data", ParamType::TGLbooleanPointer);
     InitParamValue(ParamType::TGLbooleanPointer, data, &dataParam.value);
-    CaptureGetBooleani_vRobustANGLE_data(context, isCallValid, target, index, bufSize, length, data,
+    CaptureGetBooleani_vRobustANGLE_data(glState, isCallValid, target, index, bufSize, length, data,
                                          &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetBooleani_vRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetMultisamplefvRobustANGLE(const Context *context,
+CallCapture CaptureGetMultisamplefvRobustANGLE(const State &glState,
                                                bool isCallValid,
                                                GLenum pname,
                                                GLuint index,
@@ -1962,20 +1958,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetMultisamplefvRobustANGLE_length(context, isCallValid, pname, index, bufSize, length,
+    CaptureGetMultisamplefvRobustANGLE_length(glState, isCallValid, pname, index, bufSize, length,
                                               val, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture valParam("val", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, val, &valParam.value);
-    CaptureGetMultisamplefvRobustANGLE_val(context, isCallValid, pname, index, bufSize, length, val,
+    CaptureGetMultisamplefvRobustANGLE_val(glState, isCallValid, pname, index, bufSize, length, val,
                                            &valParam);
     paramBuffer.addParam(std::move(valParam));
 
     return CallCapture(gl::EntryPoint::GetMultisamplefvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexLevelParameterivRobustANGLE(const Context *context,
+CallCapture CaptureGetTexLevelParameterivRobustANGLE(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -1993,20 +1989,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetTexLevelParameterivRobustANGLE_length(context, isCallValid, targetPacked, level,
+    CaptureGetTexLevelParameterivRobustANGLE_length(glState, isCallValid, targetPacked, level,
                                                     pname, bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexLevelParameterivRobustANGLE_params(context, isCallValid, targetPacked, level,
+    CaptureGetTexLevelParameterivRobustANGLE_params(glState, isCallValid, targetPacked, level,
                                                     pname, bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexLevelParameterivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexLevelParameterfvRobustANGLE(const Context *context,
+CallCapture CaptureGetTexLevelParameterfvRobustANGLE(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -2024,20 +2020,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetTexLevelParameterfvRobustANGLE_length(context, isCallValid, targetPacked, level,
+    CaptureGetTexLevelParameterfvRobustANGLE_length(glState, isCallValid, targetPacked, level,
                                                     pname, bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetTexLevelParameterfvRobustANGLE_params(context, isCallValid, targetPacked, level,
+    CaptureGetTexLevelParameterfvRobustANGLE_params(glState, isCallValid, targetPacked, level,
                                                     pname, bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexLevelParameterfvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetPointervRobustANGLERobustANGLE(const Context *context,
+CallCapture CaptureGetPointervRobustANGLERobustANGLE(const State &glState,
                                                      bool isCallValid,
                                                      GLenum pname,
                                                      GLsizei bufSize,
@@ -2051,20 +2047,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetPointervRobustANGLERobustANGLE_length(context, isCallValid, pname, bufSize, length,
+    CaptureGetPointervRobustANGLERobustANGLE_length(glState, isCallValid, pname, bufSize, length,
                                                     params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
     InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
-    CaptureGetPointervRobustANGLERobustANGLE_params(context, isCallValid, pname, bufSize, length,
+    CaptureGetPointervRobustANGLERobustANGLE_params(glState, isCallValid, pname, bufSize, length,
                                                     params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetPointervRobustANGLERobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureReadnPixelsRobustANGLE(const Context *context,
+CallCapture CaptureReadnPixelsRobustANGLE(const State &glState,
                                           bool isCallValid,
                                           GLint x,
                                           GLint y,
@@ -2090,32 +2086,32 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureReadnPixelsRobustANGLE_length(context, isCallValid, x, y, width, height, format, type,
+    CaptureReadnPixelsRobustANGLE_length(glState, isCallValid, x, y, width, height, format, type,
                                          bufSize, length, columns, rows, data, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture columnsParam("columns", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, columns, &columnsParam.value);
-    CaptureReadnPixelsRobustANGLE_columns(context, isCallValid, x, y, width, height, format, type,
+    CaptureReadnPixelsRobustANGLE_columns(glState, isCallValid, x, y, width, height, format, type,
                                           bufSize, length, columns, rows, data, &columnsParam);
     paramBuffer.addParam(std::move(columnsParam));
 
     ParamCapture rowsParam("rows", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, rows, &rowsParam.value);
-    CaptureReadnPixelsRobustANGLE_rows(context, isCallValid, x, y, width, height, format, type,
+    CaptureReadnPixelsRobustANGLE_rows(glState, isCallValid, x, y, width, height, format, type,
                                        bufSize, length, columns, rows, data, &rowsParam);
     paramBuffer.addParam(std::move(rowsParam));
 
     ParamCapture dataParam("data", ParamType::TvoidPointer);
     InitParamValue(ParamType::TvoidPointer, data, &dataParam.value);
-    CaptureReadnPixelsRobustANGLE_data(context, isCallValid, x, y, width, height, format, type,
+    CaptureReadnPixelsRobustANGLE_data(glState, isCallValid, x, y, width, height, format, type,
                                        bufSize, length, columns, rows, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::ReadnPixelsRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetnUniformfvRobustANGLE(const Context *context,
+CallCapture CaptureGetnUniformfvRobustANGLE(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -2131,20 +2127,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetnUniformfvRobustANGLE_length(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetnUniformfvRobustANGLE_length(glState, isCallValid, programPacked, location, bufSize,
                                            length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetnUniformfvRobustANGLE_params(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetnUniformfvRobustANGLE_params(glState, isCallValid, programPacked, location, bufSize,
                                            length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetnUniformfvRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetnUniformivRobustANGLE(const Context *context,
+CallCapture CaptureGetnUniformivRobustANGLE(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -2160,20 +2156,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetnUniformivRobustANGLE_length(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetnUniformivRobustANGLE_length(glState, isCallValid, programPacked, location, bufSize,
                                            length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetnUniformivRobustANGLE_params(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetnUniformivRobustANGLE_params(glState, isCallValid, programPacked, location, bufSize,
                                            length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetnUniformivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetnUniformuivRobustANGLE(const Context *context,
+CallCapture CaptureGetnUniformuivRobustANGLE(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
@@ -2189,20 +2185,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetnUniformuivRobustANGLE_length(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetnUniformuivRobustANGLE_length(glState, isCallValid, programPacked, location, bufSize,
                                             length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetnUniformuivRobustANGLE_params(context, isCallValid, programPacked, location, bufSize,
+    CaptureGetnUniformuivRobustANGLE_params(glState, isCallValid, programPacked, location, bufSize,
                                             length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetnUniformuivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterIivRobustANGLE(const Context *context,
+CallCapture CaptureTexParameterIivRobustANGLE(const State &glState,
                                               bool isCallValid,
                                               TextureType targetPacked,
                                               GLenum pname,
@@ -2217,14 +2213,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
-    CaptureTexParameterIivRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureTexParameterIivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
                                              params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterIivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterIuivRobustANGLE(const Context *context,
+CallCapture CaptureTexParameterIuivRobustANGLE(const State &glState,
                                                bool isCallValid,
                                                TextureType targetPacked,
                                                GLenum pname,
@@ -2239,14 +2235,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, params, &paramsParam.value);
-    CaptureTexParameterIuivRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureTexParameterIuivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
                                               params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterIuivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterIivRobustANGLE(const Context *context,
+CallCapture CaptureGetTexParameterIivRobustANGLE(const State &glState,
                                                  bool isCallValid,
                                                  TextureType targetPacked,
                                                  GLenum pname,
@@ -2262,20 +2258,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetTexParameterIivRobustANGLE_length(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetTexParameterIivRobustANGLE_length(glState, isCallValid, targetPacked, pname, bufSize,
                                                 length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexParameterIivRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetTexParameterIivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
                                                 length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterIivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterIuivRobustANGLE(const Context *context,
+CallCapture CaptureGetTexParameterIuivRobustANGLE(const State &glState,
                                                   bool isCallValid,
                                                   TextureType targetPacked,
                                                   GLenum pname,
@@ -2291,20 +2287,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetTexParameterIuivRobustANGLE_length(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetTexParameterIuivRobustANGLE_length(glState, isCallValid, targetPacked, pname, bufSize,
                                                  length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetTexParameterIuivRobustANGLE_params(context, isCallValid, targetPacked, pname, bufSize,
+    CaptureGetTexParameterIuivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
                                                  length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterIuivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterIivRobustANGLE(const Context *context,
+CallCapture CaptureSamplerParameterIivRobustANGLE(const State &glState,
                                                   bool isCallValid,
                                                   SamplerID samplerPacked,
                                                   GLenum pname,
@@ -2319,14 +2315,14 @@
 
     ParamCapture paramParam("param", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, param, &paramParam.value);
-    CaptureSamplerParameterIivRobustANGLE_param(context, isCallValid, samplerPacked, pname, bufSize,
+    CaptureSamplerParameterIivRobustANGLE_param(glState, isCallValid, samplerPacked, pname, bufSize,
                                                 param, &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameterIivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterIuivRobustANGLE(const Context *context,
+CallCapture CaptureSamplerParameterIuivRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    SamplerID samplerPacked,
                                                    GLenum pname,
@@ -2341,14 +2337,14 @@
 
     ParamCapture paramParam("param", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, param, &paramParam.value);
-    CaptureSamplerParameterIuivRobustANGLE_param(context, isCallValid, samplerPacked, pname,
+    CaptureSamplerParameterIuivRobustANGLE_param(glState, isCallValid, samplerPacked, pname,
                                                  bufSize, param, &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameterIuivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameterIivRobustANGLE(const Context *context,
+CallCapture CaptureGetSamplerParameterIivRobustANGLE(const State &glState,
                                                      bool isCallValid,
                                                      SamplerID samplerPacked,
                                                      GLenum pname,
@@ -2364,20 +2360,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetSamplerParameterIivRobustANGLE_length(context, isCallValid, samplerPacked, pname,
+    CaptureGetSamplerParameterIivRobustANGLE_length(glState, isCallValid, samplerPacked, pname,
                                                     bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameterIivRobustANGLE_params(context, isCallValid, samplerPacked, pname,
+    CaptureGetSamplerParameterIivRobustANGLE_params(glState, isCallValid, samplerPacked, pname,
                                                     bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameterIivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameterIuivRobustANGLE(const Context *context,
+CallCapture CaptureGetSamplerParameterIuivRobustANGLE(const State &glState,
                                                       bool isCallValid,
                                                       SamplerID samplerPacked,
                                                       GLenum pname,
@@ -2393,20 +2389,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetSamplerParameterIuivRobustANGLE_length(context, isCallValid, samplerPacked, pname,
+    CaptureGetSamplerParameterIuivRobustANGLE_length(glState, isCallValid, samplerPacked, pname,
                                                      bufSize, length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameterIuivRobustANGLE_params(context, isCallValid, samplerPacked, pname,
+    CaptureGetSamplerParameterIuivRobustANGLE_params(glState, isCallValid, samplerPacked, pname,
                                                      bufSize, length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameterIuivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryObjectivRobustANGLE(const Context *context,
+CallCapture CaptureGetQueryObjectivRobustANGLE(const State &glState,
                                                bool isCallValid,
                                                QueryID idPacked,
                                                GLenum pname,
@@ -2422,20 +2418,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetQueryObjectivRobustANGLE_length(context, isCallValid, idPacked, pname, bufSize,
+    CaptureGetQueryObjectivRobustANGLE_length(glState, isCallValid, idPacked, pname, bufSize,
                                               length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetQueryObjectivRobustANGLE_params(context, isCallValid, idPacked, pname, bufSize,
+    CaptureGetQueryObjectivRobustANGLE_params(glState, isCallValid, idPacked, pname, bufSize,
                                               length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryObjectivRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryObjecti64vRobustANGLE(const Context *context,
+CallCapture CaptureGetQueryObjecti64vRobustANGLE(const State &glState,
                                                  bool isCallValid,
                                                  QueryID idPacked,
                                                  GLenum pname,
@@ -2451,20 +2447,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetQueryObjecti64vRobustANGLE_length(context, isCallValid, idPacked, pname, bufSize,
+    CaptureGetQueryObjecti64vRobustANGLE_length(glState, isCallValid, idPacked, pname, bufSize,
                                                 length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
     InitParamValue(ParamType::TGLint64Pointer, params, &paramsParam.value);
-    CaptureGetQueryObjecti64vRobustANGLE_params(context, isCallValid, idPacked, pname, bufSize,
+    CaptureGetQueryObjecti64vRobustANGLE_params(glState, isCallValid, idPacked, pname, bufSize,
                                                 length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryObjecti64vRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryObjectui64vRobustANGLE(const Context *context,
+CallCapture CaptureGetQueryObjectui64vRobustANGLE(const State &glState,
                                                   bool isCallValid,
                                                   QueryID idPacked,
                                                   GLenum pname,
@@ -2480,20 +2476,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetQueryObjectui64vRobustANGLE_length(context, isCallValid, idPacked, pname, bufSize,
+    CaptureGetQueryObjectui64vRobustANGLE_length(glState, isCallValid, idPacked, pname, bufSize,
                                                  length, params, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture paramsParam("params", ParamType::TGLuint64Pointer);
     InitParamValue(ParamType::TGLuint64Pointer, params, &paramsParam.value);
-    CaptureGetQueryObjectui64vRobustANGLE_params(context, isCallValid, idPacked, pname, bufSize,
+    CaptureGetQueryObjectui64vRobustANGLE_params(glState, isCallValid, idPacked, pname, bufSize,
                                                  length, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryObjectui64vRobustANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexImage2DExternalANGLE(const Context *context,
+CallCapture CaptureTexImage2DExternalANGLE(const State &glState,
                                            bool isCallValid,
                                            TextureTarget targetPacked,
                                            GLint level,
@@ -2518,7 +2514,7 @@
     return CallCapture(gl::EntryPoint::TexImage2DExternalANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureInvalidateTextureANGLE(const Context *context,
+CallCapture CaptureInvalidateTextureANGLE(const State &glState,
                                           bool isCallValid,
                                           TextureType targetPacked)
 {
@@ -2529,7 +2525,7 @@
     return CallCapture(gl::EntryPoint::InvalidateTextureANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorage2DMultisampleANGLE(const Context *context,
+CallCapture CaptureTexStorage2DMultisampleANGLE(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLsizei samples,
@@ -2551,7 +2547,7 @@
     return CallCapture(gl::EntryPoint::TexStorage2DMultisampleANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexLevelParameterivANGLE(const Context *context,
+CallCapture CaptureGetTexLevelParameterivANGLE(const State &glState,
                                                bool isCallValid,
                                                TextureTarget targetPacked,
                                                GLint level,
@@ -2566,14 +2562,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexLevelParameterivANGLE_params(context, isCallValid, targetPacked, level, pname,
+    CaptureGetTexLevelParameterivANGLE_params(glState, isCallValid, targetPacked, level, pname,
                                               params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexLevelParameterivANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexLevelParameterfvANGLE(const Context *context,
+CallCapture CaptureGetTexLevelParameterfvANGLE(const State &glState,
                                                bool isCallValid,
                                                TextureTarget targetPacked,
                                                GLint level,
@@ -2588,14 +2584,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetTexLevelParameterfvANGLE_params(context, isCallValid, targetPacked, level, pname,
+    CaptureGetTexLevelParameterfvANGLE_params(glState, isCallValid, targetPacked, level, pname,
                                               params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexLevelParameterfvANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetMultisamplefvANGLE(const Context *context,
+CallCapture CaptureGetMultisamplefvANGLE(const State &glState,
                                          bool isCallValid,
                                          GLenum pname,
                                          GLuint index,
@@ -2608,13 +2604,13 @@
 
     ParamCapture valParam("val", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, val, &valParam.value);
-    CaptureGetMultisamplefvANGLE_val(context, isCallValid, pname, index, val, &valParam);
+    CaptureGetMultisamplefvANGLE_val(glState, isCallValid, pname, index, val, &valParam);
     paramBuffer.addParam(std::move(valParam));
 
     return CallCapture(gl::EntryPoint::GetMultisamplefvANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureSampleMaskiANGLE(const Context *context,
+CallCapture CaptureSampleMaskiANGLE(const State &glState,
                                     bool isCallValid,
                                     GLuint maskNumber,
                                     GLbitfield mask)
@@ -2627,7 +2623,7 @@
     return CallCapture(gl::EntryPoint::SampleMaskiANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTranslatedShaderSourceANGLE(const Context *context,
+CallCapture CaptureGetTranslatedShaderSourceANGLE(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID shaderPacked,
                                                   GLsizei bufsize,
@@ -2641,20 +2637,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetTranslatedShaderSourceANGLE_length(context, isCallValid, shaderPacked, bufsize,
+    CaptureGetTranslatedShaderSourceANGLE_length(glState, isCallValid, shaderPacked, bufsize,
                                                  length, source, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture sourceParam("source", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, source, &sourceParam.value);
-    CaptureGetTranslatedShaderSourceANGLE_source(context, isCallValid, shaderPacked, bufsize,
+    CaptureGetTranslatedShaderSourceANGLE_source(glState, isCallValid, shaderPacked, bufsize,
                                                  length, source, &sourceParam);
     paramBuffer.addParam(std::move(sourceParam));
 
     return CallCapture(gl::EntryPoint::GetTranslatedShaderSourceANGLE, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindUniformLocationCHROMIUM(const Context *context,
+CallCapture CaptureBindUniformLocationCHROMIUM(const State &glState,
                                                bool isCallValid,
                                                ShaderProgramID programPacked,
                                                GLint location,
@@ -2667,14 +2663,14 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureBindUniformLocationCHROMIUM_name(context, isCallValid, programPacked, location, name,
+    CaptureBindUniformLocationCHROMIUM_name(glState, isCallValid, programPacked, location, name,
                                             &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::BindUniformLocationCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedCopyTextureCHROMIUM(const Context *context,
+CallCapture CaptureCompressedCopyTextureCHROMIUM(const State &glState,
                                                  bool isCallValid,
                                                  TextureID sourceIdPacked,
                                                  TextureID destIdPacked)
@@ -2687,7 +2683,7 @@
     return CallCapture(gl::EntryPoint::CompressedCopyTextureCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureCopyTextureCHROMIUM(const Context *context,
+CallCapture CaptureCopyTextureCHROMIUM(const State &glState,
                                        bool isCallValid,
                                        TextureID sourceIdPacked,
                                        GLint sourceLevel,
@@ -2718,7 +2714,7 @@
     return CallCapture(gl::EntryPoint::CopyTextureCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureCopySubTextureCHROMIUM(const Context *context,
+CallCapture CaptureCopySubTextureCHROMIUM(const State &glState,
                                           bool isCallValid,
                                           TextureID sourceIdPacked,
                                           GLint sourceLevel,
@@ -2757,7 +2753,7 @@
     return CallCapture(gl::EntryPoint::CopySubTextureCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureCoverageModulationCHROMIUM(const Context *context,
+CallCapture CaptureCoverageModulationCHROMIUM(const State &glState,
                                               bool isCallValid,
                                               GLenum components)
 {
@@ -2769,7 +2765,7 @@
     return CallCapture(gl::EntryPoint::CoverageModulationCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureMatrixLoadfCHROMIUM(const Context *context,
+CallCapture CaptureMatrixLoadfCHROMIUM(const State &glState,
                                        bool isCallValid,
                                        GLenum matrixMode,
                                        const GLfloat *matrix)
@@ -2781,13 +2777,13 @@
 
     ParamCapture matrixParam("matrix", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, matrix, &matrixParam.value);
-    CaptureMatrixLoadfCHROMIUM_matrix(context, isCallValid, matrixMode, matrix, &matrixParam);
+    CaptureMatrixLoadfCHROMIUM_matrix(glState, isCallValid, matrixMode, matrix, &matrixParam);
     paramBuffer.addParam(std::move(matrixParam));
 
     return CallCapture(gl::EntryPoint::MatrixLoadfCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureMatrixLoadIdentityCHROMIUM(const Context *context,
+CallCapture CaptureMatrixLoadIdentityCHROMIUM(const State &glState,
                                               bool isCallValid,
                                               GLenum matrixMode)
 {
@@ -2799,7 +2795,7 @@
     return CallCapture(gl::EntryPoint::MatrixLoadIdentityCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureLoseContextCHROMIUM(const Context *context,
+CallCapture CaptureLoseContextCHROMIUM(const State &glState,
                                        bool isCallValid,
                                        GraphicsResetStatus currentPacked,
                                        GraphicsResetStatus otherPacked)
@@ -2812,7 +2808,7 @@
     return CallCapture(gl::EntryPoint::LoseContextCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenPathsCHROMIUM(const Context *context,
+CallCapture CaptureGenPathsCHROMIUM(const State &glState,
                                     bool isCallValid,
                                     GLsizei range,
                                     GLuint returnValue)
@@ -2828,7 +2824,7 @@
     return CallCapture(gl::EntryPoint::GenPathsCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeletePathsCHROMIUM(const Context *context,
+CallCapture CaptureDeletePathsCHROMIUM(const State &glState,
                                        bool isCallValid,
                                        PathID firstPacked,
                                        GLsizei range)
@@ -2841,7 +2837,7 @@
     return CallCapture(gl::EntryPoint::DeletePathsCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsPathCHROMIUM(const Context *context,
+CallCapture CaptureIsPathCHROMIUM(const State &glState,
                                   bool isCallValid,
                                   PathID pathPacked,
                                   GLboolean returnValue)
@@ -2857,7 +2853,7 @@
     return CallCapture(gl::EntryPoint::IsPathCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CapturePathCommandsCHROMIUM(const Context *context,
+CallCapture CapturePathCommandsCHROMIUM(const State &glState,
                                         bool isCallValid,
                                         PathID pathPacked,
                                         GLsizei numCommands,
@@ -2873,7 +2869,7 @@
 
     ParamCapture commandsParam("commands", ParamType::TGLubyteConstPointer);
     InitParamValue(ParamType::TGLubyteConstPointer, commands, &commandsParam.value);
-    CapturePathCommandsCHROMIUM_commands(context, isCallValid, pathPacked, numCommands, commands,
+    CapturePathCommandsCHROMIUM_commands(glState, isCallValid, pathPacked, numCommands, commands,
                                          numCoords, coordType, coords, &commandsParam);
     paramBuffer.addParam(std::move(commandsParam));
 
@@ -2882,14 +2878,14 @@
 
     ParamCapture coordsParam("coords", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, coords, &coordsParam.value);
-    CapturePathCommandsCHROMIUM_coords(context, isCallValid, pathPacked, numCommands, commands,
+    CapturePathCommandsCHROMIUM_coords(glState, isCallValid, pathPacked, numCommands, commands,
                                        numCoords, coordType, coords, &coordsParam);
     paramBuffer.addParam(std::move(coordsParam));
 
     return CallCapture(gl::EntryPoint::PathCommandsCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CapturePathParameterfCHROMIUM(const Context *context,
+CallCapture CapturePathParameterfCHROMIUM(const State &glState,
                                           bool isCallValid,
                                           PathID pathPacked,
                                           GLenum pname,
@@ -2904,7 +2900,7 @@
     return CallCapture(gl::EntryPoint::PathParameterfCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CapturePathParameteriCHROMIUM(const Context *context,
+CallCapture CapturePathParameteriCHROMIUM(const State &glState,
                                           bool isCallValid,
                                           PathID pathPacked,
                                           GLenum pname,
@@ -2919,7 +2915,7 @@
     return CallCapture(gl::EntryPoint::PathParameteriCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetPathParameterfvCHROMIUM(const Context *context,
+CallCapture CaptureGetPathParameterfvCHROMIUM(const State &glState,
                                               bool isCallValid,
                                               PathID pathPacked,
                                               GLenum pname,
@@ -2932,14 +2928,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, value, &valueParam.value);
-    CaptureGetPathParameterfvCHROMIUM_value(context, isCallValid, pathPacked, pname, value,
+    CaptureGetPathParameterfvCHROMIUM_value(glState, isCallValid, pathPacked, pname, value,
                                             &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::GetPathParameterfvCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetPathParameterivCHROMIUM(const Context *context,
+CallCapture CaptureGetPathParameterivCHROMIUM(const State &glState,
                                               bool isCallValid,
                                               PathID pathPacked,
                                               GLenum pname,
@@ -2952,14 +2948,14 @@
 
     ParamCapture valueParam("value", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, value, &valueParam.value);
-    CaptureGetPathParameterivCHROMIUM_value(context, isCallValid, pathPacked, pname, value,
+    CaptureGetPathParameterivCHROMIUM_value(glState, isCallValid, pathPacked, pname, value,
                                             &valueParam);
     paramBuffer.addParam(std::move(valueParam));
 
     return CallCapture(gl::EntryPoint::GetPathParameterivCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CapturePathStencilFuncCHROMIUM(const Context *context,
+CallCapture CapturePathStencilFuncCHROMIUM(const State &glState,
                                            bool isCallValid,
                                            GLenum func,
                                            GLint ref,
@@ -2974,7 +2970,7 @@
     return CallCapture(gl::EntryPoint::PathStencilFuncCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilFillPathCHROMIUM(const Context *context,
+CallCapture CaptureStencilFillPathCHROMIUM(const State &glState,
                                            bool isCallValid,
                                            PathID pathPacked,
                                            GLenum fillMode,
@@ -2989,7 +2985,7 @@
     return CallCapture(gl::EntryPoint::StencilFillPathCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilStrokePathCHROMIUM(const Context *context,
+CallCapture CaptureStencilStrokePathCHROMIUM(const State &glState,
                                              bool isCallValid,
                                              PathID pathPacked,
                                              GLint reference,
@@ -3004,7 +3000,7 @@
     return CallCapture(gl::EntryPoint::StencilStrokePathCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureCoverFillPathCHROMIUM(const Context *context,
+CallCapture CaptureCoverFillPathCHROMIUM(const State &glState,
                                          bool isCallValid,
                                          PathID pathPacked,
                                          GLenum coverMode)
@@ -3017,7 +3013,7 @@
     return CallCapture(gl::EntryPoint::CoverFillPathCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureCoverStrokePathCHROMIUM(const Context *context,
+CallCapture CaptureCoverStrokePathCHROMIUM(const State &glState,
                                            bool isCallValid,
                                            PathID pathPacked,
                                            GLenum coverMode)
@@ -3030,7 +3026,7 @@
     return CallCapture(gl::EntryPoint::CoverStrokePathCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilThenCoverFillPathCHROMIUM(const Context *context,
+CallCapture CaptureStencilThenCoverFillPathCHROMIUM(const State &glState,
                                                     bool isCallValid,
                                                     PathID pathPacked,
                                                     GLenum fillMode,
@@ -3047,7 +3043,7 @@
     return CallCapture(gl::EntryPoint::StencilThenCoverFillPathCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilThenCoverStrokePathCHROMIUM(const Context *context,
+CallCapture CaptureStencilThenCoverStrokePathCHROMIUM(const State &glState,
                                                       bool isCallValid,
                                                       PathID pathPacked,
                                                       GLint reference,
@@ -3064,7 +3060,7 @@
     return CallCapture(gl::EntryPoint::StencilThenCoverStrokePathCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureCoverFillPathInstancedCHROMIUM(const Context *context,
+CallCapture CaptureCoverFillPathInstancedCHROMIUM(const State &glState,
                                                   bool isCallValid,
                                                   GLsizei numPath,
                                                   GLenum pathNameType,
@@ -3082,7 +3078,7 @@
 
     ParamCapture pathsParam("paths", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, paths, &pathsParam.value);
-    CaptureCoverFillPathInstancedCHROMIUM_paths(context, isCallValid, numPath, pathNameType, paths,
+    CaptureCoverFillPathInstancedCHROMIUM_paths(glState, isCallValid, numPath, pathNameType, paths,
                                                 pathBasePacked, coverMode, transformType,
                                                 transformValues, &pathsParam);
     paramBuffer.addParam(std::move(pathsParam));
@@ -3095,14 +3091,14 @@
     ParamCapture transformValuesParam("transformValues", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, transformValues, &transformValuesParam.value);
     CaptureCoverFillPathInstancedCHROMIUM_transformValues(
-        context, isCallValid, numPath, pathNameType, paths, pathBasePacked, coverMode,
+        glState, isCallValid, numPath, pathNameType, paths, pathBasePacked, coverMode,
         transformType, transformValues, &transformValuesParam);
     paramBuffer.addParam(std::move(transformValuesParam));
 
     return CallCapture(gl::EntryPoint::CoverFillPathInstancedCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureCoverStrokePathInstancedCHROMIUM(const Context *context,
+CallCapture CaptureCoverStrokePathInstancedCHROMIUM(const State &glState,
                                                     bool isCallValid,
                                                     GLsizei numPath,
                                                     GLenum pathNameType,
@@ -3120,7 +3116,7 @@
 
     ParamCapture pathsParam("paths", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, paths, &pathsParam.value);
-    CaptureCoverStrokePathInstancedCHROMIUM_paths(context, isCallValid, numPath, pathNameType,
+    CaptureCoverStrokePathInstancedCHROMIUM_paths(glState, isCallValid, numPath, pathNameType,
                                                   paths, pathBasePacked, coverMode, transformType,
                                                   transformValues, &pathsParam);
     paramBuffer.addParam(std::move(pathsParam));
@@ -3133,14 +3129,14 @@
     ParamCapture transformValuesParam("transformValues", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, transformValues, &transformValuesParam.value);
     CaptureCoverStrokePathInstancedCHROMIUM_transformValues(
-        context, isCallValid, numPath, pathNameType, paths, pathBasePacked, coverMode,
+        glState, isCallValid, numPath, pathNameType, paths, pathBasePacked, coverMode,
         transformType, transformValues, &transformValuesParam);
     paramBuffer.addParam(std::move(transformValuesParam));
 
     return CallCapture(gl::EntryPoint::CoverStrokePathInstancedCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilStrokePathInstancedCHROMIUM(const Context *context,
+CallCapture CaptureStencilStrokePathInstancedCHROMIUM(const State &glState,
                                                       bool isCallValid,
                                                       GLsizei numPath,
                                                       GLenum pathNameType,
@@ -3159,7 +3155,7 @@
 
     ParamCapture pathsParam("paths", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, paths, &pathsParam.value);
-    CaptureStencilStrokePathInstancedCHROMIUM_paths(context, isCallValid, numPath, pathNameType,
+    CaptureStencilStrokePathInstancedCHROMIUM_paths(glState, isCallValid, numPath, pathNameType,
                                                     paths, pathBasePacked, reference, mask,
                                                     transformType, transformValues, &pathsParam);
     paramBuffer.addParam(std::move(pathsParam));
@@ -3173,14 +3169,14 @@
     ParamCapture transformValuesParam("transformValues", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, transformValues, &transformValuesParam.value);
     CaptureStencilStrokePathInstancedCHROMIUM_transformValues(
-        context, isCallValid, numPath, pathNameType, paths, pathBasePacked, reference, mask,
+        glState, isCallValid, numPath, pathNameType, paths, pathBasePacked, reference, mask,
         transformType, transformValues, &transformValuesParam);
     paramBuffer.addParam(std::move(transformValuesParam));
 
     return CallCapture(gl::EntryPoint::StencilStrokePathInstancedCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilFillPathInstancedCHROMIUM(const Context *context,
+CallCapture CaptureStencilFillPathInstancedCHROMIUM(const State &glState,
                                                     bool isCallValid,
                                                     GLsizei numPaths,
                                                     GLenum pathNameType,
@@ -3199,7 +3195,7 @@
 
     ParamCapture pathsParam("paths", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, paths, &pathsParam.value);
-    CaptureStencilFillPathInstancedCHROMIUM_paths(context, isCallValid, numPaths, pathNameType,
+    CaptureStencilFillPathInstancedCHROMIUM_paths(glState, isCallValid, numPaths, pathNameType,
                                                   paths, pathBasePacked, fillMode, mask,
                                                   transformType, transformValues, &pathsParam);
     paramBuffer.addParam(std::move(pathsParam));
@@ -3213,14 +3209,14 @@
     ParamCapture transformValuesParam("transformValues", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, transformValues, &transformValuesParam.value);
     CaptureStencilFillPathInstancedCHROMIUM_transformValues(
-        context, isCallValid, numPaths, pathNameType, paths, pathBasePacked, fillMode, mask,
+        glState, isCallValid, numPaths, pathNameType, paths, pathBasePacked, fillMode, mask,
         transformType, transformValues, &transformValuesParam);
     paramBuffer.addParam(std::move(transformValuesParam));
 
     return CallCapture(gl::EntryPoint::StencilFillPathInstancedCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilThenCoverFillPathInstancedCHROMIUM(const Context *context,
+CallCapture CaptureStencilThenCoverFillPathInstancedCHROMIUM(const State &glState,
                                                              bool isCallValid,
                                                              GLsizei numPaths,
                                                              GLenum pathNameType,
@@ -3241,7 +3237,7 @@
     ParamCapture pathsParam("paths", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, paths, &pathsParam.value);
     CaptureStencilThenCoverFillPathInstancedCHROMIUM_paths(
-        context, isCallValid, numPaths, pathNameType, paths, pathBasePacked, fillMode, mask,
+        glState, isCallValid, numPaths, pathNameType, paths, pathBasePacked, fillMode, mask,
         coverMode, transformType, transformValues, &pathsParam);
     paramBuffer.addParam(std::move(pathsParam));
 
@@ -3255,7 +3251,7 @@
     ParamCapture transformValuesParam("transformValues", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, transformValues, &transformValuesParam.value);
     CaptureStencilThenCoverFillPathInstancedCHROMIUM_transformValues(
-        context, isCallValid, numPaths, pathNameType, paths, pathBasePacked, fillMode, mask,
+        glState, isCallValid, numPaths, pathNameType, paths, pathBasePacked, fillMode, mask,
         coverMode, transformType, transformValues, &transformValuesParam);
     paramBuffer.addParam(std::move(transformValuesParam));
 
@@ -3263,7 +3259,7 @@
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureStencilThenCoverStrokePathInstancedCHROMIUM(const Context *context,
+CallCapture CaptureStencilThenCoverStrokePathInstancedCHROMIUM(const State &glState,
                                                                bool isCallValid,
                                                                GLsizei numPaths,
                                                                GLenum pathNameType,
@@ -3284,7 +3280,7 @@
     ParamCapture pathsParam("paths", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, paths, &pathsParam.value);
     CaptureStencilThenCoverStrokePathInstancedCHROMIUM_paths(
-        context, isCallValid, numPaths, pathNameType, paths, pathBasePacked, reference, mask,
+        glState, isCallValid, numPaths, pathNameType, paths, pathBasePacked, reference, mask,
         coverMode, transformType, transformValues, &pathsParam);
     paramBuffer.addParam(std::move(pathsParam));
 
@@ -3298,7 +3294,7 @@
     ParamCapture transformValuesParam("transformValues", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, transformValues, &transformValuesParam.value);
     CaptureStencilThenCoverStrokePathInstancedCHROMIUM_transformValues(
-        context, isCallValid, numPaths, pathNameType, paths, pathBasePacked, reference, mask,
+        glState, isCallValid, numPaths, pathNameType, paths, pathBasePacked, reference, mask,
         coverMode, transformType, transformValues, &transformValuesParam);
     paramBuffer.addParam(std::move(transformValuesParam));
 
@@ -3306,7 +3302,7 @@
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureBindFragmentInputLocationCHROMIUM(const Context *context,
+CallCapture CaptureBindFragmentInputLocationCHROMIUM(const State &glState,
                                                      bool isCallValid,
                                                      ShaderProgramID programsPacked,
                                                      GLint location,
@@ -3319,14 +3315,14 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureBindFragmentInputLocationCHROMIUM_name(context, isCallValid, programsPacked, location,
+    CaptureBindFragmentInputLocationCHROMIUM_name(glState, isCallValid, programsPacked, location,
                                                   name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::BindFragmentInputLocationCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramPathFragmentInputGenCHROMIUM(const Context *context,
+CallCapture CaptureProgramPathFragmentInputGenCHROMIUM(const State &glState,
                                                        bool isCallValid,
                                                        ShaderProgramID programPacked,
                                                        GLint location,
@@ -3343,14 +3339,14 @@
 
     ParamCapture coeffsParam("coeffs", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, coeffs, &coeffsParam.value);
-    CaptureProgramPathFragmentInputGenCHROMIUM_coeffs(context, isCallValid, programPacked, location,
+    CaptureProgramPathFragmentInputGenCHROMIUM_coeffs(glState, isCallValid, programPacked, location,
                                                       genMode, components, coeffs, &coeffsParam);
     paramBuffer.addParam(std::move(coeffsParam));
 
     return CallCapture(gl::EntryPoint::ProgramPathFragmentInputGenCHROMIUM, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindFragDataLocationEXT(const Context *context,
+CallCapture CaptureBindFragDataLocationEXT(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLuint color,
@@ -3363,14 +3359,14 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureBindFragDataLocationEXT_name(context, isCallValid, programPacked, color, name,
+    CaptureBindFragDataLocationEXT_name(glState, isCallValid, programPacked, color, name,
                                         &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::BindFragDataLocationEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindFragDataLocationIndexedEXT(const Context *context,
+CallCapture CaptureBindFragDataLocationIndexedEXT(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLuint colorNumber,
@@ -3385,14 +3381,14 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureBindFragDataLocationIndexedEXT_name(context, isCallValid, programPacked, colorNumber,
+    CaptureBindFragDataLocationIndexedEXT_name(glState, isCallValid, programPacked, colorNumber,
                                                index, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     return CallCapture(gl::EntryPoint::BindFragDataLocationIndexedEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFragDataIndexEXT(const Context *context,
+CallCapture CaptureGetFragDataIndexEXT(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        const GLchar *name,
@@ -3404,7 +3400,7 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureGetFragDataIndexEXT_name(context, isCallValid, programPacked, name, &nameParam);
+    CaptureGetFragDataIndexEXT_name(glState, isCallValid, programPacked, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
     ParamCapture returnValueCapture("returnValue", ParamType::TGLint);
@@ -3414,7 +3410,7 @@
     return CallCapture(gl::EntryPoint::GetFragDataIndexEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramResourceLocationIndexEXT(const Context *context,
+CallCapture CaptureGetProgramResourceLocationIndexEXT(const State &glState,
                                                       bool isCallValid,
                                                       ShaderProgramID programPacked,
                                                       GLenum programInterface,
@@ -3429,7 +3425,7 @@
 
     ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
-    CaptureGetProgramResourceLocationIndexEXT_name(context, isCallValid, programPacked,
+    CaptureGetProgramResourceLocationIndexEXT_name(glState, isCallValid, programPacked,
                                                    programInterface, name, &nameParam);
     paramBuffer.addParam(std::move(nameParam));
 
@@ -3440,7 +3436,7 @@
     return CallCapture(gl::EntryPoint::GetProgramResourceLocationIndexEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureInsertEventMarkerEXT(const Context *context,
+CallCapture CaptureInsertEventMarkerEXT(const State &glState,
                                         bool isCallValid,
                                         GLsizei length,
                                         const GLchar *marker)
@@ -3451,20 +3447,20 @@
 
     ParamCapture markerParam("marker", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, marker, &markerParam.value);
-    CaptureInsertEventMarkerEXT_marker(context, isCallValid, length, marker, &markerParam);
+    CaptureInsertEventMarkerEXT_marker(glState, isCallValid, length, marker, &markerParam);
     paramBuffer.addParam(std::move(markerParam));
 
     return CallCapture(gl::EntryPoint::InsertEventMarkerEXT, std::move(paramBuffer));
 }
 
-CallCapture CapturePopGroupMarkerEXT(const Context *context, bool isCallValid)
+CallCapture CapturePopGroupMarkerEXT(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::PopGroupMarkerEXT, std::move(paramBuffer));
 }
 
-CallCapture CapturePushGroupMarkerEXT(const Context *context,
+CallCapture CapturePushGroupMarkerEXT(const State &glState,
                                       bool isCallValid,
                                       GLsizei length,
                                       const GLchar *marker)
@@ -3475,13 +3471,13 @@
 
     ParamCapture markerParam("marker", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, marker, &markerParam.value);
-    CapturePushGroupMarkerEXT_marker(context, isCallValid, length, marker, &markerParam);
+    CapturePushGroupMarkerEXT_marker(glState, isCallValid, length, marker, &markerParam);
     paramBuffer.addParam(std::move(markerParam));
 
     return CallCapture(gl::EntryPoint::PushGroupMarkerEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureDiscardFramebufferEXT(const Context *context,
+CallCapture CaptureDiscardFramebufferEXT(const State &glState,
                                          bool isCallValid,
                                          GLenum target,
                                          GLsizei numAttachments,
@@ -3494,14 +3490,14 @@
 
     ParamCapture attachmentsParam("attachments", ParamType::TGLenumConstPointer);
     InitParamValue(ParamType::TGLenumConstPointer, attachments, &attachmentsParam.value);
-    CaptureDiscardFramebufferEXT_attachments(context, isCallValid, target, numAttachments,
+    CaptureDiscardFramebufferEXT_attachments(glState, isCallValid, target, numAttachments,
                                              attachments, &attachmentsParam);
     paramBuffer.addParam(std::move(attachmentsParam));
 
     return CallCapture(gl::EntryPoint::DiscardFramebufferEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureBeginQueryEXT(const Context *context,
+CallCapture CaptureBeginQueryEXT(const State &glState,
                                  bool isCallValid,
                                  QueryType targetPacked,
                                  QueryID idPacked)
@@ -3514,7 +3510,7 @@
     return CallCapture(gl::EntryPoint::BeginQueryEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteQueriesEXT(const Context *context,
+CallCapture CaptureDeleteQueriesEXT(const State &glState,
                                     bool isCallValid,
                                     GLsizei n,
                                     const QueryID *idsPacked)
@@ -3525,13 +3521,13 @@
 
     ParamCapture idsPackedParam("idsPacked", ParamType::TQueryIDConstPointer);
     InitParamValue(ParamType::TQueryIDConstPointer, idsPacked, &idsPackedParam.value);
-    CaptureDeleteQueriesEXT_idsPacked(context, isCallValid, n, idsPacked, &idsPackedParam);
+    CaptureDeleteQueriesEXT_idsPacked(glState, isCallValid, n, idsPacked, &idsPackedParam);
     paramBuffer.addParam(std::move(idsPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteQueriesEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureEndQueryEXT(const Context *context, bool isCallValid, QueryType targetPacked)
+CallCapture CaptureEndQueryEXT(const State &glState, bool isCallValid, QueryType targetPacked)
 {
     ParamBuffer paramBuffer;
 
@@ -3540,7 +3536,7 @@
     return CallCapture(gl::EntryPoint::EndQueryEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenQueriesEXT(const Context *context,
+CallCapture CaptureGenQueriesEXT(const State &glState,
                                  bool isCallValid,
                                  GLsizei n,
                                  QueryID *idsPacked)
@@ -3551,13 +3547,13 @@
 
     ParamCapture idsPackedParam("idsPacked", ParamType::TQueryIDPointer);
     InitParamValue(ParamType::TQueryIDPointer, idsPacked, &idsPackedParam.value);
-    CaptureGenQueriesEXT_idsPacked(context, isCallValid, n, idsPacked, &idsPackedParam);
+    CaptureGenQueriesEXT_idsPacked(glState, isCallValid, n, idsPacked, &idsPackedParam);
     paramBuffer.addParam(std::move(idsPackedParam));
 
     return CallCapture(gl::EntryPoint::GenQueriesEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryObjecti64vEXT(const Context *context,
+CallCapture CaptureGetQueryObjecti64vEXT(const State &glState,
                                          bool isCallValid,
                                          QueryID idPacked,
                                          GLenum pname,
@@ -3571,14 +3567,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
     InitParamValue(ParamType::TGLint64Pointer, params, &paramsParam.value);
-    CaptureGetQueryObjecti64vEXT_params(context, isCallValid, idPacked, pname, params,
+    CaptureGetQueryObjecti64vEXT_params(glState, isCallValid, idPacked, pname, params,
                                         &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryObjecti64vEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryObjectivEXT(const Context *context,
+CallCapture CaptureGetQueryObjectivEXT(const State &glState,
                                        bool isCallValid,
                                        QueryID idPacked,
                                        GLenum pname,
@@ -3592,13 +3588,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetQueryObjectivEXT_params(context, isCallValid, idPacked, pname, params, &paramsParam);
+    CaptureGetQueryObjectivEXT_params(glState, isCallValid, idPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryObjectivEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryObjectui64vEXT(const Context *context,
+CallCapture CaptureGetQueryObjectui64vEXT(const State &glState,
                                           bool isCallValid,
                                           QueryID idPacked,
                                           GLenum pname,
@@ -3612,14 +3608,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuint64Pointer);
     InitParamValue(ParamType::TGLuint64Pointer, params, &paramsParam.value);
-    CaptureGetQueryObjectui64vEXT_params(context, isCallValid, idPacked, pname, params,
+    CaptureGetQueryObjectui64vEXT_params(glState, isCallValid, idPacked, pname, params,
                                          &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryObjectui64vEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryObjectuivEXT(const Context *context,
+CallCapture CaptureGetQueryObjectuivEXT(const State &glState,
                                         bool isCallValid,
                                         QueryID idPacked,
                                         GLenum pname,
@@ -3633,13 +3629,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetQueryObjectuivEXT_params(context, isCallValid, idPacked, pname, params, &paramsParam);
+    CaptureGetQueryObjectuivEXT_params(glState, isCallValid, idPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryObjectuivEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetQueryivEXT(const Context *context,
+CallCapture CaptureGetQueryivEXT(const State &glState,
                                  bool isCallValid,
                                  QueryType targetPacked,
                                  GLenum pname,
@@ -3652,13 +3648,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetQueryivEXT_params(context, isCallValid, targetPacked, pname, params, &paramsParam);
+    CaptureGetQueryivEXT_params(glState, isCallValid, targetPacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetQueryivEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsQueryEXT(const Context *context,
+CallCapture CaptureIsQueryEXT(const State &glState,
                               bool isCallValid,
                               QueryID idPacked,
                               GLboolean returnValue)
@@ -3674,7 +3670,7 @@
     return CallCapture(gl::EntryPoint::IsQueryEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureQueryCounterEXT(const Context *context,
+CallCapture CaptureQueryCounterEXT(const State &glState,
                                    bool isCallValid,
                                    QueryID idPacked,
                                    QueryType targetPacked)
@@ -3687,7 +3683,7 @@
     return CallCapture(gl::EntryPoint::QueryCounterEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawBuffersEXT(const Context *context,
+CallCapture CaptureDrawBuffersEXT(const State &glState,
                                   bool isCallValid,
                                   GLsizei n,
                                   const GLenum *bufs)
@@ -3698,13 +3694,13 @@
 
     ParamCapture bufsParam("bufs", ParamType::TGLenumConstPointer);
     InitParamValue(ParamType::TGLenumConstPointer, bufs, &bufsParam.value);
-    CaptureDrawBuffersEXT_bufs(context, isCallValid, n, bufs, &bufsParam);
+    CaptureDrawBuffersEXT_bufs(glState, isCallValid, n, bufs, &bufsParam);
     paramBuffer.addParam(std::move(bufsParam));
 
     return CallCapture(gl::EntryPoint::DrawBuffersEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferTextureEXT(const Context *context,
+CallCapture CaptureFramebufferTextureEXT(const State &glState,
                                          bool isCallValid,
                                          GLenum target,
                                          GLenum attachment,
@@ -3722,7 +3718,7 @@
     return CallCapture(gl::EntryPoint::FramebufferTextureEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawArraysInstancedEXT(const Context *context,
+CallCapture CaptureDrawArraysInstancedEXT(const State &glState,
                                           bool isCallValid,
                                           PrimitiveMode modePacked,
                                           GLint start,
@@ -3739,7 +3735,7 @@
     return CallCapture(gl::EntryPoint::DrawArraysInstancedEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawElementsInstancedEXT(const Context *context,
+CallCapture CaptureDrawElementsInstancedEXT(const State &glState,
                                             bool isCallValid,
                                             PrimitiveMode modePacked,
                                             GLsizei count,
@@ -3755,7 +3751,7 @@
 
     ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
-    CaptureDrawElementsInstancedEXT_indices(context, isCallValid, modePacked, count, typePacked,
+    CaptureDrawElementsInstancedEXT_indices(glState, isCallValid, modePacked, count, typePacked,
                                             indices, primcount, &indicesParam);
     paramBuffer.addParam(std::move(indicesParam));
 
@@ -3764,7 +3760,7 @@
     return CallCapture(gl::EntryPoint::DrawElementsInstancedEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureVertexAttribDivisorEXT(const Context *context,
+CallCapture CaptureVertexAttribDivisorEXT(const State &glState,
                                           bool isCallValid,
                                           GLuint index,
                                           GLuint divisor)
@@ -3777,7 +3773,7 @@
     return CallCapture(gl::EntryPoint::VertexAttribDivisorEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureFlushMappedBufferRangeEXT(const Context *context,
+CallCapture CaptureFlushMappedBufferRangeEXT(const State &glState,
                                              bool isCallValid,
                                              BufferBinding targetPacked,
                                              GLintptr offset,
@@ -3792,7 +3788,7 @@
     return CallCapture(gl::EntryPoint::FlushMappedBufferRangeEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureMapBufferRangeEXT(const Context *context,
+CallCapture CaptureMapBufferRangeEXT(const State &glState,
                                      bool isCallValid,
                                      BufferBinding targetPacked,
                                      GLintptr offset,
@@ -3815,7 +3811,7 @@
     return CallCapture(gl::EntryPoint::MapBufferRangeEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureBufferStorageMemEXT(const Context *context,
+CallCapture CaptureBufferStorageMemEXT(const State &glState,
                                        bool isCallValid,
                                        TextureType targetPacked,
                                        GLsizeiptr size,
@@ -3832,7 +3828,7 @@
     return CallCapture(gl::EntryPoint::BufferStorageMemEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureCreateMemoryObjectsEXT(const Context *context,
+CallCapture CaptureCreateMemoryObjectsEXT(const State &glState,
                                           bool isCallValid,
                                           GLsizei n,
                                           MemoryObjectID *memoryObjectsPacked)
@@ -3844,14 +3840,14 @@
     ParamCapture memoryObjectsPackedParam("memoryObjectsPacked", ParamType::TMemoryObjectIDPointer);
     InitParamValue(ParamType::TMemoryObjectIDPointer, memoryObjectsPacked,
                    &memoryObjectsPackedParam.value);
-    CaptureCreateMemoryObjectsEXT_memoryObjectsPacked(context, isCallValid, n, memoryObjectsPacked,
+    CaptureCreateMemoryObjectsEXT_memoryObjectsPacked(glState, isCallValid, n, memoryObjectsPacked,
                                                       &memoryObjectsPackedParam);
     paramBuffer.addParam(std::move(memoryObjectsPackedParam));
 
     return CallCapture(gl::EntryPoint::CreateMemoryObjectsEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteMemoryObjectsEXT(const Context *context,
+CallCapture CaptureDeleteMemoryObjectsEXT(const State &glState,
                                           bool isCallValid,
                                           GLsizei n,
                                           const MemoryObjectID *memoryObjectsPacked)
@@ -3864,14 +3860,14 @@
                                           ParamType::TMemoryObjectIDConstPointer);
     InitParamValue(ParamType::TMemoryObjectIDConstPointer, memoryObjectsPacked,
                    &memoryObjectsPackedParam.value);
-    CaptureDeleteMemoryObjectsEXT_memoryObjectsPacked(context, isCallValid, n, memoryObjectsPacked,
+    CaptureDeleteMemoryObjectsEXT_memoryObjectsPacked(glState, isCallValid, n, memoryObjectsPacked,
                                                       &memoryObjectsPackedParam);
     paramBuffer.addParam(std::move(memoryObjectsPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteMemoryObjectsEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetMemoryObjectParameterivEXT(const Context *context,
+CallCapture CaptureGetMemoryObjectParameterivEXT(const State &glState,
                                                  bool isCallValid,
                                                  MemoryObjectID memoryObjectPacked,
                                                  GLenum pname,
@@ -3885,14 +3881,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetMemoryObjectParameterivEXT_params(context, isCallValid, memoryObjectPacked, pname,
+    CaptureGetMemoryObjectParameterivEXT_params(glState, isCallValid, memoryObjectPacked, pname,
                                                 params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetMemoryObjectParameterivEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUnsignedBytevEXT(const Context *context,
+CallCapture CaptureGetUnsignedBytevEXT(const State &glState,
                                        bool isCallValid,
                                        GLenum pname,
                                        GLubyte *data)
@@ -3903,13 +3899,13 @@
 
     ParamCapture dataParam("data", ParamType::TGLubytePointer);
     InitParamValue(ParamType::TGLubytePointer, data, &dataParam.value);
-    CaptureGetUnsignedBytevEXT_data(context, isCallValid, pname, data, &dataParam);
+    CaptureGetUnsignedBytevEXT_data(glState, isCallValid, pname, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetUnsignedBytevEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetUnsignedBytei_vEXT(const Context *context,
+CallCapture CaptureGetUnsignedBytei_vEXT(const State &glState,
                                          bool isCallValid,
                                          GLenum target,
                                          GLuint index,
@@ -3922,13 +3918,13 @@
 
     ParamCapture dataParam("data", ParamType::TGLubytePointer);
     InitParamValue(ParamType::TGLubytePointer, data, &dataParam.value);
-    CaptureGetUnsignedBytei_vEXT_data(context, isCallValid, target, index, data, &dataParam);
+    CaptureGetUnsignedBytei_vEXT_data(glState, isCallValid, target, index, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::GetUnsignedBytei_vEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsMemoryObjectEXT(const Context *context,
+CallCapture CaptureIsMemoryObjectEXT(const State &glState,
                                      bool isCallValid,
                                      MemoryObjectID memoryObjectPacked,
                                      GLboolean returnValue)
@@ -3944,7 +3940,7 @@
     return CallCapture(gl::EntryPoint::IsMemoryObjectEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureMemoryObjectParameterivEXT(const Context *context,
+CallCapture CaptureMemoryObjectParameterivEXT(const State &glState,
                                               bool isCallValid,
                                               MemoryObjectID memoryObjectPacked,
                                               GLenum pname,
@@ -3958,14 +3954,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
-    CaptureMemoryObjectParameterivEXT_params(context, isCallValid, memoryObjectPacked, pname,
+    CaptureMemoryObjectParameterivEXT_params(glState, isCallValid, memoryObjectPacked, pname,
                                              params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::MemoryObjectParameterivEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorageMem2DEXT(const Context *context,
+CallCapture CaptureTexStorageMem2DEXT(const State &glState,
                                       bool isCallValid,
                                       TextureType targetPacked,
                                       GLsizei levels,
@@ -3989,7 +3985,7 @@
     return CallCapture(gl::EntryPoint::TexStorageMem2DEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorageMem2DMultisampleEXT(const Context *context,
+CallCapture CaptureTexStorageMem2DMultisampleEXT(const State &glState,
                                                  bool isCallValid,
                                                  TextureType targetPacked,
                                                  GLsizei samples,
@@ -4015,7 +4011,7 @@
     return CallCapture(gl::EntryPoint::TexStorageMem2DMultisampleEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorageMem3DEXT(const Context *context,
+CallCapture CaptureTexStorageMem3DEXT(const State &glState,
                                       bool isCallValid,
                                       TextureType targetPacked,
                                       GLsizei levels,
@@ -4041,7 +4037,7 @@
     return CallCapture(gl::EntryPoint::TexStorageMem3DEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorageMem3DMultisampleEXT(const Context *context,
+CallCapture CaptureTexStorageMem3DMultisampleEXT(const State &glState,
                                                  bool isCallValid,
                                                  TextureType targetPacked,
                                                  GLsizei samples,
@@ -4069,7 +4065,7 @@
     return CallCapture(gl::EntryPoint::TexStorageMem3DMultisampleEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureImportMemoryFdEXT(const Context *context,
+CallCapture CaptureImportMemoryFdEXT(const State &glState,
                                      bool isCallValid,
                                      MemoryObjectID memoryPacked,
                                      GLuint64 size,
@@ -4086,7 +4082,7 @@
     return CallCapture(gl::EntryPoint::ImportMemoryFdEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferTexture2DMultisampleEXT(const Context *context,
+CallCapture CaptureFramebufferTexture2DMultisampleEXT(const State &glState,
                                                       bool isCallValid,
                                                       GLenum target,
                                                       GLenum attachment,
@@ -4109,7 +4105,7 @@
     return CallCapture(gl::EntryPoint::FramebufferTexture2DMultisampleEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureRenderbufferStorageMultisampleEXT(const Context *context,
+CallCapture CaptureRenderbufferStorageMultisampleEXT(const State &glState,
                                                      bool isCallValid,
                                                      GLenum target,
                                                      GLsizei samples,
@@ -4129,7 +4125,7 @@
     return CallCapture(gl::EntryPoint::RenderbufferStorageMultisampleEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetGraphicsResetStatusEXT(const Context *context,
+CallCapture CaptureGetGraphicsResetStatusEXT(const State &glState,
                                              bool isCallValid,
                                              GLenum returnValue)
 {
@@ -4142,7 +4138,7 @@
     return CallCapture(gl::EntryPoint::GetGraphicsResetStatusEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetnUniformfvEXT(const Context *context,
+CallCapture CaptureGetnUniformfvEXT(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -4157,14 +4153,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetnUniformfvEXT_params(context, isCallValid, programPacked, location, bufSize, params,
+    CaptureGetnUniformfvEXT_params(glState, isCallValid, programPacked, location, bufSize, params,
                                    &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetnUniformfvEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetnUniformivEXT(const Context *context,
+CallCapture CaptureGetnUniformivEXT(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
@@ -4179,14 +4175,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetnUniformivEXT_params(context, isCallValid, programPacked, location, bufSize, params,
+    CaptureGetnUniformivEXT_params(glState, isCallValid, programPacked, location, bufSize, params,
                                    &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetnUniformivEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureReadnPixelsEXT(const Context *context,
+CallCapture CaptureReadnPixelsEXT(const State &glState,
                                   bool isCallValid,
                                   GLint x,
                                   GLint y,
@@ -4209,14 +4205,14 @@
 
     ParamCapture dataParam("data", ParamType::TvoidPointer);
     InitParamValue(ParamType::TvoidPointer, data, &dataParam.value);
-    CaptureReadnPixelsEXT_data(context, isCallValid, x, y, width, height, format, type, bufSize,
+    CaptureReadnPixelsEXT_data(glState, isCallValid, x, y, width, height, format, type, bufSize,
                                data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::ReadnPixelsEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteSemaphoresEXT(const Context *context,
+CallCapture CaptureDeleteSemaphoresEXT(const State &glState,
                                        bool isCallValid,
                                        GLsizei n,
                                        const SemaphoreID *semaphoresPacked)
@@ -4228,14 +4224,14 @@
     ParamCapture semaphoresPackedParam("semaphoresPacked", ParamType::TSemaphoreIDConstPointer);
     InitParamValue(ParamType::TSemaphoreIDConstPointer, semaphoresPacked,
                    &semaphoresPackedParam.value);
-    CaptureDeleteSemaphoresEXT_semaphoresPacked(context, isCallValid, n, semaphoresPacked,
+    CaptureDeleteSemaphoresEXT_semaphoresPacked(glState, isCallValid, n, semaphoresPacked,
                                                 &semaphoresPackedParam);
     paramBuffer.addParam(std::move(semaphoresPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteSemaphoresEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenSemaphoresEXT(const Context *context,
+CallCapture CaptureGenSemaphoresEXT(const State &glState,
                                     bool isCallValid,
                                     GLsizei n,
                                     SemaphoreID *semaphoresPacked)
@@ -4246,14 +4242,14 @@
 
     ParamCapture semaphoresPackedParam("semaphoresPacked", ParamType::TSemaphoreIDPointer);
     InitParamValue(ParamType::TSemaphoreIDPointer, semaphoresPacked, &semaphoresPackedParam.value);
-    CaptureGenSemaphoresEXT_semaphoresPacked(context, isCallValid, n, semaphoresPacked,
+    CaptureGenSemaphoresEXT_semaphoresPacked(glState, isCallValid, n, semaphoresPacked,
                                              &semaphoresPackedParam);
     paramBuffer.addParam(std::move(semaphoresPackedParam));
 
     return CallCapture(gl::EntryPoint::GenSemaphoresEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSemaphoreParameterui64vEXT(const Context *context,
+CallCapture CaptureGetSemaphoreParameterui64vEXT(const State &glState,
                                                  bool isCallValid,
                                                  SemaphoreID semaphorePacked,
                                                  GLenum pname,
@@ -4267,14 +4263,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuint64Pointer);
     InitParamValue(ParamType::TGLuint64Pointer, params, &paramsParam.value);
-    CaptureGetSemaphoreParameterui64vEXT_params(context, isCallValid, semaphorePacked, pname,
+    CaptureGetSemaphoreParameterui64vEXT_params(glState, isCallValid, semaphorePacked, pname,
                                                 params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSemaphoreParameterui64vEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsSemaphoreEXT(const Context *context,
+CallCapture CaptureIsSemaphoreEXT(const State &glState,
                                   bool isCallValid,
                                   SemaphoreID semaphorePacked,
                                   GLboolean returnValue)
@@ -4290,7 +4286,7 @@
     return CallCapture(gl::EntryPoint::IsSemaphoreEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureSemaphoreParameterui64vEXT(const Context *context,
+CallCapture CaptureSemaphoreParameterui64vEXT(const State &glState,
                                               bool isCallValid,
                                               SemaphoreID semaphorePacked,
                                               GLenum pname,
@@ -4304,14 +4300,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuint64ConstPointer);
     InitParamValue(ParamType::TGLuint64ConstPointer, params, &paramsParam.value);
-    CaptureSemaphoreParameterui64vEXT_params(context, isCallValid, semaphorePacked, pname, params,
+    CaptureSemaphoreParameterui64vEXT_params(glState, isCallValid, semaphorePacked, pname, params,
                                              &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::SemaphoreParameterui64vEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureSignalSemaphoreEXT(const Context *context,
+CallCapture CaptureSignalSemaphoreEXT(const State &glState,
                                       bool isCallValid,
                                       SemaphoreID semaphorePacked,
                                       GLuint numBufferBarriers,
@@ -4327,7 +4323,7 @@
 
     ParamCapture buffersPackedParam("buffersPacked", ParamType::TBufferIDConstPointer);
     InitParamValue(ParamType::TBufferIDConstPointer, buffersPacked, &buffersPackedParam.value);
-    CaptureSignalSemaphoreEXT_buffersPacked(context, isCallValid, semaphorePacked,
+    CaptureSignalSemaphoreEXT_buffersPacked(glState, isCallValid, semaphorePacked,
                                             numBufferBarriers, buffersPacked, numTextureBarriers,
                                             texturesPacked, dstLayouts, &buffersPackedParam);
     paramBuffer.addParam(std::move(buffersPackedParam));
@@ -4336,14 +4332,14 @@
 
     ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
     InitParamValue(ParamType::TTextureIDConstPointer, texturesPacked, &texturesPackedParam.value);
-    CaptureSignalSemaphoreEXT_texturesPacked(context, isCallValid, semaphorePacked,
+    CaptureSignalSemaphoreEXT_texturesPacked(glState, isCallValid, semaphorePacked,
                                              numBufferBarriers, buffersPacked, numTextureBarriers,
                                              texturesPacked, dstLayouts, &texturesPackedParam);
     paramBuffer.addParam(std::move(texturesPackedParam));
 
     ParamCapture dstLayoutsParam("dstLayouts", ParamType::TGLenumConstPointer);
     InitParamValue(ParamType::TGLenumConstPointer, dstLayouts, &dstLayoutsParam.value);
-    CaptureSignalSemaphoreEXT_dstLayouts(context, isCallValid, semaphorePacked, numBufferBarriers,
+    CaptureSignalSemaphoreEXT_dstLayouts(glState, isCallValid, semaphorePacked, numBufferBarriers,
                                          buffersPacked, numTextureBarriers, texturesPacked,
                                          dstLayouts, &dstLayoutsParam);
     paramBuffer.addParam(std::move(dstLayoutsParam));
@@ -4351,7 +4347,7 @@
     return CallCapture(gl::EntryPoint::SignalSemaphoreEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureWaitSemaphoreEXT(const Context *context,
+CallCapture CaptureWaitSemaphoreEXT(const State &glState,
                                     bool isCallValid,
                                     SemaphoreID semaphorePacked,
                                     GLuint numBufferBarriers,
@@ -4367,7 +4363,7 @@
 
     ParamCapture buffersPackedParam("buffersPacked", ParamType::TBufferIDConstPointer);
     InitParamValue(ParamType::TBufferIDConstPointer, buffersPacked, &buffersPackedParam.value);
-    CaptureWaitSemaphoreEXT_buffersPacked(context, isCallValid, semaphorePacked, numBufferBarriers,
+    CaptureWaitSemaphoreEXT_buffersPacked(glState, isCallValid, semaphorePacked, numBufferBarriers,
                                           buffersPacked, numTextureBarriers, texturesPacked,
                                           srcLayouts, &buffersPackedParam);
     paramBuffer.addParam(std::move(buffersPackedParam));
@@ -4376,14 +4372,14 @@
 
     ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
     InitParamValue(ParamType::TTextureIDConstPointer, texturesPacked, &texturesPackedParam.value);
-    CaptureWaitSemaphoreEXT_texturesPacked(context, isCallValid, semaphorePacked, numBufferBarriers,
+    CaptureWaitSemaphoreEXT_texturesPacked(glState, isCallValid, semaphorePacked, numBufferBarriers,
                                            buffersPacked, numTextureBarriers, texturesPacked,
                                            srcLayouts, &texturesPackedParam);
     paramBuffer.addParam(std::move(texturesPackedParam));
 
     ParamCapture srcLayoutsParam("srcLayouts", ParamType::TGLenumConstPointer);
     InitParamValue(ParamType::TGLenumConstPointer, srcLayouts, &srcLayoutsParam.value);
-    CaptureWaitSemaphoreEXT_srcLayouts(context, isCallValid, semaphorePacked, numBufferBarriers,
+    CaptureWaitSemaphoreEXT_srcLayouts(glState, isCallValid, semaphorePacked, numBufferBarriers,
                                        buffersPacked, numTextureBarriers, texturesPacked,
                                        srcLayouts, &srcLayoutsParam);
     paramBuffer.addParam(std::move(srcLayoutsParam));
@@ -4391,7 +4387,7 @@
     return CallCapture(gl::EntryPoint::WaitSemaphoreEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureImportSemaphoreFdEXT(const Context *context,
+CallCapture CaptureImportSemaphoreFdEXT(const State &glState,
                                         bool isCallValid,
                                         SemaphoreID semaphorePacked,
                                         HandleType handleTypePacked,
@@ -4406,7 +4402,7 @@
     return CallCapture(gl::EntryPoint::ImportSemaphoreFdEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorage1DEXT(const Context *context,
+CallCapture CaptureTexStorage1DEXT(const State &glState,
                                    bool isCallValid,
                                    GLenum target,
                                    GLsizei levels,
@@ -4424,7 +4420,7 @@
     return CallCapture(gl::EntryPoint::TexStorage1DEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorage2DEXT(const Context *context,
+CallCapture CaptureTexStorage2DEXT(const State &glState,
                                    bool isCallValid,
                                    TextureType targetPacked,
                                    GLsizei levels,
@@ -4444,7 +4440,7 @@
     return CallCapture(gl::EntryPoint::TexStorage2DEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorage3DEXT(const Context *context,
+CallCapture CaptureTexStorage3DEXT(const State &glState,
                                    bool isCallValid,
                                    TextureType targetPacked,
                                    GLsizei levels,
@@ -4466,7 +4462,7 @@
     return CallCapture(gl::EntryPoint::TexStorage3DEXT, std::move(paramBuffer));
 }
 
-CallCapture CaptureDebugMessageCallbackKHR(const Context *context,
+CallCapture CaptureDebugMessageCallbackKHR(const State &glState,
                                            bool isCallValid,
                                            GLDEBUGPROCKHR callback,
                                            const void *userParam)
@@ -4477,14 +4473,14 @@
 
     ParamCapture userParamParam("userParam", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, userParam, &userParamParam.value);
-    CaptureDebugMessageCallbackKHR_userParam(context, isCallValid, callback, userParam,
+    CaptureDebugMessageCallbackKHR_userParam(glState, isCallValid, callback, userParam,
                                              &userParamParam);
     paramBuffer.addParam(std::move(userParamParam));
 
     return CallCapture(gl::EntryPoint::DebugMessageCallbackKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureDebugMessageControlKHR(const Context *context,
+CallCapture CaptureDebugMessageControlKHR(const State &glState,
                                           bool isCallValid,
                                           GLenum source,
                                           GLenum type,
@@ -4502,7 +4498,7 @@
 
     ParamCapture idsParam("ids", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, ids, &idsParam.value);
-    CaptureDebugMessageControlKHR_ids(context, isCallValid, source, type, severity, count, ids,
+    CaptureDebugMessageControlKHR_ids(glState, isCallValid, source, type, severity, count, ids,
                                       enabled, &idsParam);
     paramBuffer.addParam(std::move(idsParam));
 
@@ -4511,7 +4507,7 @@
     return CallCapture(gl::EntryPoint::DebugMessageControlKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureDebugMessageInsertKHR(const Context *context,
+CallCapture CaptureDebugMessageInsertKHR(const State &glState,
                                          bool isCallValid,
                                          GLenum source,
                                          GLenum type,
@@ -4530,14 +4526,14 @@
 
     ParamCapture bufParam("buf", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, buf, &bufParam.value);
-    CaptureDebugMessageInsertKHR_buf(context, isCallValid, source, type, id, severity, length, buf,
+    CaptureDebugMessageInsertKHR_buf(glState, isCallValid, source, type, id, severity, length, buf,
                                      &bufParam);
     paramBuffer.addParam(std::move(bufParam));
 
     return CallCapture(gl::EntryPoint::DebugMessageInsertKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetDebugMessageLogKHR(const Context *context,
+CallCapture CaptureGetDebugMessageLogKHR(const State &glState,
                                          bool isCallValid,
                                          GLuint count,
                                          GLsizei bufSize,
@@ -4556,37 +4552,37 @@
 
     ParamCapture sourcesParam("sources", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, sources, &sourcesParam.value);
-    CaptureGetDebugMessageLogKHR_sources(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLogKHR_sources(glState, isCallValid, count, bufSize, sources, types, ids,
                                          severities, lengths, messageLog, &sourcesParam);
     paramBuffer.addParam(std::move(sourcesParam));
 
     ParamCapture typesParam("types", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, types, &typesParam.value);
-    CaptureGetDebugMessageLogKHR_types(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLogKHR_types(glState, isCallValid, count, bufSize, sources, types, ids,
                                        severities, lengths, messageLog, &typesParam);
     paramBuffer.addParam(std::move(typesParam));
 
     ParamCapture idsParam("ids", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, ids, &idsParam.value);
-    CaptureGetDebugMessageLogKHR_ids(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLogKHR_ids(glState, isCallValid, count, bufSize, sources, types, ids,
                                      severities, lengths, messageLog, &idsParam);
     paramBuffer.addParam(std::move(idsParam));
 
     ParamCapture severitiesParam("severities", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, severities, &severitiesParam.value);
-    CaptureGetDebugMessageLogKHR_severities(context, isCallValid, count, bufSize, sources, types,
+    CaptureGetDebugMessageLogKHR_severities(glState, isCallValid, count, bufSize, sources, types,
                                             ids, severities, lengths, messageLog, &severitiesParam);
     paramBuffer.addParam(std::move(severitiesParam));
 
     ParamCapture lengthsParam("lengths", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, lengths, &lengthsParam.value);
-    CaptureGetDebugMessageLogKHR_lengths(context, isCallValid, count, bufSize, sources, types, ids,
+    CaptureGetDebugMessageLogKHR_lengths(glState, isCallValid, count, bufSize, sources, types, ids,
                                          severities, lengths, messageLog, &lengthsParam);
     paramBuffer.addParam(std::move(lengthsParam));
 
     ParamCapture messageLogParam("messageLog", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, messageLog, &messageLogParam.value);
-    CaptureGetDebugMessageLogKHR_messageLog(context, isCallValid, count, bufSize, sources, types,
+    CaptureGetDebugMessageLogKHR_messageLog(glState, isCallValid, count, bufSize, sources, types,
                                             ids, severities, lengths, messageLog, &messageLogParam);
     paramBuffer.addParam(std::move(messageLogParam));
 
@@ -4597,7 +4593,7 @@
     return CallCapture(gl::EntryPoint::GetDebugMessageLogKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetObjectLabelKHR(const Context *context,
+CallCapture CaptureGetObjectLabelKHR(const State &glState,
                                      bool isCallValid,
                                      GLenum identifier,
                                      GLuint name,
@@ -4614,20 +4610,20 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetObjectLabelKHR_length(context, isCallValid, identifier, name, bufSize, length, label,
+    CaptureGetObjectLabelKHR_length(glState, isCallValid, identifier, name, bufSize, length, label,
                                     &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture labelParam("label", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, label, &labelParam.value);
-    CaptureGetObjectLabelKHR_label(context, isCallValid, identifier, name, bufSize, length, label,
+    CaptureGetObjectLabelKHR_label(glState, isCallValid, identifier, name, bufSize, length, label,
                                    &labelParam);
     paramBuffer.addParam(std::move(labelParam));
 
     return CallCapture(gl::EntryPoint::GetObjectLabelKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetObjectPtrLabelKHR(const Context *context,
+CallCapture CaptureGetObjectPtrLabelKHR(const State &glState,
                                         bool isCallValid,
                                         const void *ptr,
                                         GLsizei bufSize,
@@ -4638,27 +4634,27 @@
 
     ParamCapture ptrParam("ptr", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, ptr, &ptrParam.value);
-    CaptureGetObjectPtrLabelKHR_ptr(context, isCallValid, ptr, bufSize, length, label, &ptrParam);
+    CaptureGetObjectPtrLabelKHR_ptr(glState, isCallValid, ptr, bufSize, length, label, &ptrParam);
     paramBuffer.addParam(std::move(ptrParam));
 
     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetObjectPtrLabelKHR_length(context, isCallValid, ptr, bufSize, length, label,
+    CaptureGetObjectPtrLabelKHR_length(glState, isCallValid, ptr, bufSize, length, label,
                                        &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture labelParam("label", ParamType::TGLcharPointer);
     InitParamValue(ParamType::TGLcharPointer, label, &labelParam.value);
-    CaptureGetObjectPtrLabelKHR_label(context, isCallValid, ptr, bufSize, length, label,
+    CaptureGetObjectPtrLabelKHR_label(glState, isCallValid, ptr, bufSize, length, label,
                                       &labelParam);
     paramBuffer.addParam(std::move(labelParam));
 
     return CallCapture(gl::EntryPoint::GetObjectPtrLabelKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetPointervKHR(const Context *context,
+CallCapture CaptureGetPointervKHR(const State &glState,
                                   bool isCallValid,
                                   GLenum pname,
                                   void **params)
@@ -4669,13 +4665,13 @@
 
     ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
     InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
-    CaptureGetPointervKHR_params(context, isCallValid, pname, params, &paramsParam);
+    CaptureGetPointervKHR_params(glState, isCallValid, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetPointervKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureObjectLabelKHR(const Context *context,
+CallCapture CaptureObjectLabelKHR(const State &glState,
                                   bool isCallValid,
                                   GLenum identifier,
                                   GLuint name,
@@ -4691,13 +4687,13 @@
 
     ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, label, &labelParam.value);
-    CaptureObjectLabelKHR_label(context, isCallValid, identifier, name, length, label, &labelParam);
+    CaptureObjectLabelKHR_label(glState, isCallValid, identifier, name, length, label, &labelParam);
     paramBuffer.addParam(std::move(labelParam));
 
     return CallCapture(gl::EntryPoint::ObjectLabelKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureObjectPtrLabelKHR(const Context *context,
+CallCapture CaptureObjectPtrLabelKHR(const State &glState,
                                      bool isCallValid,
                                      const void *ptr,
                                      GLsizei length,
@@ -4707,27 +4703,27 @@
 
     ParamCapture ptrParam("ptr", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, ptr, &ptrParam.value);
-    CaptureObjectPtrLabelKHR_ptr(context, isCallValid, ptr, length, label, &ptrParam);
+    CaptureObjectPtrLabelKHR_ptr(glState, isCallValid, ptr, length, label, &ptrParam);
     paramBuffer.addParam(std::move(ptrParam));
 
     paramBuffer.addValueParam("length", ParamType::TGLsizei, length);
 
     ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, label, &labelParam.value);
-    CaptureObjectPtrLabelKHR_label(context, isCallValid, ptr, length, label, &labelParam);
+    CaptureObjectPtrLabelKHR_label(glState, isCallValid, ptr, length, label, &labelParam);
     paramBuffer.addParam(std::move(labelParam));
 
     return CallCapture(gl::EntryPoint::ObjectPtrLabelKHR, std::move(paramBuffer));
 }
 
-CallCapture CapturePopDebugGroupKHR(const Context *context, bool isCallValid)
+CallCapture CapturePopDebugGroupKHR(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::PopDebugGroupKHR, std::move(paramBuffer));
 }
 
-CallCapture CapturePushDebugGroupKHR(const Context *context,
+CallCapture CapturePushDebugGroupKHR(const State &glState,
                                      bool isCallValid,
                                      GLenum source,
                                      GLuint id,
@@ -4742,16 +4738,14 @@
 
     ParamCapture messageParam("message", ParamType::TGLcharConstPointer);
     InitParamValue(ParamType::TGLcharConstPointer, message, &messageParam.value);
-    CapturePushDebugGroupKHR_message(context, isCallValid, source, id, length, message,
+    CapturePushDebugGroupKHR_message(glState, isCallValid, source, id, length, message,
                                      &messageParam);
     paramBuffer.addParam(std::move(messageParam));
 
     return CallCapture(gl::EntryPoint::PushDebugGroupKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureMaxShaderCompilerThreadsKHR(const Context *context,
-                                               bool isCallValid,
-                                               GLuint count)
+CallCapture CaptureMaxShaderCompilerThreadsKHR(const State &glState, bool isCallValid, GLuint count)
 {
     ParamBuffer paramBuffer;
 
@@ -4760,7 +4754,7 @@
     return CallCapture(gl::EntryPoint::MaxShaderCompilerThreadsKHR, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteFencesNV(const Context *context,
+CallCapture CaptureDeleteFencesNV(const State &glState,
                                   bool isCallValid,
                                   GLsizei n,
                                   const FenceNVID *fencesPacked)
@@ -4771,13 +4765,13 @@
 
     ParamCapture fencesPackedParam("fencesPacked", ParamType::TFenceNVIDConstPointer);
     InitParamValue(ParamType::TFenceNVIDConstPointer, fencesPacked, &fencesPackedParam.value);
-    CaptureDeleteFencesNV_fencesPacked(context, isCallValid, n, fencesPacked, &fencesPackedParam);
+    CaptureDeleteFencesNV_fencesPacked(glState, isCallValid, n, fencesPacked, &fencesPackedParam);
     paramBuffer.addParam(std::move(fencesPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteFencesNV, std::move(paramBuffer));
 }
 
-CallCapture CaptureFinishFenceNV(const Context *context, bool isCallValid, FenceNVID fencePacked)
+CallCapture CaptureFinishFenceNV(const State &glState, bool isCallValid, FenceNVID fencePacked)
 {
     ParamBuffer paramBuffer;
 
@@ -4786,7 +4780,7 @@
     return CallCapture(gl::EntryPoint::FinishFenceNV, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenFencesNV(const Context *context,
+CallCapture CaptureGenFencesNV(const State &glState,
                                bool isCallValid,
                                GLsizei n,
                                FenceNVID *fencesPacked)
@@ -4797,13 +4791,13 @@
 
     ParamCapture fencesPackedParam("fencesPacked", ParamType::TFenceNVIDPointer);
     InitParamValue(ParamType::TFenceNVIDPointer, fencesPacked, &fencesPackedParam.value);
-    CaptureGenFencesNV_fencesPacked(context, isCallValid, n, fencesPacked, &fencesPackedParam);
+    CaptureGenFencesNV_fencesPacked(glState, isCallValid, n, fencesPacked, &fencesPackedParam);
     paramBuffer.addParam(std::move(fencesPackedParam));
 
     return CallCapture(gl::EntryPoint::GenFencesNV, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFenceivNV(const Context *context,
+CallCapture CaptureGetFenceivNV(const State &glState,
                                 bool isCallValid,
                                 FenceNVID fencePacked,
                                 GLenum pname,
@@ -4816,13 +4810,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetFenceivNV_params(context, isCallValid, fencePacked, pname, params, &paramsParam);
+    CaptureGetFenceivNV_params(glState, isCallValid, fencePacked, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetFenceivNV, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsFenceNV(const Context *context,
+CallCapture CaptureIsFenceNV(const State &glState,
                              bool isCallValid,
                              FenceNVID fencePacked,
                              GLboolean returnValue)
@@ -4838,7 +4832,7 @@
     return CallCapture(gl::EntryPoint::IsFenceNV, std::move(paramBuffer));
 }
 
-CallCapture CaptureSetFenceNV(const Context *context,
+CallCapture CaptureSetFenceNV(const State &glState,
                               bool isCallValid,
                               FenceNVID fencePacked,
                               GLenum condition)
@@ -4851,7 +4845,7 @@
     return CallCapture(gl::EntryPoint::SetFenceNV, std::move(paramBuffer));
 }
 
-CallCapture CaptureTestFenceNV(const Context *context,
+CallCapture CaptureTestFenceNV(const State &glState,
                                bool isCallValid,
                                FenceNVID fencePacked,
                                GLboolean returnValue)
@@ -4867,7 +4861,7 @@
     return CallCapture(gl::EntryPoint::TestFenceNV, std::move(paramBuffer));
 }
 
-CallCapture CaptureEGLImageTargetRenderbufferStorageOES(const Context *context,
+CallCapture CaptureEGLImageTargetRenderbufferStorageOES(const State &glState,
                                                         bool isCallValid,
                                                         GLenum target,
                                                         GLeglImageOES image)
@@ -4881,7 +4875,7 @@
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureEGLImageTargetTexture2DOES(const Context *context,
+CallCapture CaptureEGLImageTargetTexture2DOES(const State &glState,
                                               bool isCallValid,
                                               TextureType targetPacked,
                                               GLeglImageOES image)
@@ -4894,7 +4888,7 @@
     return CallCapture(gl::EntryPoint::EGLImageTargetTexture2DOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawTexfOES(const Context *context,
+CallCapture CaptureDrawTexfOES(const State &glState,
                                bool isCallValid,
                                GLfloat x,
                                GLfloat y,
@@ -4913,19 +4907,19 @@
     return CallCapture(gl::EntryPoint::DrawTexfOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawTexfvOES(const Context *context, bool isCallValid, const GLfloat *coords)
+CallCapture CaptureDrawTexfvOES(const State &glState, bool isCallValid, const GLfloat *coords)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture coordsParam("coords", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, coords, &coordsParam.value);
-    CaptureDrawTexfvOES_coords(context, isCallValid, coords, &coordsParam);
+    CaptureDrawTexfvOES_coords(glState, isCallValid, coords, &coordsParam);
     paramBuffer.addParam(std::move(coordsParam));
 
     return CallCapture(gl::EntryPoint::DrawTexfvOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawTexiOES(const Context *context,
+CallCapture CaptureDrawTexiOES(const State &glState,
                                bool isCallValid,
                                GLint x,
                                GLint y,
@@ -4944,19 +4938,19 @@
     return CallCapture(gl::EntryPoint::DrawTexiOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawTexivOES(const Context *context, bool isCallValid, const GLint *coords)
+CallCapture CaptureDrawTexivOES(const State &glState, bool isCallValid, const GLint *coords)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture coordsParam("coords", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, coords, &coordsParam.value);
-    CaptureDrawTexivOES_coords(context, isCallValid, coords, &coordsParam);
+    CaptureDrawTexivOES_coords(glState, isCallValid, coords, &coordsParam);
     paramBuffer.addParam(std::move(coordsParam));
 
     return CallCapture(gl::EntryPoint::DrawTexivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawTexsOES(const Context *context,
+CallCapture CaptureDrawTexsOES(const State &glState,
                                bool isCallValid,
                                GLshort x,
                                GLshort y,
@@ -4975,19 +4969,19 @@
     return CallCapture(gl::EntryPoint::DrawTexsOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawTexsvOES(const Context *context, bool isCallValid, const GLshort *coords)
+CallCapture CaptureDrawTexsvOES(const State &glState, bool isCallValid, const GLshort *coords)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture coordsParam("coords", ParamType::TGLshortConstPointer);
     InitParamValue(ParamType::TGLshortConstPointer, coords, &coordsParam.value);
-    CaptureDrawTexsvOES_coords(context, isCallValid, coords, &coordsParam);
+    CaptureDrawTexsvOES_coords(glState, isCallValid, coords, &coordsParam);
     paramBuffer.addParam(std::move(coordsParam));
 
     return CallCapture(gl::EntryPoint::DrawTexsvOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawTexxOES(const Context *context,
+CallCapture CaptureDrawTexxOES(const State &glState,
                                bool isCallValid,
                                GLfixed x,
                                GLfixed y,
@@ -5006,19 +5000,19 @@
     return CallCapture(gl::EntryPoint::DrawTexxOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDrawTexxvOES(const Context *context, bool isCallValid, const GLfixed *coords)
+CallCapture CaptureDrawTexxvOES(const State &glState, bool isCallValid, const GLfixed *coords)
 {
     ParamBuffer paramBuffer;
 
     ParamCapture coordsParam("coords", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, coords, &coordsParam.value);
-    CaptureDrawTexxvOES_coords(context, isCallValid, coords, &coordsParam);
+    CaptureDrawTexxvOES_coords(glState, isCallValid, coords, &coordsParam);
     paramBuffer.addParam(std::move(coordsParam));
 
     return CallCapture(gl::EntryPoint::DrawTexxvOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindFramebufferOES(const Context *context,
+CallCapture CaptureBindFramebufferOES(const State &glState,
                                       bool isCallValid,
                                       GLenum target,
                                       FramebufferID framebufferPacked)
@@ -5031,7 +5025,7 @@
     return CallCapture(gl::EntryPoint::BindFramebufferOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindRenderbufferOES(const Context *context,
+CallCapture CaptureBindRenderbufferOES(const State &glState,
                                        bool isCallValid,
                                        GLenum target,
                                        RenderbufferID renderbufferPacked)
@@ -5044,7 +5038,7 @@
     return CallCapture(gl::EntryPoint::BindRenderbufferOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureCheckFramebufferStatusOES(const Context *context,
+CallCapture CaptureCheckFramebufferStatusOES(const State &glState,
                                              bool isCallValid,
                                              GLenum target,
                                              GLenum returnValue)
@@ -5060,7 +5054,7 @@
     return CallCapture(gl::EntryPoint::CheckFramebufferStatusOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteFramebuffersOES(const Context *context,
+CallCapture CaptureDeleteFramebuffersOES(const State &glState,
                                          bool isCallValid,
                                          GLsizei n,
                                          const FramebufferID *framebuffersPacked)
@@ -5073,14 +5067,14 @@
                                          ParamType::TFramebufferIDConstPointer);
     InitParamValue(ParamType::TFramebufferIDConstPointer, framebuffersPacked,
                    &framebuffersPackedParam.value);
-    CaptureDeleteFramebuffersOES_framebuffersPacked(context, isCallValid, n, framebuffersPacked,
+    CaptureDeleteFramebuffersOES_framebuffersPacked(glState, isCallValid, n, framebuffersPacked,
                                                     &framebuffersPackedParam);
     paramBuffer.addParam(std::move(framebuffersPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteFramebuffersOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteRenderbuffersOES(const Context *context,
+CallCapture CaptureDeleteRenderbuffersOES(const State &glState,
                                           bool isCallValid,
                                           GLsizei n,
                                           const RenderbufferID *renderbuffersPacked)
@@ -5093,14 +5087,14 @@
                                           ParamType::TRenderbufferIDConstPointer);
     InitParamValue(ParamType::TRenderbufferIDConstPointer, renderbuffersPacked,
                    &renderbuffersPackedParam.value);
-    CaptureDeleteRenderbuffersOES_renderbuffersPacked(context, isCallValid, n, renderbuffersPacked,
+    CaptureDeleteRenderbuffersOES_renderbuffersPacked(glState, isCallValid, n, renderbuffersPacked,
                                                       &renderbuffersPackedParam);
     paramBuffer.addParam(std::move(renderbuffersPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteRenderbuffersOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferRenderbufferOES(const Context *context,
+CallCapture CaptureFramebufferRenderbufferOES(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLenum attachment,
@@ -5119,7 +5113,7 @@
     return CallCapture(gl::EntryPoint::FramebufferRenderbufferOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferTexture2DOES(const Context *context,
+CallCapture CaptureFramebufferTexture2DOES(const State &glState,
                                            bool isCallValid,
                                            GLenum target,
                                            GLenum attachment,
@@ -5139,7 +5133,7 @@
     return CallCapture(gl::EntryPoint::FramebufferTexture2DOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenFramebuffersOES(const Context *context,
+CallCapture CaptureGenFramebuffersOES(const State &glState,
                                       bool isCallValid,
                                       GLsizei n,
                                       FramebufferID *framebuffersPacked)
@@ -5151,14 +5145,14 @@
     ParamCapture framebuffersPackedParam("framebuffersPacked", ParamType::TFramebufferIDPointer);
     InitParamValue(ParamType::TFramebufferIDPointer, framebuffersPacked,
                    &framebuffersPackedParam.value);
-    CaptureGenFramebuffersOES_framebuffersPacked(context, isCallValid, n, framebuffersPacked,
+    CaptureGenFramebuffersOES_framebuffersPacked(glState, isCallValid, n, framebuffersPacked,
                                                  &framebuffersPackedParam);
     paramBuffer.addParam(std::move(framebuffersPackedParam));
 
     return CallCapture(gl::EntryPoint::GenFramebuffersOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenRenderbuffersOES(const Context *context,
+CallCapture CaptureGenRenderbuffersOES(const State &glState,
                                        bool isCallValid,
                                        GLsizei n,
                                        RenderbufferID *renderbuffersPacked)
@@ -5170,14 +5164,14 @@
     ParamCapture renderbuffersPackedParam("renderbuffersPacked", ParamType::TRenderbufferIDPointer);
     InitParamValue(ParamType::TRenderbufferIDPointer, renderbuffersPacked,
                    &renderbuffersPackedParam.value);
-    CaptureGenRenderbuffersOES_renderbuffersPacked(context, isCallValid, n, renderbuffersPacked,
+    CaptureGenRenderbuffersOES_renderbuffersPacked(glState, isCallValid, n, renderbuffersPacked,
                                                    &renderbuffersPackedParam);
     paramBuffer.addParam(std::move(renderbuffersPackedParam));
 
     return CallCapture(gl::EntryPoint::GenRenderbuffersOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenerateMipmapOES(const Context *context,
+CallCapture CaptureGenerateMipmapOES(const State &glState,
                                      bool isCallValid,
                                      TextureType targetPacked)
 {
@@ -5188,7 +5182,7 @@
     return CallCapture(gl::EntryPoint::GenerateMipmapOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetFramebufferAttachmentParameterivOES(const Context *context,
+CallCapture CaptureGetFramebufferAttachmentParameterivOES(const State &glState,
                                                           bool isCallValid,
                                                           GLenum target,
                                                           GLenum attachment,
@@ -5205,7 +5199,7 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetFramebufferAttachmentParameterivOES_params(context, isCallValid, target, attachment,
+    CaptureGetFramebufferAttachmentParameterivOES_params(glState, isCallValid, target, attachment,
                                                          pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
@@ -5213,7 +5207,7 @@
                        std::move(paramBuffer));
 }
 
-CallCapture CaptureGetRenderbufferParameterivOES(const Context *context,
+CallCapture CaptureGetRenderbufferParameterivOES(const State &glState,
                                                  bool isCallValid,
                                                  GLenum target,
                                                  GLenum pname,
@@ -5227,14 +5221,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetRenderbufferParameterivOES_params(context, isCallValid, target, pname, params,
+    CaptureGetRenderbufferParameterivOES_params(glState, isCallValid, target, pname, params,
                                                 &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetRenderbufferParameterivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsFramebufferOES(const Context *context,
+CallCapture CaptureIsFramebufferOES(const State &glState,
                                     bool isCallValid,
                                     FramebufferID framebufferPacked,
                                     GLboolean returnValue)
@@ -5250,7 +5244,7 @@
     return CallCapture(gl::EntryPoint::IsFramebufferOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsRenderbufferOES(const Context *context,
+CallCapture CaptureIsRenderbufferOES(const State &glState,
                                      bool isCallValid,
                                      RenderbufferID renderbufferPacked,
                                      GLboolean returnValue)
@@ -5266,7 +5260,7 @@
     return CallCapture(gl::EntryPoint::IsRenderbufferOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureRenderbufferStorageOES(const Context *context,
+CallCapture CaptureRenderbufferStorageOES(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           GLenum internalformat,
@@ -5284,7 +5278,7 @@
     return CallCapture(gl::EntryPoint::RenderbufferStorageOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetProgramBinaryOES(const Context *context,
+CallCapture CaptureGetProgramBinaryOES(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLsizei bufSize,
@@ -5299,26 +5293,26 @@
 
     ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
     InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
-    CaptureGetProgramBinaryOES_length(context, isCallValid, programPacked, bufSize, length,
+    CaptureGetProgramBinaryOES_length(glState, isCallValid, programPacked, bufSize, length,
                                       binaryFormat, binary, &lengthParam);
     paramBuffer.addParam(std::move(lengthParam));
 
     ParamCapture binaryFormatParam("binaryFormat", ParamType::TGLenumPointer);
     InitParamValue(ParamType::TGLenumPointer, binaryFormat, &binaryFormatParam.value);
-    CaptureGetProgramBinaryOES_binaryFormat(context, isCallValid, programPacked, bufSize, length,
+    CaptureGetProgramBinaryOES_binaryFormat(glState, isCallValid, programPacked, bufSize, length,
                                             binaryFormat, binary, &binaryFormatParam);
     paramBuffer.addParam(std::move(binaryFormatParam));
 
     ParamCapture binaryParam("binary", ParamType::TvoidPointer);
     InitParamValue(ParamType::TvoidPointer, binary, &binaryParam.value);
-    CaptureGetProgramBinaryOES_binary(context, isCallValid, programPacked, bufSize, length,
+    CaptureGetProgramBinaryOES_binary(glState, isCallValid, programPacked, bufSize, length,
                                       binaryFormat, binary, &binaryParam);
     paramBuffer.addParam(std::move(binaryParam));
 
     return CallCapture(gl::EntryPoint::GetProgramBinaryOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureProgramBinaryOES(const Context *context,
+CallCapture CaptureProgramBinaryOES(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLenum binaryFormat,
@@ -5333,7 +5327,7 @@
 
     ParamCapture binaryParam("binary", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, binary, &binaryParam.value);
-    CaptureProgramBinaryOES_binary(context, isCallValid, programPacked, binaryFormat, binary,
+    CaptureProgramBinaryOES_binary(glState, isCallValid, programPacked, binaryFormat, binary,
                                    length, &binaryParam);
     paramBuffer.addParam(std::move(binaryParam));
 
@@ -5342,7 +5336,7 @@
     return CallCapture(gl::EntryPoint::ProgramBinaryOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetBufferPointervOES(const Context *context,
+CallCapture CaptureGetBufferPointervOES(const State &glState,
                                         bool isCallValid,
                                         BufferBinding targetPacked,
                                         GLenum pname,
@@ -5355,14 +5349,14 @@
 
     ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
     InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
-    CaptureGetBufferPointervOES_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetBufferPointervOES_params(glState, isCallValid, targetPacked, pname, params,
                                        &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetBufferPointervOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureMapBufferOES(const Context *context,
+CallCapture CaptureMapBufferOES(const State &glState,
                                 bool isCallValid,
                                 BufferBinding targetPacked,
                                 GLenum access,
@@ -5380,7 +5374,7 @@
     return CallCapture(gl::EntryPoint::MapBufferOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureUnmapBufferOES(const Context *context,
+CallCapture CaptureUnmapBufferOES(const State &glState,
                                   bool isCallValid,
                                   BufferBinding targetPacked,
                                   GLboolean returnValue)
@@ -5396,7 +5390,7 @@
     return CallCapture(gl::EntryPoint::UnmapBufferOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureCurrentPaletteMatrixOES(const Context *context,
+CallCapture CaptureCurrentPaletteMatrixOES(const State &glState,
                                            bool isCallValid,
                                            GLuint matrixpaletteindex)
 {
@@ -5407,14 +5401,14 @@
     return CallCapture(gl::EntryPoint::CurrentPaletteMatrixOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureLoadPaletteFromModelViewMatrixOES(const Context *context, bool isCallValid)
+CallCapture CaptureLoadPaletteFromModelViewMatrixOES(const State &glState, bool isCallValid)
 {
     ParamBuffer paramBuffer;
 
     return CallCapture(gl::EntryPoint::LoadPaletteFromModelViewMatrixOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureMatrixIndexPointerOES(const Context *context,
+CallCapture CaptureMatrixIndexPointerOES(const State &glState,
                                          bool isCallValid,
                                          GLint size,
                                          GLenum type,
@@ -5429,14 +5423,14 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
-    CaptureMatrixIndexPointerOES_pointer(context, isCallValid, size, type, stride, pointer,
+    CaptureMatrixIndexPointerOES_pointer(glState, isCallValid, size, type, stride, pointer,
                                          &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::MatrixIndexPointerOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureWeightPointerOES(const Context *context,
+CallCapture CaptureWeightPointerOES(const State &glState,
                                     bool isCallValid,
                                     GLint size,
                                     GLenum type,
@@ -5451,14 +5445,14 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
-    CaptureWeightPointerOES_pointer(context, isCallValid, size, type, stride, pointer,
+    CaptureWeightPointerOES_pointer(glState, isCallValid, size, type, stride, pointer,
                                     &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::WeightPointerOES, std::move(paramBuffer));
 }
 
-CallCapture CapturePointSizePointerOES(const Context *context,
+CallCapture CapturePointSizePointerOES(const State &glState,
                                        bool isCallValid,
                                        VertexAttribType typePacked,
                                        GLsizei stride,
@@ -5471,14 +5465,14 @@
 
     ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
-    CapturePointSizePointerOES_pointer(context, isCallValid, typePacked, stride, pointer,
+    CapturePointSizePointerOES_pointer(glState, isCallValid, typePacked, stride, pointer,
                                        &pointerParam);
     paramBuffer.addParam(std::move(pointerParam));
 
     return CallCapture(gl::EntryPoint::PointSizePointerOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureQueryMatrixxOES(const Context *context,
+CallCapture CaptureQueryMatrixxOES(const State &glState,
                                    bool isCallValid,
                                    GLfixed *mantissa,
                                    GLint *exponent,
@@ -5488,12 +5482,12 @@
 
     ParamCapture mantissaParam("mantissa", ParamType::TGLfixedPointer);
     InitParamValue(ParamType::TGLfixedPointer, mantissa, &mantissaParam.value);
-    CaptureQueryMatrixxOES_mantissa(context, isCallValid, mantissa, exponent, &mantissaParam);
+    CaptureQueryMatrixxOES_mantissa(glState, isCallValid, mantissa, exponent, &mantissaParam);
     paramBuffer.addParam(std::move(mantissaParam));
 
     ParamCapture exponentParam("exponent", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, exponent, &exponentParam.value);
-    CaptureQueryMatrixxOES_exponent(context, isCallValid, mantissa, exponent, &exponentParam);
+    CaptureQueryMatrixxOES_exponent(glState, isCallValid, mantissa, exponent, &exponentParam);
     paramBuffer.addParam(std::move(exponentParam));
 
     ParamCapture returnValueCapture("returnValue", ParamType::TGLbitfield);
@@ -5503,7 +5497,7 @@
     return CallCapture(gl::EntryPoint::QueryMatrixxOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexImage3DOES(const Context *context,
+CallCapture CaptureCompressedTexImage3DOES(const State &glState,
                                            bool isCallValid,
                                            TextureTarget targetPacked,
                                            GLint level,
@@ -5529,14 +5523,14 @@
 
     ParamCapture dataParam("data", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexImage3DOES_data(context, isCallValid, targetPacked, level, internalformat,
+    CaptureCompressedTexImage3DOES_data(glState, isCallValid, targetPacked, level, internalformat,
                                         width, height, depth, border, imageSize, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
 
     return CallCapture(gl::EntryPoint::CompressedTexImage3DOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureCompressedTexSubImage3DOES(const Context *context,
+CallCapture CaptureCompressedTexSubImage3DOES(const State &glState,
                                               bool isCallValid,
                                               TextureTarget targetPacked,
                                               GLint level,
@@ -5565,7 +5559,7 @@
 
     ParamCapture dataParam("data", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
-    CaptureCompressedTexSubImage3DOES_data(context, isCallValid, targetPacked, level, xoffset,
+    CaptureCompressedTexSubImage3DOES_data(glState, isCallValid, targetPacked, level, xoffset,
                                            yoffset, zoffset, width, height, depth, format,
                                            imageSize, data, &dataParam);
     paramBuffer.addParam(std::move(dataParam));
@@ -5573,7 +5567,7 @@
     return CallCapture(gl::EntryPoint::CompressedTexSubImage3DOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureCopyTexSubImage3DOES(const Context *context,
+CallCapture CaptureCopyTexSubImage3DOES(const State &glState,
                                         bool isCallValid,
                                         TextureTarget targetPacked,
                                         GLint level,
@@ -5600,7 +5594,7 @@
     return CallCapture(gl::EntryPoint::CopyTexSubImage3DOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferTexture3DOES(const Context *context,
+CallCapture CaptureFramebufferTexture3DOES(const State &glState,
                                            bool isCallValid,
                                            GLenum target,
                                            GLenum attachment,
@@ -5622,7 +5616,7 @@
     return CallCapture(gl::EntryPoint::FramebufferTexture3DOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexImage3DOES(const Context *context,
+CallCapture CaptureTexImage3DOES(const State &glState,
                                  bool isCallValid,
                                  TextureTarget targetPacked,
                                  GLint level,
@@ -5650,14 +5644,14 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexImage3DOES_pixels(context, isCallValid, targetPacked, level, internalformat, width,
+    CaptureTexImage3DOES_pixels(glState, isCallValid, targetPacked, level, internalformat, width,
                                 height, depth, border, format, type, pixels, &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
 
     return CallCapture(gl::EntryPoint::TexImage3DOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexSubImage3DOES(const Context *context,
+CallCapture CaptureTexSubImage3DOES(const State &glState,
                                     bool isCallValid,
                                     TextureTarget targetPacked,
                                     GLint level,
@@ -5686,7 +5680,7 @@
 
     ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
     InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
-    CaptureTexSubImage3DOES_pixels(context, isCallValid, targetPacked, level, xoffset, yoffset,
+    CaptureTexSubImage3DOES_pixels(glState, isCallValid, targetPacked, level, xoffset, yoffset,
                                    zoffset, width, height, depth, format, type, pixels,
                                    &pixelsParam);
     paramBuffer.addParam(std::move(pixelsParam));
@@ -5694,7 +5688,7 @@
     return CallCapture(gl::EntryPoint::TexSubImage3DOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameterIivOES(const Context *context,
+CallCapture CaptureGetSamplerParameterIivOES(const State &glState,
                                              bool isCallValid,
                                              SamplerID samplerPacked,
                                              GLenum pname,
@@ -5707,14 +5701,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameterIivOES_params(context, isCallValid, samplerPacked, pname, params,
+    CaptureGetSamplerParameterIivOES_params(glState, isCallValid, samplerPacked, pname, params,
                                             &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameterIivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetSamplerParameterIuivOES(const Context *context,
+CallCapture CaptureGetSamplerParameterIuivOES(const State &glState,
                                               bool isCallValid,
                                               SamplerID samplerPacked,
                                               GLenum pname,
@@ -5727,14 +5721,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetSamplerParameterIuivOES_params(context, isCallValid, samplerPacked, pname, params,
+    CaptureGetSamplerParameterIuivOES_params(glState, isCallValid, samplerPacked, pname, params,
                                              &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetSamplerParameterIuivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterIivOES(const Context *context,
+CallCapture CaptureGetTexParameterIivOES(const State &glState,
                                          bool isCallValid,
                                          TextureType targetPacked,
                                          GLenum pname,
@@ -5747,14 +5741,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexParameterIivOES_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetTexParameterIivOES_params(glState, isCallValid, targetPacked, pname, params,
                                         &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterIivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexParameterIuivOES(const Context *context,
+CallCapture CaptureGetTexParameterIuivOES(const State &glState,
                                           bool isCallValid,
                                           TextureType targetPacked,
                                           GLenum pname,
@@ -5767,14 +5761,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintPointer);
     InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
-    CaptureGetTexParameterIuivOES_params(context, isCallValid, targetPacked, pname, params,
+    CaptureGetTexParameterIuivOES_params(glState, isCallValid, targetPacked, pname, params,
                                          &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexParameterIuivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterIivOES(const Context *context,
+CallCapture CaptureSamplerParameterIivOES(const State &glState,
                                           bool isCallValid,
                                           SamplerID samplerPacked,
                                           GLenum pname,
@@ -5787,14 +5781,14 @@
 
     ParamCapture paramParam("param", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, param, &paramParam.value);
-    CaptureSamplerParameterIivOES_param(context, isCallValid, samplerPacked, pname, param,
+    CaptureSamplerParameterIivOES_param(glState, isCallValid, samplerPacked, pname, param,
                                         &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameterIivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureSamplerParameterIuivOES(const Context *context,
+CallCapture CaptureSamplerParameterIuivOES(const State &glState,
                                            bool isCallValid,
                                            SamplerID samplerPacked,
                                            GLenum pname,
@@ -5807,14 +5801,14 @@
 
     ParamCapture paramParam("param", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, param, &paramParam.value);
-    CaptureSamplerParameterIuivOES_param(context, isCallValid, samplerPacked, pname, param,
+    CaptureSamplerParameterIuivOES_param(glState, isCallValid, samplerPacked, pname, param,
                                          &paramParam);
     paramBuffer.addParam(std::move(paramParam));
 
     return CallCapture(gl::EntryPoint::SamplerParameterIuivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterIivOES(const Context *context,
+CallCapture CaptureTexParameterIivOES(const State &glState,
                                       bool isCallValid,
                                       TextureType targetPacked,
                                       GLenum pname,
@@ -5827,14 +5821,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
-    CaptureTexParameterIivOES_params(context, isCallValid, targetPacked, pname, params,
+    CaptureTexParameterIivOES_params(glState, isCallValid, targetPacked, pname, params,
                                      &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterIivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexParameterIuivOES(const Context *context,
+CallCapture CaptureTexParameterIuivOES(const State &glState,
                                        bool isCallValid,
                                        TextureType targetPacked,
                                        GLenum pname,
@@ -5847,14 +5841,14 @@
 
     ParamCapture paramsParam("params", ParamType::TGLuintConstPointer);
     InitParamValue(ParamType::TGLuintConstPointer, params, &paramsParam.value);
-    CaptureTexParameterIuivOES_params(context, isCallValid, targetPacked, pname, params,
+    CaptureTexParameterIuivOES_params(glState, isCallValid, targetPacked, pname, params,
                                       &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexParameterIuivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexGenfvOES(const Context *context,
+CallCapture CaptureGetTexGenfvOES(const State &glState,
                                   bool isCallValid,
                                   GLenum coord,
                                   GLenum pname,
@@ -5867,13 +5861,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
     InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
-    CaptureGetTexGenfvOES_params(context, isCallValid, coord, pname, params, &paramsParam);
+    CaptureGetTexGenfvOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexGenfvOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexGenivOES(const Context *context,
+CallCapture CaptureGetTexGenivOES(const State &glState,
                                   bool isCallValid,
                                   GLenum coord,
                                   GLenum pname,
@@ -5886,13 +5880,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintPointer);
     InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
-    CaptureGetTexGenivOES_params(context, isCallValid, coord, pname, params, &paramsParam);
+    CaptureGetTexGenivOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexGenivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGetTexGenxvOES(const Context *context,
+CallCapture CaptureGetTexGenxvOES(const State &glState,
                                   bool isCallValid,
                                   GLenum coord,
                                   GLenum pname,
@@ -5905,13 +5899,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedPointer);
     InitParamValue(ParamType::TGLfixedPointer, params, &paramsParam.value);
-    CaptureGetTexGenxvOES_params(context, isCallValid, coord, pname, params, &paramsParam);
+    CaptureGetTexGenxvOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::GetTexGenxvOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexGenfOES(const Context *context,
+CallCapture CaptureTexGenfOES(const State &glState,
                               bool isCallValid,
                               GLenum coord,
                               GLenum pname,
@@ -5926,7 +5920,7 @@
     return CallCapture(gl::EntryPoint::TexGenfOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexGenfvOES(const Context *context,
+CallCapture CaptureTexGenfvOES(const State &glState,
                                bool isCallValid,
                                GLenum coord,
                                GLenum pname,
@@ -5939,13 +5933,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
     InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
-    CaptureTexGenfvOES_params(context, isCallValid, coord, pname, params, &paramsParam);
+    CaptureTexGenfvOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexGenfvOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexGeniOES(const Context *context,
+CallCapture CaptureTexGeniOES(const State &glState,
                               bool isCallValid,
                               GLenum coord,
                               GLenum pname,
@@ -5960,7 +5954,7 @@
     return CallCapture(gl::EntryPoint::TexGeniOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexGenivOES(const Context *context,
+CallCapture CaptureTexGenivOES(const State &glState,
                                bool isCallValid,
                                GLenum coord,
                                GLenum pname,
@@ -5973,13 +5967,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
     InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
-    CaptureTexGenivOES_params(context, isCallValid, coord, pname, params, &paramsParam);
+    CaptureTexGenivOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexGenivOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexGenxOES(const Context *context,
+CallCapture CaptureTexGenxOES(const State &glState,
                               bool isCallValid,
                               GLenum coord,
                               GLenum pname,
@@ -5994,7 +5988,7 @@
     return CallCapture(gl::EntryPoint::TexGenxOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexGenxvOES(const Context *context,
+CallCapture CaptureTexGenxvOES(const State &glState,
                                bool isCallValid,
                                GLenum coord,
                                GLenum pname,
@@ -6007,13 +6001,13 @@
 
     ParamCapture paramsParam("params", ParamType::TGLfixedConstPointer);
     InitParamValue(ParamType::TGLfixedConstPointer, params, &paramsParam.value);
-    CaptureTexGenxvOES_params(context, isCallValid, coord, pname, params, &paramsParam);
+    CaptureTexGenxvOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
     paramBuffer.addParam(std::move(paramsParam));
 
     return CallCapture(gl::EntryPoint::TexGenxvOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureTexStorage3DMultisampleOES(const Context *context,
+CallCapture CaptureTexStorage3DMultisampleOES(const State &glState,
                                               bool isCallValid,
                                               TextureType targetPacked,
                                               GLsizei samples,
@@ -6037,7 +6031,7 @@
     return CallCapture(gl::EntryPoint::TexStorage3DMultisampleOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureBindVertexArrayOES(const Context *context,
+CallCapture CaptureBindVertexArrayOES(const State &glState,
                                       bool isCallValid,
                                       VertexArrayID arrayPacked)
 {
@@ -6048,7 +6042,7 @@
     return CallCapture(gl::EntryPoint::BindVertexArrayOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureDeleteVertexArraysOES(const Context *context,
+CallCapture CaptureDeleteVertexArraysOES(const State &glState,
                                          bool isCallValid,
                                          GLsizei n,
                                          const VertexArrayID *arraysPacked)
@@ -6059,14 +6053,14 @@
 
     ParamCapture arraysPackedParam("arraysPacked", ParamType::TVertexArrayIDConstPointer);
     InitParamValue(ParamType::TVertexArrayIDConstPointer, arraysPacked, &arraysPackedParam.value);
-    CaptureDeleteVertexArraysOES_arraysPacked(context, isCallValid, n, arraysPacked,
+    CaptureDeleteVertexArraysOES_arraysPacked(glState, isCallValid, n, arraysPacked,
                                               &arraysPackedParam);
     paramBuffer.addParam(std::move(arraysPackedParam));
 
     return CallCapture(gl::EntryPoint::DeleteVertexArraysOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureGenVertexArraysOES(const Context *context,
+CallCapture CaptureGenVertexArraysOES(const State &glState,
                                       bool isCallValid,
                                       GLsizei n,
                                       VertexArrayID *arraysPacked)
@@ -6077,14 +6071,14 @@
 
     ParamCapture arraysPackedParam("arraysPacked", ParamType::TVertexArrayIDPointer);
     InitParamValue(ParamType::TVertexArrayIDPointer, arraysPacked, &arraysPackedParam.value);
-    CaptureGenVertexArraysOES_arraysPacked(context, isCallValid, n, arraysPacked,
+    CaptureGenVertexArraysOES_arraysPacked(glState, isCallValid, n, arraysPacked,
                                            &arraysPackedParam);
     paramBuffer.addParam(std::move(arraysPackedParam));
 
     return CallCapture(gl::EntryPoint::GenVertexArraysOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureIsVertexArrayOES(const Context *context,
+CallCapture CaptureIsVertexArrayOES(const State &glState,
                                     bool isCallValid,
                                     VertexArrayID arrayPacked,
                                     GLboolean returnValue)
@@ -6100,7 +6094,7 @@
     return CallCapture(gl::EntryPoint::IsVertexArrayOES, std::move(paramBuffer));
 }
 
-CallCapture CaptureFramebufferTextureMultiviewOVR(const Context *context,
+CallCapture CaptureFramebufferTextureMultiviewOVR(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum attachment,
diff --git a/src/libANGLE/capture_gles_ext_autogen.h b/src/libANGLE/capture_gles_ext_autogen.h
index 0d41f18..c3c7951 100644
--- a/src/libANGLE/capture_gles_ext_autogen.h
+++ b/src/libANGLE/capture_gles_ext_autogen.h
@@ -16,12 +16,11 @@
 
 namespace gl
 {
-class Context;
 
 // Method Captures
 
 // GL_ANGLE_base_vertex_base_instance
-angle::CallCapture CaptureDrawArraysInstancedBaseInstanceANGLE(const Context *context,
+angle::CallCapture CaptureDrawArraysInstancedBaseInstanceANGLE(const State &glState,
                                                                bool isCallValid,
                                                                PrimitiveMode modePacked,
                                                                GLint first,
@@ -29,7 +28,7 @@
                                                                GLsizei instanceCount,
                                                                GLuint baseInstance);
 angle::CallCapture CaptureDrawElementsInstancedBaseVertexBaseInstanceANGLE(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     GLsizei count,
@@ -38,7 +37,7 @@
     GLsizei instanceCounts,
     GLint baseVertex,
     GLuint baseInstance);
-angle::CallCapture CaptureMultiDrawArraysInstancedBaseInstanceANGLE(const Context *context,
+angle::CallCapture CaptureMultiDrawArraysInstancedBaseInstanceANGLE(const State &glState,
                                                                     bool isCallValid,
                                                                     PrimitiveMode modePacked,
                                                                     const GLint *firsts,
@@ -47,7 +46,7 @@
                                                                     const GLuint *baseInstances,
                                                                     GLsizei drawcount);
 angle::CallCapture CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -59,7 +58,7 @@
     GLsizei drawcount);
 
 // GL_ANGLE_copy_texture_3d
-angle::CallCapture CaptureCopyTexture3DANGLE(const Context *context,
+angle::CallCapture CaptureCopyTexture3DANGLE(const State &glState,
                                              bool isCallValid,
                                              TextureID sourceIdPacked,
                                              GLint sourceLevel,
@@ -71,7 +70,7 @@
                                              GLboolean unpackFlipY,
                                              GLboolean unpackPremultiplyAlpha,
                                              GLboolean unpackUnmultiplyAlpha);
-angle::CallCapture CaptureCopySubTexture3DANGLE(const Context *context,
+angle::CallCapture CaptureCopySubTexture3DANGLE(const State &glState,
                                                 bool isCallValid,
                                                 TextureID sourceIdPacked,
                                                 GLint sourceLevel,
@@ -92,7 +91,7 @@
                                                 GLboolean unpackUnmultiplyAlpha);
 
 // GL_ANGLE_framebuffer_blit
-angle::CallCapture CaptureBlitFramebufferANGLE(const Context *context,
+angle::CallCapture CaptureBlitFramebufferANGLE(const State &glState,
                                                bool isCallValid,
                                                GLint srcX0,
                                                GLint srcY0,
@@ -106,7 +105,7 @@
                                                GLenum filter);
 
 // GL_ANGLE_framebuffer_multisample
-angle::CallCapture CaptureRenderbufferStorageMultisampleANGLE(const Context *context,
+angle::CallCapture CaptureRenderbufferStorageMultisampleANGLE(const State &glState,
                                                               bool isCallValid,
                                                               GLenum target,
                                                               GLsizei samples,
@@ -115,14 +114,14 @@
                                                               GLsizei height);
 
 // GL_ANGLE_get_image
-angle::CallCapture CaptureGetTexImageANGLE(const Context *context,
+angle::CallCapture CaptureGetTexImageANGLE(const State &glState,
                                            bool isCallValid,
                                            TextureTarget targetPacked,
                                            GLint level,
                                            GLenum format,
                                            GLenum type,
                                            void *pixels);
-angle::CallCapture CaptureGetRenderbufferImageANGLE(const Context *context,
+angle::CallCapture CaptureGetRenderbufferImageANGLE(const State &glState,
                                                     bool isCallValid,
                                                     GLenum target,
                                                     GLenum format,
@@ -130,46 +129,46 @@
                                                     void *pixels);
 
 // GL_ANGLE_instanced_arrays
-angle::CallCapture CaptureDrawArraysInstancedANGLE(const Context *context,
+angle::CallCapture CaptureDrawArraysInstancedANGLE(const State &glState,
                                                    bool isCallValid,
                                                    PrimitiveMode modePacked,
                                                    GLint first,
                                                    GLsizei count,
                                                    GLsizei primcount);
-angle::CallCapture CaptureDrawElementsInstancedANGLE(const Context *context,
+angle::CallCapture CaptureDrawElementsInstancedANGLE(const State &glState,
                                                      bool isCallValid,
                                                      PrimitiveMode modePacked,
                                                      GLsizei count,
                                                      DrawElementsType typePacked,
                                                      const void *indices,
                                                      GLsizei primcount);
-angle::CallCapture CaptureVertexAttribDivisorANGLE(const Context *context,
+angle::CallCapture CaptureVertexAttribDivisorANGLE(const State &glState,
                                                    bool isCallValid,
                                                    GLuint index,
                                                    GLuint divisor);
 
 // GL_ANGLE_multi_draw
-angle::CallCapture CaptureMultiDrawArraysANGLE(const Context *context,
+angle::CallCapture CaptureMultiDrawArraysANGLE(const State &glState,
                                                bool isCallValid,
                                                PrimitiveMode modePacked,
                                                const GLint *firsts,
                                                const GLsizei *counts,
                                                GLsizei drawcount);
-angle::CallCapture CaptureMultiDrawArraysInstancedANGLE(const Context *context,
+angle::CallCapture CaptureMultiDrawArraysInstancedANGLE(const State &glState,
                                                         bool isCallValid,
                                                         PrimitiveMode modePacked,
                                                         const GLint *firsts,
                                                         const GLsizei *counts,
                                                         const GLsizei *instanceCounts,
                                                         GLsizei drawcount);
-angle::CallCapture CaptureMultiDrawElementsANGLE(const Context *context,
+angle::CallCapture CaptureMultiDrawElementsANGLE(const State &glState,
                                                  bool isCallValid,
                                                  PrimitiveMode modePacked,
                                                  const GLsizei *counts,
                                                  DrawElementsType typePacked,
                                                  const GLvoid *const *indices,
                                                  GLsizei drawcount);
-angle::CallCapture CaptureMultiDrawElementsInstancedANGLE(const Context *context,
+angle::CallCapture CaptureMultiDrawElementsInstancedANGLE(const State &glState,
                                                           bool isCallValid,
                                                           PrimitiveMode modePacked,
                                                           const GLsizei *counts,
@@ -181,39 +180,39 @@
 // GL_ANGLE_program_binary
 
 // GL_ANGLE_provoking_vertex
-angle::CallCapture CaptureProvokingVertexANGLE(const Context *context,
+angle::CallCapture CaptureProvokingVertexANGLE(const State &glState,
                                                bool isCallValid,
                                                ProvokingVertexConvention modePacked);
 
 // GL_ANGLE_request_extension
-angle::CallCapture CaptureRequestExtensionANGLE(const Context *context,
+angle::CallCapture CaptureRequestExtensionANGLE(const State &glState,
                                                 bool isCallValid,
                                                 const GLchar *name);
-angle::CallCapture CaptureDisableExtensionANGLE(const Context *context,
+angle::CallCapture CaptureDisableExtensionANGLE(const State &glState,
                                                 bool isCallValid,
                                                 const GLchar *name);
 
 // GL_ANGLE_robust_client_memory
-angle::CallCapture CaptureGetBooleanvRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetBooleanvRobustANGLE(const State &glState,
                                                  bool isCallValid,
                                                  GLenum pname,
                                                  GLsizei bufSize,
                                                  GLsizei *length,
                                                  GLboolean *params);
-angle::CallCapture CaptureGetBufferParameterivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetBufferParameterivRobustANGLE(const State &glState,
                                                           bool isCallValid,
                                                           BufferBinding targetPacked,
                                                           GLenum pname,
                                                           GLsizei bufSize,
                                                           GLsizei *length,
                                                           GLint *params);
-angle::CallCapture CaptureGetFloatvRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetFloatvRobustANGLE(const State &glState,
                                                bool isCallValid,
                                                GLenum pname,
                                                GLsizei bufSize,
                                                GLsizei *length,
                                                GLfloat *params);
-angle::CallCapture CaptureGetFramebufferAttachmentParameterivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetFramebufferAttachmentParameterivRobustANGLE(const State &glState,
                                                                          bool isCallValid,
                                                                          GLenum target,
                                                                          GLenum attachment,
@@ -221,83 +220,83 @@
                                                                          GLsizei bufSize,
                                                                          GLsizei *length,
                                                                          GLint *params);
-angle::CallCapture CaptureGetIntegervRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetIntegervRobustANGLE(const State &glState,
                                                  bool isCallValid,
                                                  GLenum pname,
                                                  GLsizei bufSize,
                                                  GLsizei *length,
                                                  GLint *data);
-angle::CallCapture CaptureGetProgramivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetProgramivRobustANGLE(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLenum pname,
                                                   GLsizei bufSize,
                                                   GLsizei *length,
                                                   GLint *params);
-angle::CallCapture CaptureGetRenderbufferParameterivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetRenderbufferParameterivRobustANGLE(const State &glState,
                                                                 bool isCallValid,
                                                                 GLenum target,
                                                                 GLenum pname,
                                                                 GLsizei bufSize,
                                                                 GLsizei *length,
                                                                 GLint *params);
-angle::CallCapture CaptureGetShaderivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetShaderivRobustANGLE(const State &glState,
                                                  bool isCallValid,
                                                  ShaderProgramID shaderPacked,
                                                  GLenum pname,
                                                  GLsizei bufSize,
                                                  GLsizei *length,
                                                  GLint *params);
-angle::CallCapture CaptureGetTexParameterfvRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetTexParameterfvRobustANGLE(const State &glState,
                                                        bool isCallValid,
                                                        TextureType targetPacked,
                                                        GLenum pname,
                                                        GLsizei bufSize,
                                                        GLsizei *length,
                                                        GLfloat *params);
-angle::CallCapture CaptureGetTexParameterivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetTexParameterivRobustANGLE(const State &glState,
                                                        bool isCallValid,
                                                        TextureType targetPacked,
                                                        GLenum pname,
                                                        GLsizei bufSize,
                                                        GLsizei *length,
                                                        GLint *params);
-angle::CallCapture CaptureGetUniformfvRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetUniformfvRobustANGLE(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLint location,
                                                   GLsizei bufSize,
                                                   GLsizei *length,
                                                   GLfloat *params);
-angle::CallCapture CaptureGetUniformivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetUniformivRobustANGLE(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLint location,
                                                   GLsizei bufSize,
                                                   GLsizei *length,
                                                   GLint *params);
-angle::CallCapture CaptureGetVertexAttribfvRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetVertexAttribfvRobustANGLE(const State &glState,
                                                        bool isCallValid,
                                                        GLuint index,
                                                        GLenum pname,
                                                        GLsizei bufSize,
                                                        GLsizei *length,
                                                        GLfloat *params);
-angle::CallCapture CaptureGetVertexAttribivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetVertexAttribivRobustANGLE(const State &glState,
                                                        bool isCallValid,
                                                        GLuint index,
                                                        GLenum pname,
                                                        GLsizei bufSize,
                                                        GLsizei *length,
                                                        GLint *params);
-angle::CallCapture CaptureGetVertexAttribPointervRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetVertexAttribPointervRobustANGLE(const State &glState,
                                                              bool isCallValid,
                                                              GLuint index,
                                                              GLenum pname,
                                                              GLsizei bufSize,
                                                              GLsizei *length,
                                                              void **pointer);
-angle::CallCapture CaptureReadPixelsRobustANGLE(const Context *context,
+angle::CallCapture CaptureReadPixelsRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 GLint x,
                                                 GLint y,
@@ -310,7 +309,7 @@
                                                 GLsizei *columns,
                                                 GLsizei *rows,
                                                 void *pixels);
-angle::CallCapture CaptureTexImage2DRobustANGLE(const Context *context,
+angle::CallCapture CaptureTexImage2DRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 TextureTarget targetPacked,
                                                 GLint level,
@@ -322,19 +321,19 @@
                                                 GLenum type,
                                                 GLsizei bufSize,
                                                 const void *pixels);
-angle::CallCapture CaptureTexParameterfvRobustANGLE(const Context *context,
+angle::CallCapture CaptureTexParameterfvRobustANGLE(const State &glState,
                                                     bool isCallValid,
                                                     TextureType targetPacked,
                                                     GLenum pname,
                                                     GLsizei bufSize,
                                                     const GLfloat *params);
-angle::CallCapture CaptureTexParameterivRobustANGLE(const Context *context,
+angle::CallCapture CaptureTexParameterivRobustANGLE(const State &glState,
                                                     bool isCallValid,
                                                     TextureType targetPacked,
                                                     GLenum pname,
                                                     GLsizei bufSize,
                                                     const GLint *params);
-angle::CallCapture CaptureTexSubImage2DRobustANGLE(const Context *context,
+angle::CallCapture CaptureTexSubImage2DRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    TextureTarget targetPacked,
                                                    GLint level,
@@ -346,7 +345,7 @@
                                                    GLenum type,
                                                    GLsizei bufSize,
                                                    const void *pixels);
-angle::CallCapture CaptureTexImage3DRobustANGLE(const Context *context,
+angle::CallCapture CaptureTexImage3DRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 TextureTarget targetPacked,
                                                 GLint level,
@@ -359,7 +358,7 @@
                                                 GLenum type,
                                                 GLsizei bufSize,
                                                 const void *pixels);
-angle::CallCapture CaptureTexSubImage3DRobustANGLE(const Context *context,
+angle::CallCapture CaptureTexSubImage3DRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    TextureTarget targetPacked,
                                                    GLint level,
@@ -373,7 +372,7 @@
                                                    GLenum type,
                                                    GLsizei bufSize,
                                                    const void *pixels);
-angle::CallCapture CaptureCompressedTexImage2DRobustANGLE(const Context *context,
+angle::CallCapture CaptureCompressedTexImage2DRobustANGLE(const State &glState,
                                                           bool isCallValid,
                                                           TextureTarget targetPacked,
                                                           GLint level,
@@ -384,7 +383,7 @@
                                                           GLsizei imageSize,
                                                           GLsizei dataSize,
                                                           const GLvoid *data);
-angle::CallCapture CaptureCompressedTexSubImage2DRobustANGLE(const Context *context,
+angle::CallCapture CaptureCompressedTexSubImage2DRobustANGLE(const State &glState,
                                                              bool isCallValid,
                                                              TextureTarget targetPacked,
                                                              GLint level,
@@ -396,7 +395,7 @@
                                                              GLsizei imageSize,
                                                              GLsizei dataSize,
                                                              const GLvoid *data);
-angle::CallCapture CaptureCompressedTexImage3DRobustANGLE(const Context *context,
+angle::CallCapture CaptureCompressedTexImage3DRobustANGLE(const State &glState,
                                                           bool isCallValid,
                                                           TextureTarget targetPacked,
                                                           GLint level,
@@ -408,7 +407,7 @@
                                                           GLsizei imageSize,
                                                           GLsizei dataSize,
                                                           const GLvoid *data);
-angle::CallCapture CaptureCompressedTexSubImage3DRobustANGLE(const Context *context,
+angle::CallCapture CaptureCompressedTexSubImage3DRobustANGLE(const State &glState,
                                                              bool isCallValid,
                                                              TextureTarget targetPacked,
                                                              GLint level,
@@ -422,35 +421,35 @@
                                                              GLsizei imageSize,
                                                              GLsizei dataSize,
                                                              const GLvoid *data);
-angle::CallCapture CaptureGetQueryivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetQueryivRobustANGLE(const State &glState,
                                                 bool isCallValid,
                                                 QueryType targetPacked,
                                                 GLenum pname,
                                                 GLsizei bufSize,
                                                 GLsizei *length,
                                                 GLint *params);
-angle::CallCapture CaptureGetQueryObjectuivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetQueryObjectuivRobustANGLE(const State &glState,
                                                        bool isCallValid,
                                                        QueryID idPacked,
                                                        GLenum pname,
                                                        GLsizei bufSize,
                                                        GLsizei *length,
                                                        GLuint *params);
-angle::CallCapture CaptureGetBufferPointervRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetBufferPointervRobustANGLE(const State &glState,
                                                        bool isCallValid,
                                                        BufferBinding targetPacked,
                                                        GLenum pname,
                                                        GLsizei bufSize,
                                                        GLsizei *length,
                                                        void **params);
-angle::CallCapture CaptureGetIntegeri_vRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetIntegeri_vRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    GLenum target,
                                                    GLuint index,
                                                    GLsizei bufSize,
                                                    GLsizei *length,
                                                    GLint *data);
-angle::CallCapture CaptureGetInternalformativRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetInternalformativRobustANGLE(const State &glState,
                                                          bool isCallValid,
                                                          GLenum target,
                                                          GLenum internalformat,
@@ -458,28 +457,28 @@
                                                          GLsizei bufSize,
                                                          GLsizei *length,
                                                          GLint *params);
-angle::CallCapture CaptureGetVertexAttribIivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetVertexAttribIivRobustANGLE(const State &glState,
                                                         bool isCallValid,
                                                         GLuint index,
                                                         GLenum pname,
                                                         GLsizei bufSize,
                                                         GLsizei *length,
                                                         GLint *params);
-angle::CallCapture CaptureGetVertexAttribIuivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetVertexAttribIuivRobustANGLE(const State &glState,
                                                          bool isCallValid,
                                                          GLuint index,
                                                          GLenum pname,
                                                          GLsizei bufSize,
                                                          GLsizei *length,
                                                          GLuint *params);
-angle::CallCapture CaptureGetUniformuivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetUniformuivRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    ShaderProgramID programPacked,
                                                    GLint location,
                                                    GLsizei bufSize,
                                                    GLsizei *length,
                                                    GLuint *params);
-angle::CallCapture CaptureGetActiveUniformBlockivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetActiveUniformBlockivRobustANGLE(const State &glState,
                                                              bool isCallValid,
                                                              ShaderProgramID programPacked,
                                                              GLuint uniformBlockIndex,
@@ -487,60 +486,60 @@
                                                              GLsizei bufSize,
                                                              GLsizei *length,
                                                              GLint *params);
-angle::CallCapture CaptureGetInteger64vRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetInteger64vRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    GLenum pname,
                                                    GLsizei bufSize,
                                                    GLsizei *length,
                                                    GLint64 *data);
-angle::CallCapture CaptureGetInteger64i_vRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetInteger64i_vRobustANGLE(const State &glState,
                                                      bool isCallValid,
                                                      GLenum target,
                                                      GLuint index,
                                                      GLsizei bufSize,
                                                      GLsizei *length,
                                                      GLint64 *data);
-angle::CallCapture CaptureGetBufferParameteri64vRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetBufferParameteri64vRobustANGLE(const State &glState,
                                                             bool isCallValid,
                                                             BufferBinding targetPacked,
                                                             GLenum pname,
                                                             GLsizei bufSize,
                                                             GLsizei *length,
                                                             GLint64 *params);
-angle::CallCapture CaptureSamplerParameterivRobustANGLE(const Context *context,
+angle::CallCapture CaptureSamplerParameterivRobustANGLE(const State &glState,
                                                         bool isCallValid,
                                                         SamplerID samplerPacked,
                                                         GLuint pname,
                                                         GLsizei bufSize,
                                                         const GLint *param);
-angle::CallCapture CaptureSamplerParameterfvRobustANGLE(const Context *context,
+angle::CallCapture CaptureSamplerParameterfvRobustANGLE(const State &glState,
                                                         bool isCallValid,
                                                         SamplerID samplerPacked,
                                                         GLenum pname,
                                                         GLsizei bufSize,
                                                         const GLfloat *param);
-angle::CallCapture CaptureGetSamplerParameterivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetSamplerParameterivRobustANGLE(const State &glState,
                                                            bool isCallValid,
                                                            SamplerID samplerPacked,
                                                            GLenum pname,
                                                            GLsizei bufSize,
                                                            GLsizei *length,
                                                            GLint *params);
-angle::CallCapture CaptureGetSamplerParameterfvRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetSamplerParameterfvRobustANGLE(const State &glState,
                                                            bool isCallValid,
                                                            SamplerID samplerPacked,
                                                            GLenum pname,
                                                            GLsizei bufSize,
                                                            GLsizei *length,
                                                            GLfloat *params);
-angle::CallCapture CaptureGetFramebufferParameterivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetFramebufferParameterivRobustANGLE(const State &glState,
                                                                bool isCallValid,
                                                                GLenum target,
                                                                GLenum pname,
                                                                GLsizei bufSize,
                                                                GLsizei *length,
                                                                GLint *params);
-angle::CallCapture CaptureGetProgramInterfaceivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetProgramInterfaceivRobustANGLE(const State &glState,
                                                            bool isCallValid,
                                                            ShaderProgramID programPacked,
                                                            GLenum programInterface,
@@ -548,21 +547,21 @@
                                                            GLsizei bufSize,
                                                            GLsizei *length,
                                                            GLint *params);
-angle::CallCapture CaptureGetBooleani_vRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetBooleani_vRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    GLenum target,
                                                    GLuint index,
                                                    GLsizei bufSize,
                                                    GLsizei *length,
                                                    GLboolean *data);
-angle::CallCapture CaptureGetMultisamplefvRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetMultisamplefvRobustANGLE(const State &glState,
                                                       bool isCallValid,
                                                       GLenum pname,
                                                       GLuint index,
                                                       GLsizei bufSize,
                                                       GLsizei *length,
                                                       GLfloat *val);
-angle::CallCapture CaptureGetTexLevelParameterivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetTexLevelParameterivRobustANGLE(const State &glState,
                                                             bool isCallValid,
                                                             TextureTarget targetPacked,
                                                             GLint level,
@@ -570,7 +569,7 @@
                                                             GLsizei bufSize,
                                                             GLsizei *length,
                                                             GLint *params);
-angle::CallCapture CaptureGetTexLevelParameterfvRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetTexLevelParameterfvRobustANGLE(const State &glState,
                                                             bool isCallValid,
                                                             TextureTarget targetPacked,
                                                             GLint level,
@@ -578,13 +577,13 @@
                                                             GLsizei bufSize,
                                                             GLsizei *length,
                                                             GLfloat *params);
-angle::CallCapture CaptureGetPointervRobustANGLERobustANGLE(const Context *context,
+angle::CallCapture CaptureGetPointervRobustANGLERobustANGLE(const State &glState,
                                                             bool isCallValid,
                                                             GLenum pname,
                                                             GLsizei bufSize,
                                                             GLsizei *length,
                                                             void **params);
-angle::CallCapture CaptureReadnPixelsRobustANGLE(const Context *context,
+angle::CallCapture CaptureReadnPixelsRobustANGLE(const State &glState,
                                                  bool isCallValid,
                                                  GLint x,
                                                  GLint y,
@@ -597,94 +596,94 @@
                                                  GLsizei *columns,
                                                  GLsizei *rows,
                                                  void *data);
-angle::CallCapture CaptureGetnUniformfvRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetnUniformfvRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    ShaderProgramID programPacked,
                                                    GLint location,
                                                    GLsizei bufSize,
                                                    GLsizei *length,
                                                    GLfloat *params);
-angle::CallCapture CaptureGetnUniformivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetnUniformivRobustANGLE(const State &glState,
                                                    bool isCallValid,
                                                    ShaderProgramID programPacked,
                                                    GLint location,
                                                    GLsizei bufSize,
                                                    GLsizei *length,
                                                    GLint *params);
-angle::CallCapture CaptureGetnUniformuivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetnUniformuivRobustANGLE(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLint location,
                                                     GLsizei bufSize,
                                                     GLsizei *length,
                                                     GLuint *params);
-angle::CallCapture CaptureTexParameterIivRobustANGLE(const Context *context,
+angle::CallCapture CaptureTexParameterIivRobustANGLE(const State &glState,
                                                      bool isCallValid,
                                                      TextureType targetPacked,
                                                      GLenum pname,
                                                      GLsizei bufSize,
                                                      const GLint *params);
-angle::CallCapture CaptureTexParameterIuivRobustANGLE(const Context *context,
+angle::CallCapture CaptureTexParameterIuivRobustANGLE(const State &glState,
                                                       bool isCallValid,
                                                       TextureType targetPacked,
                                                       GLenum pname,
                                                       GLsizei bufSize,
                                                       const GLuint *params);
-angle::CallCapture CaptureGetTexParameterIivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetTexParameterIivRobustANGLE(const State &glState,
                                                         bool isCallValid,
                                                         TextureType targetPacked,
                                                         GLenum pname,
                                                         GLsizei bufSize,
                                                         GLsizei *length,
                                                         GLint *params);
-angle::CallCapture CaptureGetTexParameterIuivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetTexParameterIuivRobustANGLE(const State &glState,
                                                          bool isCallValid,
                                                          TextureType targetPacked,
                                                          GLenum pname,
                                                          GLsizei bufSize,
                                                          GLsizei *length,
                                                          GLuint *params);
-angle::CallCapture CaptureSamplerParameterIivRobustANGLE(const Context *context,
+angle::CallCapture CaptureSamplerParameterIivRobustANGLE(const State &glState,
                                                          bool isCallValid,
                                                          SamplerID samplerPacked,
                                                          GLenum pname,
                                                          GLsizei bufSize,
                                                          const GLint *param);
-angle::CallCapture CaptureSamplerParameterIuivRobustANGLE(const Context *context,
+angle::CallCapture CaptureSamplerParameterIuivRobustANGLE(const State &glState,
                                                           bool isCallValid,
                                                           SamplerID samplerPacked,
                                                           GLenum pname,
                                                           GLsizei bufSize,
                                                           const GLuint *param);
-angle::CallCapture CaptureGetSamplerParameterIivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetSamplerParameterIivRobustANGLE(const State &glState,
                                                             bool isCallValid,
                                                             SamplerID samplerPacked,
                                                             GLenum pname,
                                                             GLsizei bufSize,
                                                             GLsizei *length,
                                                             GLint *params);
-angle::CallCapture CaptureGetSamplerParameterIuivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetSamplerParameterIuivRobustANGLE(const State &glState,
                                                              bool isCallValid,
                                                              SamplerID samplerPacked,
                                                              GLenum pname,
                                                              GLsizei bufSize,
                                                              GLsizei *length,
                                                              GLuint *params);
-angle::CallCapture CaptureGetQueryObjectivRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetQueryObjectivRobustANGLE(const State &glState,
                                                       bool isCallValid,
                                                       QueryID idPacked,
                                                       GLenum pname,
                                                       GLsizei bufSize,
                                                       GLsizei *length,
                                                       GLint *params);
-angle::CallCapture CaptureGetQueryObjecti64vRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetQueryObjecti64vRobustANGLE(const State &glState,
                                                         bool isCallValid,
                                                         QueryID idPacked,
                                                         GLenum pname,
                                                         GLsizei bufSize,
                                                         GLsizei *length,
                                                         GLint64 *params);
-angle::CallCapture CaptureGetQueryObjectui64vRobustANGLE(const Context *context,
+angle::CallCapture CaptureGetQueryObjectui64vRobustANGLE(const State &glState,
                                                          bool isCallValid,
                                                          QueryID idPacked,
                                                          GLenum pname,
@@ -693,7 +692,7 @@
                                                          GLuint64 *params);
 
 // GL_ANGLE_texture_external_update
-angle::CallCapture CaptureTexImage2DExternalANGLE(const Context *context,
+angle::CallCapture CaptureTexImage2DExternalANGLE(const State &glState,
                                                   bool isCallValid,
                                                   TextureTarget targetPacked,
                                                   GLint level,
@@ -703,12 +702,12 @@
                                                   GLint border,
                                                   GLenum format,
                                                   GLenum type);
-angle::CallCapture CaptureInvalidateTextureANGLE(const Context *context,
+angle::CallCapture CaptureInvalidateTextureANGLE(const State &glState,
                                                  bool isCallValid,
                                                  TextureType targetPacked);
 
 // GL_ANGLE_texture_multisample
-angle::CallCapture CaptureTexStorage2DMultisampleANGLE(const Context *context,
+angle::CallCapture CaptureTexStorage2DMultisampleANGLE(const State &glState,
                                                        bool isCallValid,
                                                        TextureType targetPacked,
                                                        GLsizei samples,
@@ -716,30 +715,30 @@
                                                        GLsizei width,
                                                        GLsizei height,
                                                        GLboolean fixedsamplelocations);
-angle::CallCapture CaptureGetTexLevelParameterivANGLE(const Context *context,
+angle::CallCapture CaptureGetTexLevelParameterivANGLE(const State &glState,
                                                       bool isCallValid,
                                                       TextureTarget targetPacked,
                                                       GLint level,
                                                       GLenum pname,
                                                       GLint *params);
-angle::CallCapture CaptureGetTexLevelParameterfvANGLE(const Context *context,
+angle::CallCapture CaptureGetTexLevelParameterfvANGLE(const State &glState,
                                                       bool isCallValid,
                                                       TextureTarget targetPacked,
                                                       GLint level,
                                                       GLenum pname,
                                                       GLfloat *params);
-angle::CallCapture CaptureGetMultisamplefvANGLE(const Context *context,
+angle::CallCapture CaptureGetMultisamplefvANGLE(const State &glState,
                                                 bool isCallValid,
                                                 GLenum pname,
                                                 GLuint index,
                                                 GLfloat *val);
-angle::CallCapture CaptureSampleMaskiANGLE(const Context *context,
+angle::CallCapture CaptureSampleMaskiANGLE(const State &glState,
                                            bool isCallValid,
                                            GLuint maskNumber,
                                            GLbitfield mask);
 
 // GL_ANGLE_translated_shader_source
-angle::CallCapture CaptureGetTranslatedShaderSourceANGLE(const Context *context,
+angle::CallCapture CaptureGetTranslatedShaderSourceANGLE(const State &glState,
                                                          bool isCallValid,
                                                          ShaderProgramID shaderPacked,
                                                          GLsizei bufsize,
@@ -747,20 +746,20 @@
                                                          GLchar *source);
 
 // GL_CHROMIUM_bind_uniform_location
-angle::CallCapture CaptureBindUniformLocationCHROMIUM(const Context *context,
+angle::CallCapture CaptureBindUniformLocationCHROMIUM(const State &glState,
                                                       bool isCallValid,
                                                       ShaderProgramID programPacked,
                                                       GLint location,
                                                       const GLchar *name);
 
 // GL_CHROMIUM_copy_compressed_texture
-angle::CallCapture CaptureCompressedCopyTextureCHROMIUM(const Context *context,
+angle::CallCapture CaptureCompressedCopyTextureCHROMIUM(const State &glState,
                                                         bool isCallValid,
                                                         TextureID sourceIdPacked,
                                                         TextureID destIdPacked);
 
 // GL_CHROMIUM_copy_texture
-angle::CallCapture CaptureCopyTextureCHROMIUM(const Context *context,
+angle::CallCapture CaptureCopyTextureCHROMIUM(const State &glState,
                                               bool isCallValid,
                                               TextureID sourceIdPacked,
                                               GLint sourceLevel,
@@ -772,7 +771,7 @@
                                               GLboolean unpackFlipY,
                                               GLboolean unpackPremultiplyAlpha,
                                               GLboolean unpackUnmultiplyAlpha);
-angle::CallCapture CaptureCopySubTextureCHROMIUM(const Context *context,
+angle::CallCapture CaptureCopySubTextureCHROMIUM(const State &glState,
                                                  bool isCallValid,
                                                  TextureID sourceIdPacked,
                                                  GLint sourceLevel,
@@ -790,37 +789,37 @@
                                                  GLboolean unpackUnmultiplyAlpha);
 
 // GL_CHROMIUM_framebuffer_mixed_samples
-angle::CallCapture CaptureCoverageModulationCHROMIUM(const Context *context,
+angle::CallCapture CaptureCoverageModulationCHROMIUM(const State &glState,
                                                      bool isCallValid,
                                                      GLenum components);
-angle::CallCapture CaptureMatrixLoadfCHROMIUM(const Context *context,
+angle::CallCapture CaptureMatrixLoadfCHROMIUM(const State &glState,
                                               bool isCallValid,
                                               GLenum matrixMode,
                                               const GLfloat *matrix);
-angle::CallCapture CaptureMatrixLoadIdentityCHROMIUM(const Context *context,
+angle::CallCapture CaptureMatrixLoadIdentityCHROMIUM(const State &glState,
                                                      bool isCallValid,
                                                      GLenum matrixMode);
 
 // GL_CHROMIUM_lose_context
-angle::CallCapture CaptureLoseContextCHROMIUM(const Context *context,
+angle::CallCapture CaptureLoseContextCHROMIUM(const State &glState,
                                               bool isCallValid,
                                               GraphicsResetStatus currentPacked,
                                               GraphicsResetStatus otherPacked);
 
 // GL_CHROMIUM_path_rendering
-angle::CallCapture CaptureGenPathsCHROMIUM(const Context *context,
+angle::CallCapture CaptureGenPathsCHROMIUM(const State &glState,
                                            bool isCallValid,
                                            GLsizei range,
                                            GLuint returnValue);
-angle::CallCapture CaptureDeletePathsCHROMIUM(const Context *context,
+angle::CallCapture CaptureDeletePathsCHROMIUM(const State &glState,
                                               bool isCallValid,
                                               PathID firstPacked,
                                               GLsizei range);
-angle::CallCapture CaptureIsPathCHROMIUM(const Context *context,
+angle::CallCapture CaptureIsPathCHROMIUM(const State &glState,
                                          bool isCallValid,
                                          PathID pathPacked,
                                          GLboolean returnValue);
-angle::CallCapture CapturePathCommandsCHROMIUM(const Context *context,
+angle::CallCapture CapturePathCommandsCHROMIUM(const State &glState,
                                                bool isCallValid,
                                                PathID pathPacked,
                                                GLsizei numCommands,
@@ -828,62 +827,62 @@
                                                GLsizei numCoords,
                                                GLenum coordType,
                                                const void *coords);
-angle::CallCapture CapturePathParameterfCHROMIUM(const Context *context,
+angle::CallCapture CapturePathParameterfCHROMIUM(const State &glState,
                                                  bool isCallValid,
                                                  PathID pathPacked,
                                                  GLenum pname,
                                                  GLfloat value);
-angle::CallCapture CapturePathParameteriCHROMIUM(const Context *context,
+angle::CallCapture CapturePathParameteriCHROMIUM(const State &glState,
                                                  bool isCallValid,
                                                  PathID pathPacked,
                                                  GLenum pname,
                                                  GLint value);
-angle::CallCapture CaptureGetPathParameterfvCHROMIUM(const Context *context,
+angle::CallCapture CaptureGetPathParameterfvCHROMIUM(const State &glState,
                                                      bool isCallValid,
                                                      PathID pathPacked,
                                                      GLenum pname,
                                                      GLfloat *value);
-angle::CallCapture CaptureGetPathParameterivCHROMIUM(const Context *context,
+angle::CallCapture CaptureGetPathParameterivCHROMIUM(const State &glState,
                                                      bool isCallValid,
                                                      PathID pathPacked,
                                                      GLenum pname,
                                                      GLint *value);
-angle::CallCapture CapturePathStencilFuncCHROMIUM(const Context *context,
+angle::CallCapture CapturePathStencilFuncCHROMIUM(const State &glState,
                                                   bool isCallValid,
                                                   GLenum func,
                                                   GLint ref,
                                                   GLuint mask);
-angle::CallCapture CaptureStencilFillPathCHROMIUM(const Context *context,
+angle::CallCapture CaptureStencilFillPathCHROMIUM(const State &glState,
                                                   bool isCallValid,
                                                   PathID pathPacked,
                                                   GLenum fillMode,
                                                   GLuint mask);
-angle::CallCapture CaptureStencilStrokePathCHROMIUM(const Context *context,
+angle::CallCapture CaptureStencilStrokePathCHROMIUM(const State &glState,
                                                     bool isCallValid,
                                                     PathID pathPacked,
                                                     GLint reference,
                                                     GLuint mask);
-angle::CallCapture CaptureCoverFillPathCHROMIUM(const Context *context,
+angle::CallCapture CaptureCoverFillPathCHROMIUM(const State &glState,
                                                 bool isCallValid,
                                                 PathID pathPacked,
                                                 GLenum coverMode);
-angle::CallCapture CaptureCoverStrokePathCHROMIUM(const Context *context,
+angle::CallCapture CaptureCoverStrokePathCHROMIUM(const State &glState,
                                                   bool isCallValid,
                                                   PathID pathPacked,
                                                   GLenum coverMode);
-angle::CallCapture CaptureStencilThenCoverFillPathCHROMIUM(const Context *context,
+angle::CallCapture CaptureStencilThenCoverFillPathCHROMIUM(const State &glState,
                                                            bool isCallValid,
                                                            PathID pathPacked,
                                                            GLenum fillMode,
                                                            GLuint mask,
                                                            GLenum coverMode);
-angle::CallCapture CaptureStencilThenCoverStrokePathCHROMIUM(const Context *context,
+angle::CallCapture CaptureStencilThenCoverStrokePathCHROMIUM(const State &glState,
                                                              bool isCallValid,
                                                              PathID pathPacked,
                                                              GLint reference,
                                                              GLuint mask,
                                                              GLenum coverMode);
-angle::CallCapture CaptureCoverFillPathInstancedCHROMIUM(const Context *context,
+angle::CallCapture CaptureCoverFillPathInstancedCHROMIUM(const State &glState,
                                                          bool isCallValid,
                                                          GLsizei numPath,
                                                          GLenum pathNameType,
@@ -892,7 +891,7 @@
                                                          GLenum coverMode,
                                                          GLenum transformType,
                                                          const GLfloat *transformValues);
-angle::CallCapture CaptureCoverStrokePathInstancedCHROMIUM(const Context *context,
+angle::CallCapture CaptureCoverStrokePathInstancedCHROMIUM(const State &glState,
                                                            bool isCallValid,
                                                            GLsizei numPath,
                                                            GLenum pathNameType,
@@ -901,7 +900,7 @@
                                                            GLenum coverMode,
                                                            GLenum transformType,
                                                            const GLfloat *transformValues);
-angle::CallCapture CaptureStencilStrokePathInstancedCHROMIUM(const Context *context,
+angle::CallCapture CaptureStencilStrokePathInstancedCHROMIUM(const State &glState,
                                                              bool isCallValid,
                                                              GLsizei numPath,
                                                              GLenum pathNameType,
@@ -911,7 +910,7 @@
                                                              GLuint mask,
                                                              GLenum transformType,
                                                              const GLfloat *transformValues);
-angle::CallCapture CaptureStencilFillPathInstancedCHROMIUM(const Context *context,
+angle::CallCapture CaptureStencilFillPathInstancedCHROMIUM(const State &glState,
                                                            bool isCallValid,
                                                            GLsizei numPaths,
                                                            GLenum pathNameType,
@@ -921,7 +920,7 @@
                                                            GLuint mask,
                                                            GLenum transformType,
                                                            const GLfloat *transformValues);
-angle::CallCapture CaptureStencilThenCoverFillPathInstancedCHROMIUM(const Context *context,
+angle::CallCapture CaptureStencilThenCoverFillPathInstancedCHROMIUM(const State &glState,
                                                                     bool isCallValid,
                                                                     GLsizei numPaths,
                                                                     GLenum pathNameType,
@@ -933,7 +932,7 @@
                                                                     GLenum transformType,
                                                                     const GLfloat *transformValues);
 angle::CallCapture CaptureStencilThenCoverStrokePathInstancedCHROMIUM(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     GLsizei numPaths,
     GLenum pathNameType,
@@ -944,12 +943,12 @@
     GLenum coverMode,
     GLenum transformType,
     const GLfloat *transformValues);
-angle::CallCapture CaptureBindFragmentInputLocationCHROMIUM(const Context *context,
+angle::CallCapture CaptureBindFragmentInputLocationCHROMIUM(const State &glState,
                                                             bool isCallValid,
                                                             ShaderProgramID programsPacked,
                                                             GLint location,
                                                             const GLchar *name);
-angle::CallCapture CaptureProgramPathFragmentInputGenCHROMIUM(const Context *context,
+angle::CallCapture CaptureProgramPathFragmentInputGenCHROMIUM(const State &glState,
                                                               bool isCallValid,
                                                               ShaderProgramID programPacked,
                                                               GLint location,
@@ -958,23 +957,23 @@
                                                               const GLfloat *coeffs);
 
 // GL_EXT_blend_func_extended
-angle::CallCapture CaptureBindFragDataLocationEXT(const Context *context,
+angle::CallCapture CaptureBindFragDataLocationEXT(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID programPacked,
                                                   GLuint color,
                                                   const GLchar *name);
-angle::CallCapture CaptureBindFragDataLocationIndexedEXT(const Context *context,
+angle::CallCapture CaptureBindFragDataLocationIndexedEXT(const State &glState,
                                                          bool isCallValid,
                                                          ShaderProgramID programPacked,
                                                          GLuint colorNumber,
                                                          GLuint index,
                                                          const GLchar *name);
-angle::CallCapture CaptureGetFragDataIndexEXT(const Context *context,
+angle::CallCapture CaptureGetFragDataIndexEXT(const State &glState,
                                               bool isCallValid,
                                               ShaderProgramID programPacked,
                                               const GLchar *name,
                                               GLint returnValue);
-angle::CallCapture CaptureGetProgramResourceLocationIndexEXT(const Context *context,
+angle::CallCapture CaptureGetProgramResourceLocationIndexEXT(const State &glState,
                                                              bool isCallValid,
                                                              ShaderProgramID programPacked,
                                                              GLenum programInterface,
@@ -982,81 +981,81 @@
                                                              GLint returnValue);
 
 // GL_EXT_debug_marker
-angle::CallCapture CaptureInsertEventMarkerEXT(const Context *context,
+angle::CallCapture CaptureInsertEventMarkerEXT(const State &glState,
                                                bool isCallValid,
                                                GLsizei length,
                                                const GLchar *marker);
-angle::CallCapture CapturePopGroupMarkerEXT(const Context *context, bool isCallValid);
-angle::CallCapture CapturePushGroupMarkerEXT(const Context *context,
+angle::CallCapture CapturePopGroupMarkerEXT(const State &glState, bool isCallValid);
+angle::CallCapture CapturePushGroupMarkerEXT(const State &glState,
                                              bool isCallValid,
                                              GLsizei length,
                                              const GLchar *marker);
 
 // GL_EXT_discard_framebuffer
-angle::CallCapture CaptureDiscardFramebufferEXT(const Context *context,
+angle::CallCapture CaptureDiscardFramebufferEXT(const State &glState,
                                                 bool isCallValid,
                                                 GLenum target,
                                                 GLsizei numAttachments,
                                                 const GLenum *attachments);
 
 // GL_EXT_disjoint_timer_query
-angle::CallCapture CaptureBeginQueryEXT(const Context *context,
+angle::CallCapture CaptureBeginQueryEXT(const State &glState,
                                         bool isCallValid,
                                         QueryType targetPacked,
                                         QueryID idPacked);
-angle::CallCapture CaptureDeleteQueriesEXT(const Context *context,
+angle::CallCapture CaptureDeleteQueriesEXT(const State &glState,
                                            bool isCallValid,
                                            GLsizei n,
                                            const QueryID *idsPacked);
-angle::CallCapture CaptureEndQueryEXT(const Context *context,
+angle::CallCapture CaptureEndQueryEXT(const State &glState,
                                       bool isCallValid,
                                       QueryType targetPacked);
-angle::CallCapture CaptureGenQueriesEXT(const Context *context,
+angle::CallCapture CaptureGenQueriesEXT(const State &glState,
                                         bool isCallValid,
                                         GLsizei n,
                                         QueryID *idsPacked);
-angle::CallCapture CaptureGetQueryObjecti64vEXT(const Context *context,
+angle::CallCapture CaptureGetQueryObjecti64vEXT(const State &glState,
                                                 bool isCallValid,
                                                 QueryID idPacked,
                                                 GLenum pname,
                                                 GLint64 *params);
-angle::CallCapture CaptureGetQueryObjectivEXT(const Context *context,
+angle::CallCapture CaptureGetQueryObjectivEXT(const State &glState,
                                               bool isCallValid,
                                               QueryID idPacked,
                                               GLenum pname,
                                               GLint *params);
-angle::CallCapture CaptureGetQueryObjectui64vEXT(const Context *context,
+angle::CallCapture CaptureGetQueryObjectui64vEXT(const State &glState,
                                                  bool isCallValid,
                                                  QueryID idPacked,
                                                  GLenum pname,
                                                  GLuint64 *params);
-angle::CallCapture CaptureGetQueryObjectuivEXT(const Context *context,
+angle::CallCapture CaptureGetQueryObjectuivEXT(const State &glState,
                                                bool isCallValid,
                                                QueryID idPacked,
                                                GLenum pname,
                                                GLuint *params);
-angle::CallCapture CaptureGetQueryivEXT(const Context *context,
+angle::CallCapture CaptureGetQueryivEXT(const State &glState,
                                         bool isCallValid,
                                         QueryType targetPacked,
                                         GLenum pname,
                                         GLint *params);
-angle::CallCapture CaptureIsQueryEXT(const Context *context,
+angle::CallCapture CaptureIsQueryEXT(const State &glState,
                                      bool isCallValid,
                                      QueryID idPacked,
                                      GLboolean returnValue);
-angle::CallCapture CaptureQueryCounterEXT(const Context *context,
+angle::CallCapture CaptureQueryCounterEXT(const State &glState,
                                           bool isCallValid,
                                           QueryID idPacked,
                                           QueryType targetPacked);
 
 // GL_EXT_draw_buffers
-angle::CallCapture CaptureDrawBuffersEXT(const Context *context,
+angle::CallCapture CaptureDrawBuffersEXT(const State &glState,
                                          bool isCallValid,
                                          GLsizei n,
                                          const GLenum *bufs);
 
 // GL_EXT_geometry_shader
-angle::CallCapture CaptureFramebufferTextureEXT(const Context *context,
+angle::CallCapture CaptureFramebufferTextureEXT(const State &glState,
                                                 bool isCallValid,
                                                 GLenum target,
                                                 GLenum attachment,
@@ -1064,31 +1063,31 @@
                                                 GLint level);
 
 // GL_EXT_instanced_arrays
-angle::CallCapture CaptureDrawArraysInstancedEXT(const Context *context,
+angle::CallCapture CaptureDrawArraysInstancedEXT(const State &glState,
                                                  bool isCallValid,
                                                  PrimitiveMode modePacked,
                                                  GLint start,
                                                  GLsizei count,
                                                  GLsizei primcount);
-angle::CallCapture CaptureDrawElementsInstancedEXT(const Context *context,
+angle::CallCapture CaptureDrawElementsInstancedEXT(const State &glState,
                                                    bool isCallValid,
                                                    PrimitiveMode modePacked,
                                                    GLsizei count,
                                                    DrawElementsType typePacked,
                                                    const void *indices,
                                                    GLsizei primcount);
-angle::CallCapture CaptureVertexAttribDivisorEXT(const Context *context,
+angle::CallCapture CaptureVertexAttribDivisorEXT(const State &glState,
                                                  bool isCallValid,
                                                  GLuint index,
                                                  GLuint divisor);
 
 // GL_EXT_map_buffer_range
-angle::CallCapture CaptureFlushMappedBufferRangeEXT(const Context *context,
+angle::CallCapture CaptureFlushMappedBufferRangeEXT(const State &glState,
                                                     bool isCallValid,
                                                     BufferBinding targetPacked,
                                                     GLintptr offset,
                                                     GLsizeiptr length);
-angle::CallCapture CaptureMapBufferRangeEXT(const Context *context,
+angle::CallCapture CaptureMapBufferRangeEXT(const State &glState,
                                             bool isCallValid,
                                             BufferBinding targetPacked,
                                             GLintptr offset,
@@ -1097,44 +1096,44 @@
                                             void *returnValue);
 
 // GL_EXT_memory_object
-angle::CallCapture CaptureBufferStorageMemEXT(const Context *context,
+angle::CallCapture CaptureBufferStorageMemEXT(const State &glState,
                                               bool isCallValid,
                                               TextureType targetPacked,
                                               GLsizeiptr size,
                                               MemoryObjectID memoryPacked,
                                               GLuint64 offset);
-angle::CallCapture CaptureCreateMemoryObjectsEXT(const Context *context,
+angle::CallCapture CaptureCreateMemoryObjectsEXT(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei n,
                                                  MemoryObjectID *memoryObjectsPacked);
-angle::CallCapture CaptureDeleteMemoryObjectsEXT(const Context *context,
+angle::CallCapture CaptureDeleteMemoryObjectsEXT(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei n,
                                                  const MemoryObjectID *memoryObjectsPacked);
-angle::CallCapture CaptureGetMemoryObjectParameterivEXT(const Context *context,
+angle::CallCapture CaptureGetMemoryObjectParameterivEXT(const State &glState,
                                                         bool isCallValid,
                                                         MemoryObjectID memoryObjectPacked,
                                                         GLenum pname,
                                                         GLint *params);
-angle::CallCapture CaptureGetUnsignedBytevEXT(const Context *context,
+angle::CallCapture CaptureGetUnsignedBytevEXT(const State &glState,
                                               bool isCallValid,
                                               GLenum pname,
                                               GLubyte *data);
-angle::CallCapture CaptureGetUnsignedBytei_vEXT(const Context *context,
+angle::CallCapture CaptureGetUnsignedBytei_vEXT(const State &glState,
                                                 bool isCallValid,
                                                 GLenum target,
                                                 GLuint index,
                                                 GLubyte *data);
-angle::CallCapture CaptureIsMemoryObjectEXT(const Context *context,
+angle::CallCapture CaptureIsMemoryObjectEXT(const State &glState,
                                             bool isCallValid,
                                             MemoryObjectID memoryObjectPacked,
                                             GLboolean returnValue);
-angle::CallCapture CaptureMemoryObjectParameterivEXT(const Context *context,
+angle::CallCapture CaptureMemoryObjectParameterivEXT(const State &glState,
                                                      bool isCallValid,
                                                      MemoryObjectID memoryObjectPacked,
                                                      GLenum pname,
                                                      const GLint *params);
-angle::CallCapture CaptureTexStorageMem2DEXT(const Context *context,
+angle::CallCapture CaptureTexStorageMem2DEXT(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLsizei levels,
@@ -1143,7 +1142,7 @@
                                              GLsizei height,
                                              MemoryObjectID memoryPacked,
                                              GLuint64 offset);
-angle::CallCapture CaptureTexStorageMem2DMultisampleEXT(const Context *context,
+angle::CallCapture CaptureTexStorageMem2DMultisampleEXT(const State &glState,
                                                         bool isCallValid,
                                                         TextureType targetPacked,
                                                         GLsizei samples,
@@ -1153,7 +1152,7 @@
                                                         GLboolean fixedSampleLocations,
                                                         MemoryObjectID memoryPacked,
                                                         GLuint64 offset);
-angle::CallCapture CaptureTexStorageMem3DEXT(const Context *context,
+angle::CallCapture CaptureTexStorageMem3DEXT(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLsizei levels,
@@ -1163,7 +1162,7 @@
                                              GLsizei depth,
                                              MemoryObjectID memoryPacked,
                                              GLuint64 offset);
-angle::CallCapture CaptureTexStorageMem3DMultisampleEXT(const Context *context,
+angle::CallCapture CaptureTexStorageMem3DMultisampleEXT(const State &glState,
                                                         bool isCallValid,
                                                         TextureType targetPacked,
                                                         GLsizei samples,
@@ -1176,7 +1175,7 @@
                                                         GLuint64 offset);
 
 // GL_EXT_memory_object_fd
-angle::CallCapture CaptureImportMemoryFdEXT(const Context *context,
+angle::CallCapture CaptureImportMemoryFdEXT(const State &glState,
                                             bool isCallValid,
                                             MemoryObjectID memoryPacked,
                                             GLuint64 size,
@@ -1184,7 +1183,7 @@
                                             GLint fd);
 
 // GL_EXT_multisampled_render_to_texture
-angle::CallCapture CaptureFramebufferTexture2DMultisampleEXT(const Context *context,
+angle::CallCapture CaptureFramebufferTexture2DMultisampleEXT(const State &glState,
                                                              bool isCallValid,
                                                              GLenum target,
                                                              GLenum attachment,
@@ -1192,7 +1191,7 @@
                                                              GLuint texture,
                                                              GLint level,
                                                              GLsizei samples);
-angle::CallCapture CaptureRenderbufferStorageMultisampleEXT(const Context *context,
+angle::CallCapture CaptureRenderbufferStorageMultisampleEXT(const State &glState,
                                                             bool isCallValid,
                                                             GLenum target,
                                                             GLsizei samples,
@@ -1203,22 +1202,22 @@
 // GL_EXT_occlusion_query_boolean
 
 // GL_EXT_robustness
-angle::CallCapture CaptureGetGraphicsResetStatusEXT(const Context *context,
+angle::CallCapture CaptureGetGraphicsResetStatusEXT(const State &glState,
                                                     bool isCallValid,
                                                     GLenum returnValue);
-angle::CallCapture CaptureGetnUniformfvEXT(const Context *context,
+angle::CallCapture CaptureGetnUniformfvEXT(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
                                            GLsizei bufSize,
                                            GLfloat *params);
-angle::CallCapture CaptureGetnUniformivEXT(const Context *context,
+angle::CallCapture CaptureGetnUniformivEXT(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
                                            GLsizei bufSize,
                                            GLint *params);
-angle::CallCapture CaptureReadnPixelsEXT(const Context *context,
+angle::CallCapture CaptureReadnPixelsEXT(const State &glState,
                                          bool isCallValid,
                                          GLint x,
                                          GLint y,
@@ -1230,29 +1229,29 @@
                                          void *data);
 
 // GL_EXT_semaphore
-angle::CallCapture CaptureDeleteSemaphoresEXT(const Context *context,
+angle::CallCapture CaptureDeleteSemaphoresEXT(const State &glState,
                                               bool isCallValid,
                                               GLsizei n,
                                               const SemaphoreID *semaphoresPacked);
-angle::CallCapture CaptureGenSemaphoresEXT(const Context *context,
+angle::CallCapture CaptureGenSemaphoresEXT(const State &glState,
                                            bool isCallValid,
                                            GLsizei n,
                                            SemaphoreID *semaphoresPacked);
-angle::CallCapture CaptureGetSemaphoreParameterui64vEXT(const Context *context,
+angle::CallCapture CaptureGetSemaphoreParameterui64vEXT(const State &glState,
                                                         bool isCallValid,
                                                         SemaphoreID semaphorePacked,
                                                         GLenum pname,
                                                         GLuint64 *params);
-angle::CallCapture CaptureIsSemaphoreEXT(const Context *context,
+angle::CallCapture CaptureIsSemaphoreEXT(const State &glState,
                                          bool isCallValid,
                                          SemaphoreID semaphorePacked,
                                          GLboolean returnValue);
-angle::CallCapture CaptureSemaphoreParameterui64vEXT(const Context *context,
+angle::CallCapture CaptureSemaphoreParameterui64vEXT(const State &glState,
                                                      bool isCallValid,
                                                      SemaphoreID semaphorePacked,
                                                      GLenum pname,
                                                      const GLuint64 *params);
-angle::CallCapture CaptureSignalSemaphoreEXT(const Context *context,
+angle::CallCapture CaptureSignalSemaphoreEXT(const State &glState,
                                              bool isCallValid,
                                              SemaphoreID semaphorePacked,
                                              GLuint numBufferBarriers,
@@ -1260,7 +1259,7 @@
                                              GLuint numTextureBarriers,
                                              const TextureID *texturesPacked,
                                              const GLenum *dstLayouts);
-angle::CallCapture CaptureWaitSemaphoreEXT(const Context *context,
+angle::CallCapture CaptureWaitSemaphoreEXT(const State &glState,
                                            bool isCallValid,
                                            SemaphoreID semaphorePacked,
                                            GLuint numBufferBarriers,
@@ -1270,7 +1269,7 @@
                                            const GLenum *srcLayouts);
 
 // GL_EXT_semaphore_fd
-angle::CallCapture CaptureImportSemaphoreFdEXT(const Context *context,
+angle::CallCapture CaptureImportSemaphoreFdEXT(const State &glState,
                                                bool isCallValid,
                                                SemaphoreID semaphorePacked,
                                                HandleType handleTypePacked,
@@ -1279,20 +1278,20 @@
 // GL_EXT_texture_filter_anisotropic
 
 // GL_EXT_texture_storage
-angle::CallCapture CaptureTexStorage1DEXT(const Context *context,
+angle::CallCapture CaptureTexStorage1DEXT(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           GLsizei levels,
                                           GLenum internalformat,
                                           GLsizei width);
-angle::CallCapture CaptureTexStorage2DEXT(const Context *context,
+angle::CallCapture CaptureTexStorage2DEXT(const State &glState,
                                           bool isCallValid,
                                           TextureType targetPacked,
                                           GLsizei levels,
                                           GLenum internalformat,
                                           GLsizei width,
                                           GLsizei height);
-angle::CallCapture CaptureTexStorage3DEXT(const Context *context,
+angle::CallCapture CaptureTexStorage3DEXT(const State &glState,
                                           bool isCallValid,
                                           TextureType targetPacked,
                                           GLsizei levels,
@@ -1302,11 +1301,11 @@
                                           GLsizei depth);
 
 // GL_KHR_debug
-angle::CallCapture CaptureDebugMessageCallbackKHR(const Context *context,
+angle::CallCapture CaptureDebugMessageCallbackKHR(const State &glState,
                                                   bool isCallValid,
                                                   GLDEBUGPROCKHR callback,
                                                   const void *userParam);
-angle::CallCapture CaptureDebugMessageControlKHR(const Context *context,
+angle::CallCapture CaptureDebugMessageControlKHR(const State &glState,
                                                  bool isCallValid,
                                                  GLenum source,
                                                  GLenum type,
@@ -1314,7 +1313,7 @@
                                                  GLsizei count,
                                                  const GLuint *ids,
                                                  GLboolean enabled);
-angle::CallCapture CaptureDebugMessageInsertKHR(const Context *context,
+angle::CallCapture CaptureDebugMessageInsertKHR(const State &glState,
                                                 bool isCallValid,
                                                 GLenum source,
                                                 GLenum type,
@@ -1322,7 +1321,7 @@
                                                 GLenum severity,
                                                 GLsizei length,
                                                 const GLchar *buf);
-angle::CallCapture CaptureGetDebugMessageLogKHR(const Context *context,
+angle::CallCapture CaptureGetDebugMessageLogKHR(const State &glState,
                                                 bool isCallValid,
                                                 GLuint count,
                                                 GLsizei bufSize,
@@ -1333,36 +1332,36 @@
                                                 GLsizei *lengths,
                                                 GLchar *messageLog,
                                                 GLuint returnValue);
-angle::CallCapture CaptureGetObjectLabelKHR(const Context *context,
+angle::CallCapture CaptureGetObjectLabelKHR(const State &glState,
                                             bool isCallValid,
                                             GLenum identifier,
                                             GLuint name,
                                             GLsizei bufSize,
                                             GLsizei *length,
                                             GLchar *label);
-angle::CallCapture CaptureGetObjectPtrLabelKHR(const Context *context,
+angle::CallCapture CaptureGetObjectPtrLabelKHR(const State &glState,
                                                bool isCallValid,
                                                const void *ptr,
                                                GLsizei bufSize,
                                                GLsizei *length,
                                                GLchar *label);
-angle::CallCapture CaptureGetPointervKHR(const Context *context,
+angle::CallCapture CaptureGetPointervKHR(const State &glState,
                                          bool isCallValid,
                                          GLenum pname,
                                          void **params);
-angle::CallCapture CaptureObjectLabelKHR(const Context *context,
+angle::CallCapture CaptureObjectLabelKHR(const State &glState,
                                          bool isCallValid,
                                          GLenum identifier,
                                          GLuint name,
                                          GLsizei length,
                                          const GLchar *label);
-angle::CallCapture CaptureObjectPtrLabelKHR(const Context *context,
+angle::CallCapture CaptureObjectPtrLabelKHR(const State &glState,
                                             bool isCallValid,
                                             const void *ptr,
                                             GLsizei length,
                                             const GLchar *label);
-angle::CallCapture CapturePopDebugGroupKHR(const Context *context, bool isCallValid);
-angle::CallCapture CapturePushDebugGroupKHR(const Context *context,
+angle::CallCapture CapturePopDebugGroupKHR(const State &glState, bool isCallValid);
+angle::CallCapture CapturePushDebugGroupKHR(const State &glState,
                                             bool isCallValid,
                                             GLenum source,
                                             GLuint id,
@@ -1370,157 +1369,155 @@
                                             const GLchar *message);
 
 // GL_KHR_parallel_shader_compile
-angle::CallCapture CaptureMaxShaderCompilerThreadsKHR(const Context *context,
+angle::CallCapture CaptureMaxShaderCompilerThreadsKHR(const State &glState,
                                                       bool isCallValid,
                                                       GLuint count);
 
 // GL_NV_fence
-angle::CallCapture CaptureDeleteFencesNV(const Context *context,
+angle::CallCapture CaptureDeleteFencesNV(const State &glState,
                                          bool isCallValid,
                                          GLsizei n,
                                          const FenceNVID *fencesPacked);
-angle::CallCapture CaptureFinishFenceNV(const Context *context,
+angle::CallCapture CaptureFinishFenceNV(const State &glState,
                                         bool isCallValid,
                                         FenceNVID fencePacked);
-angle::CallCapture CaptureGenFencesNV(const Context *context,
+angle::CallCapture CaptureGenFencesNV(const State &glState,
                                       bool isCallValid,
                                       GLsizei n,
                                       FenceNVID *fencesPacked);
-angle::CallCapture CaptureGetFenceivNV(const Context *context,
+angle::CallCapture CaptureGetFenceivNV(const State &glState,
                                        bool isCallValid,
                                        FenceNVID fencePacked,
                                        GLenum pname,
                                        GLint *params);
-angle::CallCapture CaptureIsFenceNV(const Context *context,
+angle::CallCapture CaptureIsFenceNV(const State &glState,
                                     bool isCallValid,
                                     FenceNVID fencePacked,
                                     GLboolean returnValue);
-angle::CallCapture CaptureSetFenceNV(const Context *context,
+angle::CallCapture CaptureSetFenceNV(const State &glState,
                                      bool isCallValid,
                                      FenceNVID fencePacked,
                                      GLenum condition);
-angle::CallCapture CaptureTestFenceNV(const Context *context,
+angle::CallCapture CaptureTestFenceNV(const State &glState,
                                       bool isCallValid,
                                       FenceNVID fencePacked,
                                       GLboolean returnValue);
 
 // GL_OES_EGL_image
-angle::CallCapture CaptureEGLImageTargetRenderbufferStorageOES(const Context *context,
+angle::CallCapture CaptureEGLImageTargetRenderbufferStorageOES(const State &glState,
                                                                bool isCallValid,
                                                                GLenum target,
                                                                GLeglImageOES image);
-angle::CallCapture CaptureEGLImageTargetTexture2DOES(const Context *context,
+angle::CallCapture CaptureEGLImageTargetTexture2DOES(const State &glState,
                                                      bool isCallValid,
                                                      TextureType targetPacked,
                                                      GLeglImageOES image);
 
 // GL_OES_draw_texture
-angle::CallCapture CaptureDrawTexfOES(const Context *context,
+angle::CallCapture CaptureDrawTexfOES(const State &glState,
                                       bool isCallValid,
                                       GLfloat x,
                                       GLfloat y,
                                       GLfloat z,
                                       GLfloat width,
                                       GLfloat height);
-angle::CallCapture CaptureDrawTexfvOES(const Context *context,
+angle::CallCapture CaptureDrawTexfvOES(const State &glState,
                                        bool isCallValid,
                                        const GLfloat *coords);
-angle::CallCapture CaptureDrawTexiOES(const Context *context,
+angle::CallCapture CaptureDrawTexiOES(const State &glState,
                                       bool isCallValid,
                                       GLint x,
                                       GLint y,
                                       GLint z,
                                       GLint width,
                                       GLint height);
-angle::CallCapture CaptureDrawTexivOES(const Context *context,
-                                       bool isCallValid,
-                                       const GLint *coords);
-angle::CallCapture CaptureDrawTexsOES(const Context *context,
+angle::CallCapture CaptureDrawTexivOES(const State &glState, bool isCallValid, const GLint *coords);
+angle::CallCapture CaptureDrawTexsOES(const State &glState,
                                       bool isCallValid,
                                       GLshort x,
                                       GLshort y,
                                       GLshort z,
                                       GLshort width,
                                       GLshort height);
-angle::CallCapture CaptureDrawTexsvOES(const Context *context,
+angle::CallCapture CaptureDrawTexsvOES(const State &glState,
                                        bool isCallValid,
                                        const GLshort *coords);
-angle::CallCapture CaptureDrawTexxOES(const Context *context,
+angle::CallCapture CaptureDrawTexxOES(const State &glState,
                                       bool isCallValid,
                                       GLfixed x,
                                       GLfixed y,
                                       GLfixed z,
                                       GLfixed width,
                                       GLfixed height);
-angle::CallCapture CaptureDrawTexxvOES(const Context *context,
+angle::CallCapture CaptureDrawTexxvOES(const State &glState,
                                        bool isCallValid,
                                        const GLfixed *coords);
 
 // GL_OES_framebuffer_object
-angle::CallCapture CaptureBindFramebufferOES(const Context *context,
+angle::CallCapture CaptureBindFramebufferOES(const State &glState,
                                              bool isCallValid,
                                              GLenum target,
                                              FramebufferID framebufferPacked);
-angle::CallCapture CaptureBindRenderbufferOES(const Context *context,
+angle::CallCapture CaptureBindRenderbufferOES(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               RenderbufferID renderbufferPacked);
-angle::CallCapture CaptureCheckFramebufferStatusOES(const Context *context,
+angle::CallCapture CaptureCheckFramebufferStatusOES(const State &glState,
                                                     bool isCallValid,
                                                     GLenum target,
                                                     GLenum returnValue);
-angle::CallCapture CaptureDeleteFramebuffersOES(const Context *context,
+angle::CallCapture CaptureDeleteFramebuffersOES(const State &glState,
                                                 bool isCallValid,
                                                 GLsizei n,
                                                 const FramebufferID *framebuffersPacked);
-angle::CallCapture CaptureDeleteRenderbuffersOES(const Context *context,
+angle::CallCapture CaptureDeleteRenderbuffersOES(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei n,
                                                  const RenderbufferID *renderbuffersPacked);
-angle::CallCapture CaptureFramebufferRenderbufferOES(const Context *context,
+angle::CallCapture CaptureFramebufferRenderbufferOES(const State &glState,
                                                      bool isCallValid,
                                                      GLenum target,
                                                      GLenum attachment,
                                                      GLenum renderbuffertarget,
                                                      RenderbufferID renderbufferPacked);
-angle::CallCapture CaptureFramebufferTexture2DOES(const Context *context,
+angle::CallCapture CaptureFramebufferTexture2DOES(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum attachment,
                                                   TextureTarget textargetPacked,
                                                   TextureID texturePacked,
                                                   GLint level);
-angle::CallCapture CaptureGenFramebuffersOES(const Context *context,
+angle::CallCapture CaptureGenFramebuffersOES(const State &glState,
                                              bool isCallValid,
                                              GLsizei n,
                                              FramebufferID *framebuffersPacked);
-angle::CallCapture CaptureGenRenderbuffersOES(const Context *context,
+angle::CallCapture CaptureGenRenderbuffersOES(const State &glState,
                                               bool isCallValid,
                                               GLsizei n,
                                               RenderbufferID *renderbuffersPacked);
-angle::CallCapture CaptureGenerateMipmapOES(const Context *context,
+angle::CallCapture CaptureGenerateMipmapOES(const State &glState,
                                             bool isCallValid,
                                             TextureType targetPacked);
-angle::CallCapture CaptureGetFramebufferAttachmentParameterivOES(const Context *context,
+angle::CallCapture CaptureGetFramebufferAttachmentParameterivOES(const State &glState,
                                                                  bool isCallValid,
                                                                  GLenum target,
                                                                  GLenum attachment,
                                                                  GLenum pname,
                                                                  GLint *params);
-angle::CallCapture CaptureGetRenderbufferParameterivOES(const Context *context,
+angle::CallCapture CaptureGetRenderbufferParameterivOES(const State &glState,
                                                         bool isCallValid,
                                                         GLenum target,
                                                         GLenum pname,
                                                         GLint *params);
-angle::CallCapture CaptureIsFramebufferOES(const Context *context,
+angle::CallCapture CaptureIsFramebufferOES(const State &glState,
                                            bool isCallValid,
                                            FramebufferID framebufferPacked,
                                            GLboolean returnValue);
-angle::CallCapture CaptureIsRenderbufferOES(const Context *context,
+angle::CallCapture CaptureIsRenderbufferOES(const State &glState,
                                             bool isCallValid,
                                             RenderbufferID renderbufferPacked,
                                             GLboolean returnValue);
-angle::CallCapture CaptureRenderbufferStorageOES(const Context *context,
+angle::CallCapture CaptureRenderbufferStorageOES(const State &glState,
                                                  bool isCallValid,
                                                  GLenum target,
                                                  GLenum internalformat,
@@ -1528,14 +1525,14 @@
                                                  GLsizei height);
 
 // GL_OES_get_program_binary
-angle::CallCapture CaptureGetProgramBinaryOES(const Context *context,
+angle::CallCapture CaptureGetProgramBinaryOES(const State &glState,
                                               bool isCallValid,
                                               ShaderProgramID programPacked,
                                               GLsizei bufSize,
                                               GLsizei *length,
                                               GLenum *binaryFormat,
                                               void *binary);
-angle::CallCapture CaptureProgramBinaryOES(const Context *context,
+angle::CallCapture CaptureProgramBinaryOES(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLenum binaryFormat,
@@ -1543,34 +1540,33 @@
                                            GLint length);
 
 // GL_OES_mapbuffer
-angle::CallCapture CaptureGetBufferPointervOES(const Context *context,
+angle::CallCapture CaptureGetBufferPointervOES(const State &glState,
                                                bool isCallValid,
                                                BufferBinding targetPacked,
                                                GLenum pname,
                                                void **params);
-angle::CallCapture CaptureMapBufferOES(const Context *context,
+angle::CallCapture CaptureMapBufferOES(const State &glState,
                                        bool isCallValid,
                                        BufferBinding targetPacked,
                                        GLenum access,
                                        void *returnValue);
-angle::CallCapture CaptureUnmapBufferOES(const Context *context,
+angle::CallCapture CaptureUnmapBufferOES(const State &glState,
                                          bool isCallValid,
                                          BufferBinding targetPacked,
                                          GLboolean returnValue);
 
 // GL_OES_matrix_palette
-angle::CallCapture CaptureCurrentPaletteMatrixOES(const Context *context,
+angle::CallCapture CaptureCurrentPaletteMatrixOES(const State &glState,
                                                   bool isCallValid,
                                                   GLuint matrixpaletteindex);
-angle::CallCapture CaptureLoadPaletteFromModelViewMatrixOES(const Context *context,
-                                                            bool isCallValid);
-angle::CallCapture CaptureMatrixIndexPointerOES(const Context *context,
+angle::CallCapture CaptureLoadPaletteFromModelViewMatrixOES(const State &glState, bool isCallValid);
+angle::CallCapture CaptureMatrixIndexPointerOES(const State &glState,
                                                 bool isCallValid,
                                                 GLint size,
                                                 GLenum type,
                                                 GLsizei stride,
                                                 const void *pointer);
-angle::CallCapture CaptureWeightPointerOES(const Context *context,
+angle::CallCapture CaptureWeightPointerOES(const State &glState,
                                            bool isCallValid,
                                            GLint size,
                                            GLenum type,
@@ -1578,21 +1574,21 @@
                                            const void *pointer);
 
 // GL_OES_point_size_array
-angle::CallCapture CapturePointSizePointerOES(const Context *context,
+angle::CallCapture CapturePointSizePointerOES(const State &glState,
                                               bool isCallValid,
                                               VertexAttribType typePacked,
                                               GLsizei stride,
                                               const void *pointer);
 
 // GL_OES_query_matrix
-angle::CallCapture CaptureQueryMatrixxOES(const Context *context,
+angle::CallCapture CaptureQueryMatrixxOES(const State &glState,
                                           bool isCallValid,
                                           GLfixed *mantissa,
                                           GLint *exponent,
                                           GLbitfield returnValue);
 
 // GL_OES_texture_3D
-angle::CallCapture CaptureCompressedTexImage3DOES(const Context *context,
+angle::CallCapture CaptureCompressedTexImage3DOES(const State &glState,
                                                   bool isCallValid,
                                                   TextureTarget targetPacked,
                                                   GLint level,
@@ -1603,7 +1599,7 @@
                                                   GLint border,
                                                   GLsizei imageSize,
                                                   const void *data);
-angle::CallCapture CaptureCompressedTexSubImage3DOES(const Context *context,
+angle::CallCapture CaptureCompressedTexSubImage3DOES(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -1616,7 +1612,7 @@
                                                      GLenum format,
                                                      GLsizei imageSize,
                                                      const void *data);
-angle::CallCapture CaptureCopyTexSubImage3DOES(const Context *context,
+angle::CallCapture CaptureCopyTexSubImage3DOES(const State &glState,
                                                bool isCallValid,
                                                TextureTarget targetPacked,
                                                GLint level,
@@ -1627,7 +1623,7 @@
                                                GLint y,
                                                GLsizei width,
                                                GLsizei height);
-angle::CallCapture CaptureFramebufferTexture3DOES(const Context *context,
+angle::CallCapture CaptureFramebufferTexture3DOES(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum attachment,
@@ -1635,7 +1631,7 @@
                                                   TextureID texturePacked,
                                                   GLint level,
                                                   GLint zoffset);
-angle::CallCapture CaptureTexImage3DOES(const Context *context,
+angle::CallCapture CaptureTexImage3DOES(const State &glState,
                                         bool isCallValid,
                                         TextureTarget targetPacked,
                                         GLint level,
@@ -1647,7 +1643,7 @@
                                         GLenum format,
                                         GLenum type,
                                         const void *pixels);
-angle::CallCapture CaptureTexSubImage3DOES(const Context *context,
+angle::CallCapture CaptureTexSubImage3DOES(const State &glState,
                                            bool isCallValid,
                                            TextureTarget targetPacked,
                                            GLint level,
@@ -1662,96 +1658,96 @@
                                            const void *pixels);
 
 // GL_OES_texture_border_clamp
-angle::CallCapture CaptureGetSamplerParameterIivOES(const Context *context,
+angle::CallCapture CaptureGetSamplerParameterIivOES(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID samplerPacked,
                                                     GLenum pname,
                                                     GLint *params);
-angle::CallCapture CaptureGetSamplerParameterIuivOES(const Context *context,
+angle::CallCapture CaptureGetSamplerParameterIuivOES(const State &glState,
                                                      bool isCallValid,
                                                      SamplerID samplerPacked,
                                                      GLenum pname,
                                                      GLuint *params);
-angle::CallCapture CaptureGetTexParameterIivOES(const Context *context,
+angle::CallCapture CaptureGetTexParameterIivOES(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
                                                 GLint *params);
-angle::CallCapture CaptureGetTexParameterIuivOES(const Context *context,
+angle::CallCapture CaptureGetTexParameterIuivOES(const State &glState,
                                                  bool isCallValid,
                                                  TextureType targetPacked,
                                                  GLenum pname,
                                                  GLuint *params);
-angle::CallCapture CaptureSamplerParameterIivOES(const Context *context,
+angle::CallCapture CaptureSamplerParameterIivOES(const State &glState,
                                                  bool isCallValid,
                                                  SamplerID samplerPacked,
                                                  GLenum pname,
                                                  const GLint *param);
-angle::CallCapture CaptureSamplerParameterIuivOES(const Context *context,
+angle::CallCapture CaptureSamplerParameterIuivOES(const State &glState,
                                                   bool isCallValid,
                                                   SamplerID samplerPacked,
                                                   GLenum pname,
                                                   const GLuint *param);
-angle::CallCapture CaptureTexParameterIivOES(const Context *context,
+angle::CallCapture CaptureTexParameterIivOES(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLenum pname,
                                              const GLint *params);
-angle::CallCapture CaptureTexParameterIuivOES(const Context *context,
+angle::CallCapture CaptureTexParameterIuivOES(const State &glState,
                                               bool isCallValid,
                                               TextureType targetPacked,
                                               GLenum pname,
                                               const GLuint *params);
 
 // GL_OES_texture_cube_map
-angle::CallCapture CaptureGetTexGenfvOES(const Context *context,
+angle::CallCapture CaptureGetTexGenfvOES(const State &glState,
                                          bool isCallValid,
                                          GLenum coord,
                                          GLenum pname,
                                          GLfloat *params);
-angle::CallCapture CaptureGetTexGenivOES(const Context *context,
+angle::CallCapture CaptureGetTexGenivOES(const State &glState,
                                          bool isCallValid,
                                          GLenum coord,
                                          GLenum pname,
                                          GLint *params);
-angle::CallCapture CaptureGetTexGenxvOES(const Context *context,
+angle::CallCapture CaptureGetTexGenxvOES(const State &glState,
                                          bool isCallValid,
                                          GLenum coord,
                                          GLenum pname,
                                          GLfixed *params);
-angle::CallCapture CaptureTexGenfOES(const Context *context,
+angle::CallCapture CaptureTexGenfOES(const State &glState,
                                      bool isCallValid,
                                      GLenum coord,
                                      GLenum pname,
                                      GLfloat param);
-angle::CallCapture CaptureTexGenfvOES(const Context *context,
+angle::CallCapture CaptureTexGenfvOES(const State &glState,
                                       bool isCallValid,
                                       GLenum coord,
                                       GLenum pname,
                                       const GLfloat *params);
-angle::CallCapture CaptureTexGeniOES(const Context *context,
+angle::CallCapture CaptureTexGeniOES(const State &glState,
                                      bool isCallValid,
                                      GLenum coord,
                                      GLenum pname,
                                      GLint param);
-angle::CallCapture CaptureTexGenivOES(const Context *context,
+angle::CallCapture CaptureTexGenivOES(const State &glState,
                                       bool isCallValid,
                                       GLenum coord,
                                       GLenum pname,
                                       const GLint *params);
-angle::CallCapture CaptureTexGenxOES(const Context *context,
+angle::CallCapture CaptureTexGenxOES(const State &glState,
                                      bool isCallValid,
                                      GLenum coord,
                                      GLenum pname,
                                      GLfixed param);
-angle::CallCapture CaptureTexGenxvOES(const Context *context,
+angle::CallCapture CaptureTexGenxvOES(const State &glState,
                                       bool isCallValid,
                                       GLenum coord,
                                       GLenum pname,
                                       const GLfixed *params);
 
 // GL_OES_texture_storage_multisample_2d_array
-angle::CallCapture CaptureTexStorage3DMultisampleOES(const Context *context,
+angle::CallCapture CaptureTexStorage3DMultisampleOES(const State &glState,
                                                      bool isCallValid,
                                                      TextureType targetPacked,
                                                      GLsizei samples,
@@ -1762,24 +1758,24 @@
                                                      GLboolean fixedsamplelocations);
 
 // GL_OES_vertex_array_object
-angle::CallCapture CaptureBindVertexArrayOES(const Context *context,
+angle::CallCapture CaptureBindVertexArrayOES(const State &glState,
                                              bool isCallValid,
                                              VertexArrayID arrayPacked);
-angle::CallCapture CaptureDeleteVertexArraysOES(const Context *context,
+angle::CallCapture CaptureDeleteVertexArraysOES(const State &glState,
                                                 bool isCallValid,
                                                 GLsizei n,
                                                 const VertexArrayID *arraysPacked);
-angle::CallCapture CaptureGenVertexArraysOES(const Context *context,
+angle::CallCapture CaptureGenVertexArraysOES(const State &glState,
                                              bool isCallValid,
                                              GLsizei n,
                                              VertexArrayID *arraysPacked);
-angle::CallCapture CaptureIsVertexArrayOES(const Context *context,
+angle::CallCapture CaptureIsVertexArrayOES(const State &glState,
                                            bool isCallValid,
                                            VertexArrayID arrayPacked,
                                            GLboolean returnValue);
 
 // GL_OVR_multiview
-angle::CallCapture CaptureFramebufferTextureMultiviewOVR(const Context *context,
+angle::CallCapture CaptureFramebufferTextureMultiviewOVR(const State &glState,
                                                          bool isCallValid,
                                                          GLenum target,
                                                          GLenum attachment,
@@ -1793,7 +1789,7 @@
 // Parameter Captures
 
 void CaptureDrawElementsInstancedBaseVertexBaseInstanceANGLE_indices(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     GLsizei count,
@@ -1803,7 +1799,7 @@
     GLint baseVertex,
     GLuint baseInstance,
     angle::ParamCapture *paramCapture);
-void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_firsts(const Context *context,
+void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_firsts(const State &glState,
                                                              bool isCallValid,
                                                              PrimitiveMode modePacked,
                                                              const GLint *firsts,
@@ -1812,7 +1808,7 @@
                                                              const GLuint *baseInstances,
                                                              GLsizei drawcount,
                                                              angle::ParamCapture *paramCapture);
-void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_counts(const Context *context,
+void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_counts(const State &glState,
                                                              bool isCallValid,
                                                              PrimitiveMode modePacked,
                                                              const GLint *firsts,
@@ -1822,7 +1818,7 @@
                                                              GLsizei drawcount,
                                                              angle::ParamCapture *paramCapture);
 void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_instanceCounts(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLint *firsts,
@@ -1832,7 +1828,7 @@
     GLsizei drawcount,
     angle::ParamCapture *paramCapture);
 void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_baseInstances(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLint *firsts,
@@ -1842,7 +1838,7 @@
     GLsizei drawcount,
     angle::ParamCapture *paramCapture);
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_counts(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -1854,7 +1850,7 @@
     GLsizei drawcount,
     angle::ParamCapture *paramCapture);
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_indices(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -1866,7 +1862,7 @@
     GLsizei drawcount,
     angle::ParamCapture *paramCapture);
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_instanceCounts(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -1878,7 +1874,7 @@
     GLsizei drawcount,
     angle::ParamCapture *paramCapture);
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_baseVertices(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -1890,7 +1886,7 @@
     GLsizei drawcount,
     angle::ParamCapture *paramCapture);
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_baseInstances(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -1901,7 +1897,7 @@
     const GLuint *baseInstances,
     GLsizei drawcount,
     angle::ParamCapture *paramCapture);
-void CaptureGetTexImageANGLE_pixels(const Context *context,
+void CaptureGetTexImageANGLE_pixels(const State &glState,
                                     bool isCallValid,
                                     TextureTarget targetPacked,
                                     GLint level,
@@ -1909,14 +1905,14 @@
                                     GLenum type,
                                     void *pixels,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetRenderbufferImageANGLE_pixels(const Context *context,
+void CaptureGetRenderbufferImageANGLE_pixels(const State &glState,
                                              bool isCallValid,
                                              GLenum target,
                                              GLenum format,
                                              GLenum type,
                                              void *pixels,
                                              angle::ParamCapture *paramCapture);
-void CaptureDrawElementsInstancedANGLE_indices(const Context *context,
+void CaptureDrawElementsInstancedANGLE_indices(const State &glState,
                                                bool isCallValid,
                                                PrimitiveMode modePacked,
                                                GLsizei count,
@@ -1924,21 +1920,21 @@
                                                const void *indices,
                                                GLsizei primcount,
                                                angle::ParamCapture *paramCapture);
-void CaptureMultiDrawArraysANGLE_firsts(const Context *context,
+void CaptureMultiDrawArraysANGLE_firsts(const State &glState,
                                         bool isCallValid,
                                         PrimitiveMode modePacked,
                                         const GLint *firsts,
                                         const GLsizei *counts,
                                         GLsizei drawcount,
                                         angle::ParamCapture *paramCapture);
-void CaptureMultiDrawArraysANGLE_counts(const Context *context,
+void CaptureMultiDrawArraysANGLE_counts(const State &glState,
                                         bool isCallValid,
                                         PrimitiveMode modePacked,
                                         const GLint *firsts,
                                         const GLsizei *counts,
                                         GLsizei drawcount,
                                         angle::ParamCapture *paramCapture);
-void CaptureMultiDrawArraysInstancedANGLE_firsts(const Context *context,
+void CaptureMultiDrawArraysInstancedANGLE_firsts(const State &glState,
                                                  bool isCallValid,
                                                  PrimitiveMode modePacked,
                                                  const GLint *firsts,
@@ -1946,7 +1942,7 @@
                                                  const GLsizei *instanceCounts,
                                                  GLsizei drawcount,
                                                  angle::ParamCapture *paramCapture);
-void CaptureMultiDrawArraysInstancedANGLE_counts(const Context *context,
+void CaptureMultiDrawArraysInstancedANGLE_counts(const State &glState,
                                                  bool isCallValid,
                                                  PrimitiveMode modePacked,
                                                  const GLint *firsts,
@@ -1954,7 +1950,7 @@
                                                  const GLsizei *instanceCounts,
                                                  GLsizei drawcount,
                                                  angle::ParamCapture *paramCapture);
-void CaptureMultiDrawArraysInstancedANGLE_instanceCounts(const Context *context,
+void CaptureMultiDrawArraysInstancedANGLE_instanceCounts(const State &glState,
                                                          bool isCallValid,
                                                          PrimitiveMode modePacked,
                                                          const GLint *firsts,
@@ -1962,7 +1958,7 @@
                                                          const GLsizei *instanceCounts,
                                                          GLsizei drawcount,
                                                          angle::ParamCapture *paramCapture);
-void CaptureMultiDrawElementsANGLE_counts(const Context *context,
+void CaptureMultiDrawElementsANGLE_counts(const State &glState,
                                           bool isCallValid,
                                           PrimitiveMode modePacked,
                                           const GLsizei *counts,
@@ -1970,7 +1966,7 @@
                                           const GLvoid *const *indices,
                                           GLsizei drawcount,
                                           angle::ParamCapture *paramCapture);
-void CaptureMultiDrawElementsANGLE_indices(const Context *context,
+void CaptureMultiDrawElementsANGLE_indices(const State &glState,
                                            bool isCallValid,
                                            PrimitiveMode modePacked,
                                            const GLsizei *counts,
@@ -1978,7 +1974,7 @@
                                            const GLvoid *const *indices,
                                            GLsizei drawcount,
                                            angle::ParamCapture *paramCapture);
-void CaptureMultiDrawElementsInstancedANGLE_counts(const Context *context,
+void CaptureMultiDrawElementsInstancedANGLE_counts(const State &glState,
                                                    bool isCallValid,
                                                    PrimitiveMode modePacked,
                                                    const GLsizei *counts,
@@ -1987,7 +1983,7 @@
                                                    const GLsizei *instanceCounts,
                                                    GLsizei drawcount,
                                                    angle::ParamCapture *paramCapture);
-void CaptureMultiDrawElementsInstancedANGLE_indices(const Context *context,
+void CaptureMultiDrawElementsInstancedANGLE_indices(const State &glState,
                                                     bool isCallValid,
                                                     PrimitiveMode modePacked,
                                                     const GLsizei *counts,
@@ -1996,7 +1992,7 @@
                                                     const GLsizei *instanceCounts,
                                                     GLsizei drawcount,
                                                     angle::ParamCapture *paramCapture);
-void CaptureMultiDrawElementsInstancedANGLE_instanceCounts(const Context *context,
+void CaptureMultiDrawElementsInstancedANGLE_instanceCounts(const State &glState,
                                                            bool isCallValid,
                                                            PrimitiveMode modePacked,
                                                            const GLsizei *counts,
@@ -2005,29 +2001,29 @@
                                                            const GLsizei *instanceCounts,
                                                            GLsizei drawcount,
                                                            angle::ParamCapture *paramCapture);
-void CaptureRequestExtensionANGLE_name(const Context *context,
+void CaptureRequestExtensionANGLE_name(const State &glState,
                                        bool isCallValid,
                                        const GLchar *name,
                                        angle::ParamCapture *paramCapture);
-void CaptureDisableExtensionANGLE_name(const Context *context,
+void CaptureDisableExtensionANGLE_name(const State &glState,
                                        bool isCallValid,
                                        const GLchar *name,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetBooleanvRobustANGLE_length(const Context *context,
+void CaptureGetBooleanvRobustANGLE_length(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
                                           GLsizei *length,
                                           GLboolean *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetBooleanvRobustANGLE_params(const Context *context,
+void CaptureGetBooleanvRobustANGLE_params(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
                                           GLsizei *length,
                                           GLboolean *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetBufferParameterivRobustANGLE_length(const Context *context,
+void CaptureGetBufferParameterivRobustANGLE_length(const State &glState,
                                                    bool isCallValid,
                                                    BufferBinding targetPacked,
                                                    GLenum pname,
@@ -2035,7 +2031,7 @@
                                                    GLsizei *length,
                                                    GLint *params,
                                                    angle::ParamCapture *paramCapture);
-void CaptureGetBufferParameterivRobustANGLE_params(const Context *context,
+void CaptureGetBufferParameterivRobustANGLE_params(const State &glState,
                                                    bool isCallValid,
                                                    BufferBinding targetPacked,
                                                    GLenum pname,
@@ -2043,14 +2039,14 @@
                                                    GLsizei *length,
                                                    GLint *params,
                                                    angle::ParamCapture *paramCapture);
-void CaptureGetFloatvRobustANGLE_length(const Context *context,
+void CaptureGetFloatvRobustANGLE_length(const State &glState,
                                         bool isCallValid,
                                         GLenum pname,
                                         GLsizei bufSize,
                                         GLsizei *length,
                                         GLfloat *params,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetFloatvRobustANGLE_params(const Context *context,
+void CaptureGetFloatvRobustANGLE_params(const State &glState,
                                         bool isCallValid,
                                         GLenum pname,
                                         GLsizei bufSize,
@@ -2058,7 +2054,7 @@
                                         GLfloat *params,
                                         angle::ParamCapture *paramCapture);
 void CaptureGetFramebufferAttachmentParameterivRobustANGLE_length(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     GLenum target,
     GLenum attachment,
@@ -2068,7 +2064,7 @@
     GLint *params,
     angle::ParamCapture *paramCapture);
 void CaptureGetFramebufferAttachmentParameterivRobustANGLE_params(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     GLenum target,
     GLenum attachment,
@@ -2077,21 +2073,21 @@
     GLsizei *length,
     GLint *params,
     angle::ParamCapture *paramCapture);
-void CaptureGetIntegervRobustANGLE_length(const Context *context,
+void CaptureGetIntegervRobustANGLE_length(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
                                           GLsizei *length,
                                           GLint *data,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetIntegervRobustANGLE_data(const Context *context,
+void CaptureGetIntegervRobustANGLE_data(const State &glState,
                                         bool isCallValid,
                                         GLenum pname,
                                         GLsizei bufSize,
                                         GLsizei *length,
                                         GLint *data,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetProgramivRobustANGLE_length(const Context *context,
+void CaptureGetProgramivRobustANGLE_length(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLenum pname,
@@ -2099,7 +2095,7 @@
                                            GLsizei *length,
                                            GLint *params,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetProgramivRobustANGLE_params(const Context *context,
+void CaptureGetProgramivRobustANGLE_params(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLenum pname,
@@ -2107,7 +2103,7 @@
                                            GLsizei *length,
                                            GLint *params,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetRenderbufferParameterivRobustANGLE_length(const Context *context,
+void CaptureGetRenderbufferParameterivRobustANGLE_length(const State &glState,
                                                          bool isCallValid,
                                                          GLenum target,
                                                          GLenum pname,
@@ -2115,7 +2111,7 @@
                                                          GLsizei *length,
                                                          GLint *params,
                                                          angle::ParamCapture *paramCapture);
-void CaptureGetRenderbufferParameterivRobustANGLE_params(const Context *context,
+void CaptureGetRenderbufferParameterivRobustANGLE_params(const State &glState,
                                                          bool isCallValid,
                                                          GLenum target,
                                                          GLenum pname,
@@ -2123,7 +2119,7 @@
                                                          GLsizei *length,
                                                          GLint *params,
                                                          angle::ParamCapture *paramCapture);
-void CaptureGetShaderivRobustANGLE_length(const Context *context,
+void CaptureGetShaderivRobustANGLE_length(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID shaderPacked,
                                           GLenum pname,
@@ -2131,7 +2127,7 @@
                                           GLsizei *length,
                                           GLint *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetShaderivRobustANGLE_params(const Context *context,
+void CaptureGetShaderivRobustANGLE_params(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID shaderPacked,
                                           GLenum pname,
@@ -2139,7 +2135,7 @@
                                           GLsizei *length,
                                           GLint *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterfvRobustANGLE_length(const Context *context,
+void CaptureGetTexParameterfvRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -2147,7 +2143,7 @@
                                                 GLsizei *length,
                                                 GLfloat *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterfvRobustANGLE_params(const Context *context,
+void CaptureGetTexParameterfvRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -2155,7 +2151,7 @@
                                                 GLsizei *length,
                                                 GLfloat *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterivRobustANGLE_length(const Context *context,
+void CaptureGetTexParameterivRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -2163,7 +2159,7 @@
                                                 GLsizei *length,
                                                 GLint *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterivRobustANGLE_params(const Context *context,
+void CaptureGetTexParameterivRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -2171,7 +2167,7 @@
                                                 GLsizei *length,
                                                 GLint *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetUniformfvRobustANGLE_length(const Context *context,
+void CaptureGetUniformfvRobustANGLE_length(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -2179,7 +2175,7 @@
                                            GLsizei *length,
                                            GLfloat *params,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetUniformfvRobustANGLE_params(const Context *context,
+void CaptureGetUniformfvRobustANGLE_params(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -2187,7 +2183,7 @@
                                            GLsizei *length,
                                            GLfloat *params,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetUniformivRobustANGLE_length(const Context *context,
+void CaptureGetUniformivRobustANGLE_length(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -2195,7 +2191,7 @@
                                            GLsizei *length,
                                            GLint *params,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetUniformivRobustANGLE_params(const Context *context,
+void CaptureGetUniformivRobustANGLE_params(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID programPacked,
                                            GLint location,
@@ -2203,7 +2199,7 @@
                                            GLsizei *length,
                                            GLint *params,
                                            angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribfvRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribfvRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -2211,7 +2207,7 @@
                                                 GLsizei *length,
                                                 GLfloat *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribfvRobustANGLE_params(const Context *context,
+void CaptureGetVertexAttribfvRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -2219,7 +2215,7 @@
                                                 GLsizei *length,
                                                 GLfloat *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribivRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribivRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -2227,7 +2223,7 @@
                                                 GLsizei *length,
                                                 GLint *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribivRobustANGLE_params(const Context *context,
+void CaptureGetVertexAttribivRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -2235,7 +2231,7 @@
                                                 GLsizei *length,
                                                 GLint *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribPointervRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribPointervRobustANGLE_length(const State &glState,
                                                       bool isCallValid,
                                                       GLuint index,
                                                       GLenum pname,
@@ -2243,7 +2239,7 @@
                                                       GLsizei *length,
                                                       void **pointer,
                                                       angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribPointervRobustANGLE_pointer(const Context *context,
+void CaptureGetVertexAttribPointervRobustANGLE_pointer(const State &glState,
                                                        bool isCallValid,
                                                        GLuint index,
                                                        GLenum pname,
@@ -2251,7 +2247,7 @@
                                                        GLsizei *length,
                                                        void **pointer,
                                                        angle::ParamCapture *paramCapture);
-void CaptureReadPixelsRobustANGLE_length(const Context *context,
+void CaptureReadPixelsRobustANGLE_length(const State &glState,
                                          bool isCallValid,
                                          GLint x,
                                          GLint y,
@@ -2265,7 +2261,7 @@
                                          GLsizei *rows,
                                          void *pixels,
                                          angle::ParamCapture *paramCapture);
-void CaptureReadPixelsRobustANGLE_columns(const Context *context,
+void CaptureReadPixelsRobustANGLE_columns(const State &glState,
                                           bool isCallValid,
                                           GLint x,
                                           GLint y,
@@ -2279,7 +2275,7 @@
                                           GLsizei *rows,
                                           void *pixels,
                                           angle::ParamCapture *paramCapture);
-void CaptureReadPixelsRobustANGLE_rows(const Context *context,
+void CaptureReadPixelsRobustANGLE_rows(const State &glState,
                                        bool isCallValid,
                                        GLint x,
                                        GLint y,
@@ -2293,7 +2289,7 @@
                                        GLsizei *rows,
                                        void *pixels,
                                        angle::ParamCapture *paramCapture);
-void CaptureReadPixelsRobustANGLE_pixels(const Context *context,
+void CaptureReadPixelsRobustANGLE_pixels(const State &glState,
                                          bool isCallValid,
                                          GLint x,
                                          GLint y,
@@ -2307,7 +2303,7 @@
                                          GLsizei *rows,
                                          void *pixels,
                                          angle::ParamCapture *paramCapture);
-void CaptureTexImage2DRobustANGLE_pixels(const Context *context,
+void CaptureTexImage2DRobustANGLE_pixels(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -2320,21 +2316,21 @@
                                          GLsizei bufSize,
                                          const void *pixels,
                                          angle::ParamCapture *paramCapture);
-void CaptureTexParameterfvRobustANGLE_params(const Context *context,
+void CaptureTexParameterfvRobustANGLE_params(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLenum pname,
                                              GLsizei bufSize,
                                              const GLfloat *params,
                                              angle::ParamCapture *paramCapture);
-void CaptureTexParameterivRobustANGLE_params(const Context *context,
+void CaptureTexParameterivRobustANGLE_params(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLenum pname,
                                              GLsizei bufSize,
                                              const GLint *params,
                                              angle::ParamCapture *paramCapture);
-void CaptureTexSubImage2DRobustANGLE_pixels(const Context *context,
+void CaptureTexSubImage2DRobustANGLE_pixels(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -2347,7 +2343,7 @@
                                             GLsizei bufSize,
                                             const void *pixels,
                                             angle::ParamCapture *paramCapture);
-void CaptureTexImage3DRobustANGLE_pixels(const Context *context,
+void CaptureTexImage3DRobustANGLE_pixels(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -2361,7 +2357,7 @@
                                          GLsizei bufSize,
                                          const void *pixels,
                                          angle::ParamCapture *paramCapture);
-void CaptureTexSubImage3DRobustANGLE_pixels(const Context *context,
+void CaptureTexSubImage3DRobustANGLE_pixels(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -2376,7 +2372,7 @@
                                             GLsizei bufSize,
                                             const void *pixels,
                                             angle::ParamCapture *paramCapture);
-void CaptureCompressedTexImage2DRobustANGLE_data(const Context *context,
+void CaptureCompressedTexImage2DRobustANGLE_data(const State &glState,
                                                  bool isCallValid,
                                                  TextureTarget targetPacked,
                                                  GLint level,
@@ -2388,7 +2384,7 @@
                                                  GLsizei dataSize,
                                                  const GLvoid *data,
                                                  angle::ParamCapture *paramCapture);
-void CaptureCompressedTexSubImage2DRobustANGLE_data(const Context *context,
+void CaptureCompressedTexSubImage2DRobustANGLE_data(const State &glState,
                                                     bool isCallValid,
                                                     TextureTarget targetPacked,
                                                     GLint level,
@@ -2401,7 +2397,7 @@
                                                     GLsizei dataSize,
                                                     const GLvoid *data,
                                                     angle::ParamCapture *paramCapture);
-void CaptureCompressedTexImage3DRobustANGLE_data(const Context *context,
+void CaptureCompressedTexImage3DRobustANGLE_data(const State &glState,
                                                  bool isCallValid,
                                                  TextureTarget targetPacked,
                                                  GLint level,
@@ -2414,7 +2410,7 @@
                                                  GLsizei dataSize,
                                                  const GLvoid *data,
                                                  angle::ParamCapture *paramCapture);
-void CaptureCompressedTexSubImage3DRobustANGLE_data(const Context *context,
+void CaptureCompressedTexSubImage3DRobustANGLE_data(const State &glState,
                                                     bool isCallValid,
                                                     TextureTarget targetPacked,
                                                     GLint level,
@@ -2429,7 +2425,7 @@
                                                     GLsizei dataSize,
                                                     const GLvoid *data,
                                                     angle::ParamCapture *paramCapture);
-void CaptureGetQueryivRobustANGLE_length(const Context *context,
+void CaptureGetQueryivRobustANGLE_length(const State &glState,
                                          bool isCallValid,
                                          QueryType targetPacked,
                                          GLenum pname,
@@ -2437,7 +2433,7 @@
                                          GLsizei *length,
                                          GLint *params,
                                          angle::ParamCapture *paramCapture);
-void CaptureGetQueryivRobustANGLE_params(const Context *context,
+void CaptureGetQueryivRobustANGLE_params(const State &glState,
                                          bool isCallValid,
                                          QueryType targetPacked,
                                          GLenum pname,
@@ -2445,7 +2441,7 @@
                                          GLsizei *length,
                                          GLint *params,
                                          angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectuivRobustANGLE_length(const Context *context,
+void CaptureGetQueryObjectuivRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 QueryID idPacked,
                                                 GLenum pname,
@@ -2453,7 +2449,7 @@
                                                 GLsizei *length,
                                                 GLuint *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectuivRobustANGLE_params(const Context *context,
+void CaptureGetQueryObjectuivRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 QueryID idPacked,
                                                 GLenum pname,
@@ -2461,7 +2457,7 @@
                                                 GLsizei *length,
                                                 GLuint *params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetBufferPointervRobustANGLE_length(const Context *context,
+void CaptureGetBufferPointervRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 BufferBinding targetPacked,
                                                 GLenum pname,
@@ -2469,7 +2465,7 @@
                                                 GLsizei *length,
                                                 void **params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetBufferPointervRobustANGLE_params(const Context *context,
+void CaptureGetBufferPointervRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 BufferBinding targetPacked,
                                                 GLenum pname,
@@ -2477,7 +2473,7 @@
                                                 GLsizei *length,
                                                 void **params,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetIntegeri_vRobustANGLE_length(const Context *context,
+void CaptureGetIntegeri_vRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             GLenum target,
                                             GLuint index,
@@ -2485,7 +2481,7 @@
                                             GLsizei *length,
                                             GLint *data,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetIntegeri_vRobustANGLE_data(const Context *context,
+void CaptureGetIntegeri_vRobustANGLE_data(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           GLuint index,
@@ -2493,7 +2489,7 @@
                                           GLsizei *length,
                                           GLint *data,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetInternalformativRobustANGLE_length(const Context *context,
+void CaptureGetInternalformativRobustANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum internalformat,
@@ -2502,7 +2498,7 @@
                                                   GLsizei *length,
                                                   GLint *params,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetInternalformativRobustANGLE_params(const Context *context,
+void CaptureGetInternalformativRobustANGLE_params(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum internalformat,
@@ -2511,7 +2507,7 @@
                                                   GLsizei *length,
                                                   GLint *params,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribIivRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribIivRobustANGLE_length(const State &glState,
                                                  bool isCallValid,
                                                  GLuint index,
                                                  GLenum pname,
@@ -2519,7 +2515,7 @@
                                                  GLsizei *length,
                                                  GLint *params,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribIivRobustANGLE_params(const Context *context,
+void CaptureGetVertexAttribIivRobustANGLE_params(const State &glState,
                                                  bool isCallValid,
                                                  GLuint index,
                                                  GLenum pname,
@@ -2527,7 +2523,7 @@
                                                  GLsizei *length,
                                                  GLint *params,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribIuivRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribIuivRobustANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   GLuint index,
                                                   GLenum pname,
@@ -2535,7 +2531,7 @@
                                                   GLsizei *length,
                                                   GLuint *params,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetVertexAttribIuivRobustANGLE_params(const Context *context,
+void CaptureGetVertexAttribIuivRobustANGLE_params(const State &glState,
                                                   bool isCallValid,
                                                   GLuint index,
                                                   GLenum pname,
@@ -2543,7 +2539,7 @@
                                                   GLsizei *length,
                                                   GLuint *params,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetUniformuivRobustANGLE_length(const Context *context,
+void CaptureGetUniformuivRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -2551,7 +2547,7 @@
                                             GLsizei *length,
                                             GLuint *params,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetUniformuivRobustANGLE_params(const Context *context,
+void CaptureGetUniformuivRobustANGLE_params(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -2559,7 +2555,7 @@
                                             GLsizei *length,
                                             GLuint *params,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniformBlockivRobustANGLE_length(const Context *context,
+void CaptureGetActiveUniformBlockivRobustANGLE_length(const State &glState,
                                                       bool isCallValid,
                                                       ShaderProgramID programPacked,
                                                       GLuint uniformBlockIndex,
@@ -2568,7 +2564,7 @@
                                                       GLsizei *length,
                                                       GLint *params,
                                                       angle::ParamCapture *paramCapture);
-void CaptureGetActiveUniformBlockivRobustANGLE_params(const Context *context,
+void CaptureGetActiveUniformBlockivRobustANGLE_params(const State &glState,
                                                       bool isCallValid,
                                                       ShaderProgramID programPacked,
                                                       GLuint uniformBlockIndex,
@@ -2577,21 +2573,21 @@
                                                       GLsizei *length,
                                                       GLint *params,
                                                       angle::ParamCapture *paramCapture);
-void CaptureGetInteger64vRobustANGLE_length(const Context *context,
+void CaptureGetInteger64vRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             GLenum pname,
                                             GLsizei bufSize,
                                             GLsizei *length,
                                             GLint64 *data,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetInteger64vRobustANGLE_data(const Context *context,
+void CaptureGetInteger64vRobustANGLE_data(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
                                           GLsizei *length,
                                           GLint64 *data,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetInteger64i_vRobustANGLE_length(const Context *context,
+void CaptureGetInteger64i_vRobustANGLE_length(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLuint index,
@@ -2599,7 +2595,7 @@
                                               GLsizei *length,
                                               GLint64 *data,
                                               angle::ParamCapture *paramCapture);
-void CaptureGetInteger64i_vRobustANGLE_data(const Context *context,
+void CaptureGetInteger64i_vRobustANGLE_data(const State &glState,
                                             bool isCallValid,
                                             GLenum target,
                                             GLuint index,
@@ -2607,7 +2603,7 @@
                                             GLsizei *length,
                                             GLint64 *data,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetBufferParameteri64vRobustANGLE_length(const Context *context,
+void CaptureGetBufferParameteri64vRobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      BufferBinding targetPacked,
                                                      GLenum pname,
@@ -2615,7 +2611,7 @@
                                                      GLsizei *length,
                                                      GLint64 *params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureGetBufferParameteri64vRobustANGLE_params(const Context *context,
+void CaptureGetBufferParameteri64vRobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      BufferBinding targetPacked,
                                                      GLenum pname,
@@ -2623,21 +2619,21 @@
                                                      GLsizei *length,
                                                      GLint64 *params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureSamplerParameterivRobustANGLE_param(const Context *context,
+void CaptureSamplerParameterivRobustANGLE_param(const State &glState,
                                                 bool isCallValid,
                                                 SamplerID samplerPacked,
                                                 GLuint pname,
                                                 GLsizei bufSize,
                                                 const GLint *param,
                                                 angle::ParamCapture *paramCapture);
-void CaptureSamplerParameterfvRobustANGLE_param(const Context *context,
+void CaptureSamplerParameterfvRobustANGLE_param(const State &glState,
                                                 bool isCallValid,
                                                 SamplerID samplerPacked,
                                                 GLenum pname,
                                                 GLsizei bufSize,
                                                 const GLfloat *param,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterivRobustANGLE_length(const Context *context,
+void CaptureGetSamplerParameterivRobustANGLE_length(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID samplerPacked,
                                                     GLenum pname,
@@ -2645,7 +2641,7 @@
                                                     GLsizei *length,
                                                     GLint *params,
                                                     angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterivRobustANGLE_params(const Context *context,
+void CaptureGetSamplerParameterivRobustANGLE_params(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID samplerPacked,
                                                     GLenum pname,
@@ -2653,7 +2649,7 @@
                                                     GLsizei *length,
                                                     GLint *params,
                                                     angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterfvRobustANGLE_length(const Context *context,
+void CaptureGetSamplerParameterfvRobustANGLE_length(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID samplerPacked,
                                                     GLenum pname,
@@ -2661,7 +2657,7 @@
                                                     GLsizei *length,
                                                     GLfloat *params,
                                                     angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterfvRobustANGLE_params(const Context *context,
+void CaptureGetSamplerParameterfvRobustANGLE_params(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID samplerPacked,
                                                     GLenum pname,
@@ -2669,7 +2665,7 @@
                                                     GLsizei *length,
                                                     GLfloat *params,
                                                     angle::ParamCapture *paramCapture);
-void CaptureGetFramebufferParameterivRobustANGLE_length(const Context *context,
+void CaptureGetFramebufferParameterivRobustANGLE_length(const State &glState,
                                                         bool isCallValid,
                                                         GLenum target,
                                                         GLenum pname,
@@ -2677,7 +2673,7 @@
                                                         GLsizei *length,
                                                         GLint *params,
                                                         angle::ParamCapture *paramCapture);
-void CaptureGetFramebufferParameterivRobustANGLE_params(const Context *context,
+void CaptureGetFramebufferParameterivRobustANGLE_params(const State &glState,
                                                         bool isCallValid,
                                                         GLenum target,
                                                         GLenum pname,
@@ -2685,7 +2681,7 @@
                                                         GLsizei *length,
                                                         GLint *params,
                                                         angle::ParamCapture *paramCapture);
-void CaptureGetProgramInterfaceivRobustANGLE_length(const Context *context,
+void CaptureGetProgramInterfaceivRobustANGLE_length(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLenum programInterface,
@@ -2694,7 +2690,7 @@
                                                     GLsizei *length,
                                                     GLint *params,
                                                     angle::ParamCapture *paramCapture);
-void CaptureGetProgramInterfaceivRobustANGLE_params(const Context *context,
+void CaptureGetProgramInterfaceivRobustANGLE_params(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLenum programInterface,
@@ -2703,7 +2699,7 @@
                                                     GLsizei *length,
                                                     GLint *params,
                                                     angle::ParamCapture *paramCapture);
-void CaptureGetBooleani_vRobustANGLE_length(const Context *context,
+void CaptureGetBooleani_vRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             GLenum target,
                                             GLuint index,
@@ -2711,7 +2707,7 @@
                                             GLsizei *length,
                                             GLboolean *data,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetBooleani_vRobustANGLE_data(const Context *context,
+void CaptureGetBooleani_vRobustANGLE_data(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           GLuint index,
@@ -2719,7 +2715,7 @@
                                           GLsizei *length,
                                           GLboolean *data,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetMultisamplefvRobustANGLE_length(const Context *context,
+void CaptureGetMultisamplefvRobustANGLE_length(const State &glState,
                                                bool isCallValid,
                                                GLenum pname,
                                                GLuint index,
@@ -2727,7 +2723,7 @@
                                                GLsizei *length,
                                                GLfloat *val,
                                                angle::ParamCapture *paramCapture);
-void CaptureGetMultisamplefvRobustANGLE_val(const Context *context,
+void CaptureGetMultisamplefvRobustANGLE_val(const State &glState,
                                             bool isCallValid,
                                             GLenum pname,
                                             GLuint index,
@@ -2735,7 +2731,7 @@
                                             GLsizei *length,
                                             GLfloat *val,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetTexLevelParameterivRobustANGLE_length(const Context *context,
+void CaptureGetTexLevelParameterivRobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -2744,7 +2740,7 @@
                                                      GLsizei *length,
                                                      GLint *params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureGetTexLevelParameterivRobustANGLE_params(const Context *context,
+void CaptureGetTexLevelParameterivRobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -2753,7 +2749,7 @@
                                                      GLsizei *length,
                                                      GLint *params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureGetTexLevelParameterfvRobustANGLE_length(const Context *context,
+void CaptureGetTexLevelParameterfvRobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -2762,7 +2758,7 @@
                                                      GLsizei *length,
                                                      GLfloat *params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureGetTexLevelParameterfvRobustANGLE_params(const Context *context,
+void CaptureGetTexLevelParameterfvRobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -2771,21 +2767,21 @@
                                                      GLsizei *length,
                                                      GLfloat *params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureGetPointervRobustANGLERobustANGLE_length(const Context *context,
+void CaptureGetPointervRobustANGLERobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      GLenum pname,
                                                      GLsizei bufSize,
                                                      GLsizei *length,
                                                      void **params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureGetPointervRobustANGLERobustANGLE_params(const Context *context,
+void CaptureGetPointervRobustANGLERobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      GLenum pname,
                                                      GLsizei bufSize,
                                                      GLsizei *length,
                                                      void **params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureReadnPixelsRobustANGLE_length(const Context *context,
+void CaptureReadnPixelsRobustANGLE_length(const State &glState,
                                           bool isCallValid,
                                           GLint x,
                                           GLint y,
@@ -2799,7 +2795,7 @@
                                           GLsizei *rows,
                                           void *data,
                                           angle::ParamCapture *paramCapture);
-void CaptureReadnPixelsRobustANGLE_columns(const Context *context,
+void CaptureReadnPixelsRobustANGLE_columns(const State &glState,
                                            bool isCallValid,
                                            GLint x,
                                            GLint y,
@@ -2813,7 +2809,7 @@
                                            GLsizei *rows,
                                            void *data,
                                            angle::ParamCapture *paramCapture);
-void CaptureReadnPixelsRobustANGLE_rows(const Context *context,
+void CaptureReadnPixelsRobustANGLE_rows(const State &glState,
                                         bool isCallValid,
                                         GLint x,
                                         GLint y,
@@ -2827,7 +2823,7 @@
                                         GLsizei *rows,
                                         void *data,
                                         angle::ParamCapture *paramCapture);
-void CaptureReadnPixelsRobustANGLE_data(const Context *context,
+void CaptureReadnPixelsRobustANGLE_data(const State &glState,
                                         bool isCallValid,
                                         GLint x,
                                         GLint y,
@@ -2841,7 +2837,7 @@
                                         GLsizei *rows,
                                         void *data,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetnUniformfvRobustANGLE_length(const Context *context,
+void CaptureGetnUniformfvRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -2849,7 +2845,7 @@
                                             GLsizei *length,
                                             GLfloat *params,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetnUniformfvRobustANGLE_params(const Context *context,
+void CaptureGetnUniformfvRobustANGLE_params(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -2857,7 +2853,7 @@
                                             GLsizei *length,
                                             GLfloat *params,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetnUniformivRobustANGLE_length(const Context *context,
+void CaptureGetnUniformivRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -2865,7 +2861,7 @@
                                             GLsizei *length,
                                             GLint *params,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetnUniformivRobustANGLE_params(const Context *context,
+void CaptureGetnUniformivRobustANGLE_params(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID programPacked,
                                             GLint location,
@@ -2873,7 +2869,7 @@
                                             GLsizei *length,
                                             GLint *params,
                                             angle::ParamCapture *paramCapture);
-void CaptureGetnUniformuivRobustANGLE_length(const Context *context,
+void CaptureGetnUniformuivRobustANGLE_length(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
@@ -2881,7 +2877,7 @@
                                              GLsizei *length,
                                              GLuint *params,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetnUniformuivRobustANGLE_params(const Context *context,
+void CaptureGetnUniformuivRobustANGLE_params(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
@@ -2889,21 +2885,21 @@
                                              GLsizei *length,
                                              GLuint *params,
                                              angle::ParamCapture *paramCapture);
-void CaptureTexParameterIivRobustANGLE_params(const Context *context,
+void CaptureTexParameterIivRobustANGLE_params(const State &glState,
                                               bool isCallValid,
                                               TextureType targetPacked,
                                               GLenum pname,
                                               GLsizei bufSize,
                                               const GLint *params,
                                               angle::ParamCapture *paramCapture);
-void CaptureTexParameterIuivRobustANGLE_params(const Context *context,
+void CaptureTexParameterIuivRobustANGLE_params(const State &glState,
                                                bool isCallValid,
                                                TextureType targetPacked,
                                                GLenum pname,
                                                GLsizei bufSize,
                                                const GLuint *params,
                                                angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterIivRobustANGLE_length(const Context *context,
+void CaptureGetTexParameterIivRobustANGLE_length(const State &glState,
                                                  bool isCallValid,
                                                  TextureType targetPacked,
                                                  GLenum pname,
@@ -2911,7 +2907,7 @@
                                                  GLsizei *length,
                                                  GLint *params,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterIivRobustANGLE_params(const Context *context,
+void CaptureGetTexParameterIivRobustANGLE_params(const State &glState,
                                                  bool isCallValid,
                                                  TextureType targetPacked,
                                                  GLenum pname,
@@ -2919,7 +2915,7 @@
                                                  GLsizei *length,
                                                  GLint *params,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterIuivRobustANGLE_length(const Context *context,
+void CaptureGetTexParameterIuivRobustANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   TextureType targetPacked,
                                                   GLenum pname,
@@ -2927,7 +2923,7 @@
                                                   GLsizei *length,
                                                   GLuint *params,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterIuivRobustANGLE_params(const Context *context,
+void CaptureGetTexParameterIuivRobustANGLE_params(const State &glState,
                                                   bool isCallValid,
                                                   TextureType targetPacked,
                                                   GLenum pname,
@@ -2935,21 +2931,21 @@
                                                   GLsizei *length,
                                                   GLuint *params,
                                                   angle::ParamCapture *paramCapture);
-void CaptureSamplerParameterIivRobustANGLE_param(const Context *context,
+void CaptureSamplerParameterIivRobustANGLE_param(const State &glState,
                                                  bool isCallValid,
                                                  SamplerID samplerPacked,
                                                  GLenum pname,
                                                  GLsizei bufSize,
                                                  const GLint *param,
                                                  angle::ParamCapture *paramCapture);
-void CaptureSamplerParameterIuivRobustANGLE_param(const Context *context,
+void CaptureSamplerParameterIuivRobustANGLE_param(const State &glState,
                                                   bool isCallValid,
                                                   SamplerID samplerPacked,
                                                   GLenum pname,
                                                   GLsizei bufSize,
                                                   const GLuint *param,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterIivRobustANGLE_length(const Context *context,
+void CaptureGetSamplerParameterIivRobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      SamplerID samplerPacked,
                                                      GLenum pname,
@@ -2957,7 +2953,7 @@
                                                      GLsizei *length,
                                                      GLint *params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterIivRobustANGLE_params(const Context *context,
+void CaptureGetSamplerParameterIivRobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      SamplerID samplerPacked,
                                                      GLenum pname,
@@ -2965,7 +2961,7 @@
                                                      GLsizei *length,
                                                      GLint *params,
                                                      angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterIuivRobustANGLE_length(const Context *context,
+void CaptureGetSamplerParameterIuivRobustANGLE_length(const State &glState,
                                                       bool isCallValid,
                                                       SamplerID samplerPacked,
                                                       GLenum pname,
@@ -2973,7 +2969,7 @@
                                                       GLsizei *length,
                                                       GLuint *params,
                                                       angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterIuivRobustANGLE_params(const Context *context,
+void CaptureGetSamplerParameterIuivRobustANGLE_params(const State &glState,
                                                       bool isCallValid,
                                                       SamplerID samplerPacked,
                                                       GLenum pname,
@@ -2981,7 +2977,7 @@
                                                       GLsizei *length,
                                                       GLuint *params,
                                                       angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectivRobustANGLE_length(const Context *context,
+void CaptureGetQueryObjectivRobustANGLE_length(const State &glState,
                                                bool isCallValid,
                                                QueryID idPacked,
                                                GLenum pname,
@@ -2989,7 +2985,7 @@
                                                GLsizei *length,
                                                GLint *params,
                                                angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectivRobustANGLE_params(const Context *context,
+void CaptureGetQueryObjectivRobustANGLE_params(const State &glState,
                                                bool isCallValid,
                                                QueryID idPacked,
                                                GLenum pname,
@@ -2997,7 +2993,7 @@
                                                GLsizei *length,
                                                GLint *params,
                                                angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjecti64vRobustANGLE_length(const Context *context,
+void CaptureGetQueryObjecti64vRobustANGLE_length(const State &glState,
                                                  bool isCallValid,
                                                  QueryID idPacked,
                                                  GLenum pname,
@@ -3005,7 +3001,7 @@
                                                  GLsizei *length,
                                                  GLint64 *params,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjecti64vRobustANGLE_params(const Context *context,
+void CaptureGetQueryObjecti64vRobustANGLE_params(const State &glState,
                                                  bool isCallValid,
                                                  QueryID idPacked,
                                                  GLenum pname,
@@ -3013,7 +3009,7 @@
                                                  GLsizei *length,
                                                  GLint64 *params,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectui64vRobustANGLE_length(const Context *context,
+void CaptureGetQueryObjectui64vRobustANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   QueryID idPacked,
                                                   GLenum pname,
@@ -3021,7 +3017,7 @@
                                                   GLsizei *length,
                                                   GLuint64 *params,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectui64vRobustANGLE_params(const Context *context,
+void CaptureGetQueryObjectui64vRobustANGLE_params(const State &glState,
                                                   bool isCallValid,
                                                   QueryID idPacked,
                                                   GLenum pname,
@@ -3029,52 +3025,52 @@
                                                   GLsizei *length,
                                                   GLuint64 *params,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetTexLevelParameterivANGLE_params(const Context *context,
+void CaptureGetTexLevelParameterivANGLE_params(const State &glState,
                                                bool isCallValid,
                                                TextureTarget targetPacked,
                                                GLint level,
                                                GLenum pname,
                                                GLint *params,
                                                angle::ParamCapture *paramCapture);
-void CaptureGetTexLevelParameterfvANGLE_params(const Context *context,
+void CaptureGetTexLevelParameterfvANGLE_params(const State &glState,
                                                bool isCallValid,
                                                TextureTarget targetPacked,
                                                GLint level,
                                                GLenum pname,
                                                GLfloat *params,
                                                angle::ParamCapture *paramCapture);
-void CaptureGetMultisamplefvANGLE_val(const Context *context,
+void CaptureGetMultisamplefvANGLE_val(const State &glState,
                                       bool isCallValid,
                                       GLenum pname,
                                       GLuint index,
                                       GLfloat *val,
                                       angle::ParamCapture *paramCapture);
-void CaptureGetTranslatedShaderSourceANGLE_length(const Context *context,
+void CaptureGetTranslatedShaderSourceANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID shaderPacked,
                                                   GLsizei bufsize,
                                                   GLsizei *length,
                                                   GLchar *source,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGetTranslatedShaderSourceANGLE_source(const Context *context,
+void CaptureGetTranslatedShaderSourceANGLE_source(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID shaderPacked,
                                                   GLsizei bufsize,
                                                   GLsizei *length,
                                                   GLchar *source,
                                                   angle::ParamCapture *paramCapture);
-void CaptureBindUniformLocationCHROMIUM_name(const Context *context,
+void CaptureBindUniformLocationCHROMIUM_name(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLint location,
                                              const GLchar *name,
                                              angle::ParamCapture *paramCapture);
-void CaptureMatrixLoadfCHROMIUM_matrix(const Context *context,
+void CaptureMatrixLoadfCHROMIUM_matrix(const State &glState,
                                        bool isCallValid,
                                        GLenum matrixMode,
                                        const GLfloat *matrix,
                                        angle::ParamCapture *paramCapture);
-void CapturePathCommandsCHROMIUM_commands(const Context *context,
+void CapturePathCommandsCHROMIUM_commands(const State &glState,
                                           bool isCallValid,
                                           PathID pathPacked,
                                           GLsizei numCommands,
@@ -3083,7 +3079,7 @@
                                           GLenum coordType,
                                           const void *coords,
                                           angle::ParamCapture *paramCapture);
-void CapturePathCommandsCHROMIUM_coords(const Context *context,
+void CapturePathCommandsCHROMIUM_coords(const State &glState,
                                         bool isCallValid,
                                         PathID pathPacked,
                                         GLsizei numCommands,
@@ -3092,19 +3088,19 @@
                                         GLenum coordType,
                                         const void *coords,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetPathParameterfvCHROMIUM_value(const Context *context,
+void CaptureGetPathParameterfvCHROMIUM_value(const State &glState,
                                              bool isCallValid,
                                              PathID pathPacked,
                                              GLenum pname,
                                              GLfloat *value,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetPathParameterivCHROMIUM_value(const Context *context,
+void CaptureGetPathParameterivCHROMIUM_value(const State &glState,
                                              bool isCallValid,
                                              PathID pathPacked,
                                              GLenum pname,
                                              GLint *value,
                                              angle::ParamCapture *paramCapture);
-void CaptureCoverFillPathInstancedCHROMIUM_paths(const Context *context,
+void CaptureCoverFillPathInstancedCHROMIUM_paths(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei numPath,
                                                  GLenum pathNameType,
@@ -3114,7 +3110,7 @@
                                                  GLenum transformType,
                                                  const GLfloat *transformValues,
                                                  angle::ParamCapture *paramCapture);
-void CaptureCoverFillPathInstancedCHROMIUM_transformValues(const Context *context,
+void CaptureCoverFillPathInstancedCHROMIUM_transformValues(const State &glState,
                                                            bool isCallValid,
                                                            GLsizei numPath,
                                                            GLenum pathNameType,
@@ -3124,7 +3120,7 @@
                                                            GLenum transformType,
                                                            const GLfloat *transformValues,
                                                            angle::ParamCapture *paramCapture);
-void CaptureCoverStrokePathInstancedCHROMIUM_paths(const Context *context,
+void CaptureCoverStrokePathInstancedCHROMIUM_paths(const State &glState,
                                                    bool isCallValid,
                                                    GLsizei numPath,
                                                    GLenum pathNameType,
@@ -3134,7 +3130,7 @@
                                                    GLenum transformType,
                                                    const GLfloat *transformValues,
                                                    angle::ParamCapture *paramCapture);
-void CaptureCoverStrokePathInstancedCHROMIUM_transformValues(const Context *context,
+void CaptureCoverStrokePathInstancedCHROMIUM_transformValues(const State &glState,
                                                              bool isCallValid,
                                                              GLsizei numPath,
                                                              GLenum pathNameType,
@@ -3144,7 +3140,7 @@
                                                              GLenum transformType,
                                                              const GLfloat *transformValues,
                                                              angle::ParamCapture *paramCapture);
-void CaptureStencilStrokePathInstancedCHROMIUM_paths(const Context *context,
+void CaptureStencilStrokePathInstancedCHROMIUM_paths(const State &glState,
                                                      bool isCallValid,
                                                      GLsizei numPath,
                                                      GLenum pathNameType,
@@ -3155,7 +3151,7 @@
                                                      GLenum transformType,
                                                      const GLfloat *transformValues,
                                                      angle::ParamCapture *paramCapture);
-void CaptureStencilStrokePathInstancedCHROMIUM_transformValues(const Context *context,
+void CaptureStencilStrokePathInstancedCHROMIUM_transformValues(const State &glState,
                                                                bool isCallValid,
                                                                GLsizei numPath,
                                                                GLenum pathNameType,
@@ -3166,7 +3162,7 @@
                                                                GLenum transformType,
                                                                const GLfloat *transformValues,
                                                                angle::ParamCapture *paramCapture);
-void CaptureStencilFillPathInstancedCHROMIUM_paths(const Context *context,
+void CaptureStencilFillPathInstancedCHROMIUM_paths(const State &glState,
                                                    bool isCallValid,
                                                    GLsizei numPaths,
                                                    GLenum pathNameType,
@@ -3177,7 +3173,7 @@
                                                    GLenum transformType,
                                                    const GLfloat *transformValues,
                                                    angle::ParamCapture *paramCapture);
-void CaptureStencilFillPathInstancedCHROMIUM_transformValues(const Context *context,
+void CaptureStencilFillPathInstancedCHROMIUM_transformValues(const State &glState,
                                                              bool isCallValid,
                                                              GLsizei numPaths,
                                                              GLenum pathNameType,
@@ -3188,7 +3184,7 @@
                                                              GLenum transformType,
                                                              const GLfloat *transformValues,
                                                              angle::ParamCapture *paramCapture);
-void CaptureStencilThenCoverFillPathInstancedCHROMIUM_paths(const Context *context,
+void CaptureStencilThenCoverFillPathInstancedCHROMIUM_paths(const State &glState,
                                                             bool isCallValid,
                                                             GLsizei numPaths,
                                                             GLenum pathNameType,
@@ -3201,7 +3197,7 @@
                                                             const GLfloat *transformValues,
                                                             angle::ParamCapture *paramCapture);
 void CaptureStencilThenCoverFillPathInstancedCHROMIUM_transformValues(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     GLsizei numPaths,
     GLenum pathNameType,
@@ -3213,7 +3209,7 @@
     GLenum transformType,
     const GLfloat *transformValues,
     angle::ParamCapture *paramCapture);
-void CaptureStencilThenCoverStrokePathInstancedCHROMIUM_paths(const Context *context,
+void CaptureStencilThenCoverStrokePathInstancedCHROMIUM_paths(const State &glState,
                                                               bool isCallValid,
                                                               GLsizei numPaths,
                                                               GLenum pathNameType,
@@ -3226,7 +3222,7 @@
                                                               const GLfloat *transformValues,
                                                               angle::ParamCapture *paramCapture);
 void CaptureStencilThenCoverStrokePathInstancedCHROMIUM_transformValues(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     GLsizei numPaths,
     GLenum pathNameType,
@@ -3238,13 +3234,13 @@
     GLenum transformType,
     const GLfloat *transformValues,
     angle::ParamCapture *paramCapture);
-void CaptureBindFragmentInputLocationCHROMIUM_name(const Context *context,
+void CaptureBindFragmentInputLocationCHROMIUM_name(const State &glState,
                                                    bool isCallValid,
                                                    ShaderProgramID programsPacked,
                                                    GLint location,
                                                    const GLchar *name,
                                                    angle::ParamCapture *paramCapture);
-void CaptureProgramPathFragmentInputGenCHROMIUM_coeffs(const Context *context,
+void CaptureProgramPathFragmentInputGenCHROMIUM_coeffs(const State &glState,
                                                        bool isCallValid,
                                                        ShaderProgramID programPacked,
                                                        GLint location,
@@ -3252,92 +3248,92 @@
                                                        GLint components,
                                                        const GLfloat *coeffs,
                                                        angle::ParamCapture *paramCapture);
-void CaptureBindFragDataLocationEXT_name(const Context *context,
+void CaptureBindFragDataLocationEXT_name(const State &glState,
                                          bool isCallValid,
                                          ShaderProgramID programPacked,
                                          GLuint color,
                                          const GLchar *name,
                                          angle::ParamCapture *paramCapture);
-void CaptureBindFragDataLocationIndexedEXT_name(const Context *context,
+void CaptureBindFragDataLocationIndexedEXT_name(const State &glState,
                                                 bool isCallValid,
                                                 ShaderProgramID programPacked,
                                                 GLuint colorNumber,
                                                 GLuint index,
                                                 const GLchar *name,
                                                 angle::ParamCapture *paramCapture);
-void CaptureGetFragDataIndexEXT_name(const Context *context,
+void CaptureGetFragDataIndexEXT_name(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID programPacked,
                                      const GLchar *name,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetProgramResourceLocationIndexEXT_name(const Context *context,
+void CaptureGetProgramResourceLocationIndexEXT_name(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID programPacked,
                                                     GLenum programInterface,
                                                     const GLchar *name,
                                                     angle::ParamCapture *paramCapture);
-void CaptureInsertEventMarkerEXT_marker(const Context *context,
+void CaptureInsertEventMarkerEXT_marker(const State &glState,
                                         bool isCallValid,
                                         GLsizei length,
                                         const GLchar *marker,
                                         angle::ParamCapture *paramCapture);
-void CapturePushGroupMarkerEXT_marker(const Context *context,
+void CapturePushGroupMarkerEXT_marker(const State &glState,
                                       bool isCallValid,
                                       GLsizei length,
                                       const GLchar *marker,
                                       angle::ParamCapture *paramCapture);
-void CaptureDiscardFramebufferEXT_attachments(const Context *context,
+void CaptureDiscardFramebufferEXT_attachments(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLsizei numAttachments,
                                               const GLenum *attachments,
                                               angle::ParamCapture *paramCapture);
-void CaptureDeleteQueriesEXT_idsPacked(const Context *context,
+void CaptureDeleteQueriesEXT_idsPacked(const State &glState,
                                        bool isCallValid,
                                        GLsizei n,
                                        const QueryID *idsPacked,
                                        angle::ParamCapture *paramCapture);
-void CaptureGenQueriesEXT_idsPacked(const Context *context,
+void CaptureGenQueriesEXT_idsPacked(const State &glState,
                                     bool isCallValid,
                                     GLsizei n,
                                     QueryID *idsPacked,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjecti64vEXT_params(const Context *context,
+void CaptureGetQueryObjecti64vEXT_params(const State &glState,
                                          bool isCallValid,
                                          QueryID idPacked,
                                          GLenum pname,
                                          GLint64 *params,
                                          angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectivEXT_params(const Context *context,
+void CaptureGetQueryObjectivEXT_params(const State &glState,
                                        bool isCallValid,
                                        QueryID idPacked,
                                        GLenum pname,
                                        GLint *params,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectui64vEXT_params(const Context *context,
+void CaptureGetQueryObjectui64vEXT_params(const State &glState,
                                           bool isCallValid,
                                           QueryID idPacked,
                                           GLenum pname,
                                           GLuint64 *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetQueryObjectuivEXT_params(const Context *context,
+void CaptureGetQueryObjectuivEXT_params(const State &glState,
                                         bool isCallValid,
                                         QueryID idPacked,
                                         GLenum pname,
                                         GLuint *params,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetQueryivEXT_params(const Context *context,
+void CaptureGetQueryivEXT_params(const State &glState,
                                  bool isCallValid,
                                  QueryType targetPacked,
                                  GLenum pname,
                                  GLint *params,
                                  angle::ParamCapture *paramCapture);
-void CaptureDrawBuffersEXT_bufs(const Context *context,
+void CaptureDrawBuffersEXT_bufs(const State &glState,
                                 bool isCallValid,
                                 GLsizei n,
                                 const GLenum *bufs,
                                 angle::ParamCapture *paramCapture);
-void CaptureDrawElementsInstancedEXT_indices(const Context *context,
+void CaptureDrawElementsInstancedEXT_indices(const State &glState,
                                              bool isCallValid,
                                              PrimitiveMode modePacked,
                                              GLsizei count,
@@ -3345,54 +3341,54 @@
                                              const void *indices,
                                              GLsizei primcount,
                                              angle::ParamCapture *paramCapture);
-void CaptureCreateMemoryObjectsEXT_memoryObjectsPacked(const Context *context,
+void CaptureCreateMemoryObjectsEXT_memoryObjectsPacked(const State &glState,
                                                        bool isCallValid,
                                                        GLsizei n,
                                                        MemoryObjectID *memoryObjectsPacked,
                                                        angle::ParamCapture *paramCapture);
-void CaptureDeleteMemoryObjectsEXT_memoryObjectsPacked(const Context *context,
+void CaptureDeleteMemoryObjectsEXT_memoryObjectsPacked(const State &glState,
                                                        bool isCallValid,
                                                        GLsizei n,
                                                        const MemoryObjectID *memoryObjectsPacked,
                                                        angle::ParamCapture *paramCapture);
-void CaptureGetMemoryObjectParameterivEXT_params(const Context *context,
+void CaptureGetMemoryObjectParameterivEXT_params(const State &glState,
                                                  bool isCallValid,
                                                  MemoryObjectID memoryObjectPacked,
                                                  GLenum pname,
                                                  GLint *params,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGetUnsignedBytevEXT_data(const Context *context,
+void CaptureGetUnsignedBytevEXT_data(const State &glState,
                                      bool isCallValid,
                                      GLenum pname,
                                      GLubyte *data,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetUnsignedBytei_vEXT_data(const Context *context,
+void CaptureGetUnsignedBytei_vEXT_data(const State &glState,
                                        bool isCallValid,
                                        GLenum target,
                                        GLuint index,
                                        GLubyte *data,
                                        angle::ParamCapture *paramCapture);
-void CaptureMemoryObjectParameterivEXT_params(const Context *context,
+void CaptureMemoryObjectParameterivEXT_params(const State &glState,
                                               bool isCallValid,
                                               MemoryObjectID memoryObjectPacked,
                                               GLenum pname,
                                               const GLint *params,
                                               angle::ParamCapture *paramCapture);
-void CaptureGetnUniformfvEXT_params(const Context *context,
+void CaptureGetnUniformfvEXT_params(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei bufSize,
                                     GLfloat *params,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetnUniformivEXT_params(const Context *context,
+void CaptureGetnUniformivEXT_params(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLint location,
                                     GLsizei bufSize,
                                     GLint *params,
                                     angle::ParamCapture *paramCapture);
-void CaptureReadnPixelsEXT_data(const Context *context,
+void CaptureReadnPixelsEXT_data(const State &glState,
                                 bool isCallValid,
                                 GLint x,
                                 GLint y,
@@ -3403,29 +3399,29 @@
                                 GLsizei bufSize,
                                 void *data,
                                 angle::ParamCapture *paramCapture);
-void CaptureDeleteSemaphoresEXT_semaphoresPacked(const Context *context,
+void CaptureDeleteSemaphoresEXT_semaphoresPacked(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei n,
                                                  const SemaphoreID *semaphoresPacked,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGenSemaphoresEXT_semaphoresPacked(const Context *context,
+void CaptureGenSemaphoresEXT_semaphoresPacked(const State &glState,
                                               bool isCallValid,
                                               GLsizei n,
                                               SemaphoreID *semaphoresPacked,
                                               angle::ParamCapture *paramCapture);
-void CaptureGetSemaphoreParameterui64vEXT_params(const Context *context,
+void CaptureGetSemaphoreParameterui64vEXT_params(const State &glState,
                                                  bool isCallValid,
                                                  SemaphoreID semaphorePacked,
                                                  GLenum pname,
                                                  GLuint64 *params,
                                                  angle::ParamCapture *paramCapture);
-void CaptureSemaphoreParameterui64vEXT_params(const Context *context,
+void CaptureSemaphoreParameterui64vEXT_params(const State &glState,
                                               bool isCallValid,
                                               SemaphoreID semaphorePacked,
                                               GLenum pname,
                                               const GLuint64 *params,
                                               angle::ParamCapture *paramCapture);
-void CaptureSignalSemaphoreEXT_buffersPacked(const Context *context,
+void CaptureSignalSemaphoreEXT_buffersPacked(const State &glState,
                                              bool isCallValid,
                                              SemaphoreID semaphorePacked,
                                              GLuint numBufferBarriers,
@@ -3434,7 +3430,7 @@
                                              const TextureID *texturesPacked,
                                              const GLenum *dstLayouts,
                                              angle::ParamCapture *paramCapture);
-void CaptureSignalSemaphoreEXT_texturesPacked(const Context *context,
+void CaptureSignalSemaphoreEXT_texturesPacked(const State &glState,
                                               bool isCallValid,
                                               SemaphoreID semaphorePacked,
                                               GLuint numBufferBarriers,
@@ -3443,7 +3439,7 @@
                                               const TextureID *texturesPacked,
                                               const GLenum *dstLayouts,
                                               angle::ParamCapture *paramCapture);
-void CaptureSignalSemaphoreEXT_dstLayouts(const Context *context,
+void CaptureSignalSemaphoreEXT_dstLayouts(const State &glState,
                                           bool isCallValid,
                                           SemaphoreID semaphorePacked,
                                           GLuint numBufferBarriers,
@@ -3452,7 +3448,7 @@
                                           const TextureID *texturesPacked,
                                           const GLenum *dstLayouts,
                                           angle::ParamCapture *paramCapture);
-void CaptureWaitSemaphoreEXT_buffersPacked(const Context *context,
+void CaptureWaitSemaphoreEXT_buffersPacked(const State &glState,
                                            bool isCallValid,
                                            SemaphoreID semaphorePacked,
                                            GLuint numBufferBarriers,
@@ -3461,7 +3457,7 @@
                                            const TextureID *texturesPacked,
                                            const GLenum *srcLayouts,
                                            angle::ParamCapture *paramCapture);
-void CaptureWaitSemaphoreEXT_texturesPacked(const Context *context,
+void CaptureWaitSemaphoreEXT_texturesPacked(const State &glState,
                                             bool isCallValid,
                                             SemaphoreID semaphorePacked,
                                             GLuint numBufferBarriers,
@@ -3470,7 +3466,7 @@
                                             const TextureID *texturesPacked,
                                             const GLenum *srcLayouts,
                                             angle::ParamCapture *paramCapture);
-void CaptureWaitSemaphoreEXT_srcLayouts(const Context *context,
+void CaptureWaitSemaphoreEXT_srcLayouts(const State &glState,
                                         bool isCallValid,
                                         SemaphoreID semaphorePacked,
                                         GLuint numBufferBarriers,
@@ -3479,12 +3475,12 @@
                                         const TextureID *texturesPacked,
                                         const GLenum *srcLayouts,
                                         angle::ParamCapture *paramCapture);
-void CaptureDebugMessageCallbackKHR_userParam(const Context *context,
+void CaptureDebugMessageCallbackKHR_userParam(const State &glState,
                                               bool isCallValid,
                                               GLDEBUGPROCKHR callback,
                                               const void *userParam,
                                               angle::ParamCapture *paramCapture);
-void CaptureDebugMessageControlKHR_ids(const Context *context,
+void CaptureDebugMessageControlKHR_ids(const State &glState,
                                        bool isCallValid,
                                        GLenum source,
                                        GLenum type,
@@ -3493,7 +3489,7 @@
                                        const GLuint *ids,
                                        GLboolean enabled,
                                        angle::ParamCapture *paramCapture);
-void CaptureDebugMessageInsertKHR_buf(const Context *context,
+void CaptureDebugMessageInsertKHR_buf(const State &glState,
                                       bool isCallValid,
                                       GLenum source,
                                       GLenum type,
@@ -3502,7 +3498,7 @@
                                       GLsizei length,
                                       const GLchar *buf,
                                       angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLogKHR_sources(const Context *context,
+void CaptureGetDebugMessageLogKHR_sources(const State &glState,
                                           bool isCallValid,
                                           GLuint count,
                                           GLsizei bufSize,
@@ -3513,7 +3509,7 @@
                                           GLsizei *lengths,
                                           GLchar *messageLog,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLogKHR_types(const Context *context,
+void CaptureGetDebugMessageLogKHR_types(const State &glState,
                                         bool isCallValid,
                                         GLuint count,
                                         GLsizei bufSize,
@@ -3524,7 +3520,7 @@
                                         GLsizei *lengths,
                                         GLchar *messageLog,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLogKHR_ids(const Context *context,
+void CaptureGetDebugMessageLogKHR_ids(const State &glState,
                                       bool isCallValid,
                                       GLuint count,
                                       GLsizei bufSize,
@@ -3535,7 +3531,7 @@
                                       GLsizei *lengths,
                                       GLchar *messageLog,
                                       angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLogKHR_severities(const Context *context,
+void CaptureGetDebugMessageLogKHR_severities(const State &glState,
                                              bool isCallValid,
                                              GLuint count,
                                              GLsizei bufSize,
@@ -3546,7 +3542,7 @@
                                              GLsizei *lengths,
                                              GLchar *messageLog,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLogKHR_lengths(const Context *context,
+void CaptureGetDebugMessageLogKHR_lengths(const State &glState,
                                           bool isCallValid,
                                           GLuint count,
                                           GLsizei bufSize,
@@ -3557,7 +3553,7 @@
                                           GLsizei *lengths,
                                           GLchar *messageLog,
                                           angle::ParamCapture *paramCapture);
-void CaptureGetDebugMessageLogKHR_messageLog(const Context *context,
+void CaptureGetDebugMessageLogKHR_messageLog(const State &glState,
                                              bool isCallValid,
                                              GLuint count,
                                              GLsizei bufSize,
@@ -3568,7 +3564,7 @@
                                              GLsizei *lengths,
                                              GLchar *messageLog,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetObjectLabelKHR_length(const Context *context,
+void CaptureGetObjectLabelKHR_length(const State &glState,
                                      bool isCallValid,
                                      GLenum identifier,
                                      GLuint name,
@@ -3576,7 +3572,7 @@
                                      GLsizei *length,
                                      GLchar *label,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetObjectLabelKHR_label(const Context *context,
+void CaptureGetObjectLabelKHR_label(const State &glState,
                                     bool isCallValid,
                                     GLenum identifier,
                                     GLuint name,
@@ -3584,124 +3580,124 @@
                                     GLsizei *length,
                                     GLchar *label,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetObjectPtrLabelKHR_ptr(const Context *context,
+void CaptureGetObjectPtrLabelKHR_ptr(const State &glState,
                                      bool isCallValid,
                                      const void *ptr,
                                      GLsizei bufSize,
                                      GLsizei *length,
                                      GLchar *label,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetObjectPtrLabelKHR_length(const Context *context,
+void CaptureGetObjectPtrLabelKHR_length(const State &glState,
                                         bool isCallValid,
                                         const void *ptr,
                                         GLsizei bufSize,
                                         GLsizei *length,
                                         GLchar *label,
                                         angle::ParamCapture *paramCapture);
-void CaptureGetObjectPtrLabelKHR_label(const Context *context,
+void CaptureGetObjectPtrLabelKHR_label(const State &glState,
                                        bool isCallValid,
                                        const void *ptr,
                                        GLsizei bufSize,
                                        GLsizei *length,
                                        GLchar *label,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetPointervKHR_params(const Context *context,
+void CaptureGetPointervKHR_params(const State &glState,
                                   bool isCallValid,
                                   GLenum pname,
                                   void **params,
                                   angle::ParamCapture *paramCapture);
-void CaptureObjectLabelKHR_label(const Context *context,
+void CaptureObjectLabelKHR_label(const State &glState,
                                  bool isCallValid,
                                  GLenum identifier,
                                  GLuint name,
                                  GLsizei length,
                                  const GLchar *label,
                                  angle::ParamCapture *paramCapture);
-void CaptureObjectPtrLabelKHR_ptr(const Context *context,
+void CaptureObjectPtrLabelKHR_ptr(const State &glState,
                                   bool isCallValid,
                                   const void *ptr,
                                   GLsizei length,
                                   const GLchar *label,
                                   angle::ParamCapture *paramCapture);
-void CaptureObjectPtrLabelKHR_label(const Context *context,
+void CaptureObjectPtrLabelKHR_label(const State &glState,
                                     bool isCallValid,
                                     const void *ptr,
                                     GLsizei length,
                                     const GLchar *label,
                                     angle::ParamCapture *paramCapture);
-void CapturePushDebugGroupKHR_message(const Context *context,
+void CapturePushDebugGroupKHR_message(const State &glState,
                                       bool isCallValid,
                                       GLenum source,
                                       GLuint id,
                                       GLsizei length,
                                       const GLchar *message,
                                       angle::ParamCapture *paramCapture);
-void CaptureDeleteFencesNV_fencesPacked(const Context *context,
+void CaptureDeleteFencesNV_fencesPacked(const State &glState,
                                         bool isCallValid,
                                         GLsizei n,
                                         const FenceNVID *fencesPacked,
                                         angle::ParamCapture *paramCapture);
-void CaptureGenFencesNV_fencesPacked(const Context *context,
+void CaptureGenFencesNV_fencesPacked(const State &glState,
                                      bool isCallValid,
                                      GLsizei n,
                                      FenceNVID *fencesPacked,
                                      angle::ParamCapture *paramCapture);
-void CaptureGetFenceivNV_params(const Context *context,
+void CaptureGetFenceivNV_params(const State &glState,
                                 bool isCallValid,
                                 FenceNVID fencePacked,
                                 GLenum pname,
                                 GLint *params,
                                 angle::ParamCapture *paramCapture);
-void CaptureDrawTexfvOES_coords(const Context *context,
+void CaptureDrawTexfvOES_coords(const State &glState,
                                 bool isCallValid,
                                 const GLfloat *coords,
                                 angle::ParamCapture *paramCapture);
-void CaptureDrawTexivOES_coords(const Context *context,
+void CaptureDrawTexivOES_coords(const State &glState,
                                 bool isCallValid,
                                 const GLint *coords,
                                 angle::ParamCapture *paramCapture);
-void CaptureDrawTexsvOES_coords(const Context *context,
+void CaptureDrawTexsvOES_coords(const State &glState,
                                 bool isCallValid,
                                 const GLshort *coords,
                                 angle::ParamCapture *paramCapture);
-void CaptureDrawTexxvOES_coords(const Context *context,
+void CaptureDrawTexxvOES_coords(const State &glState,
                                 bool isCallValid,
                                 const GLfixed *coords,
                                 angle::ParamCapture *paramCapture);
-void CaptureDeleteFramebuffersOES_framebuffersPacked(const Context *context,
+void CaptureDeleteFramebuffersOES_framebuffersPacked(const State &glState,
                                                      bool isCallValid,
                                                      GLsizei n,
                                                      const FramebufferID *framebuffersPacked,
                                                      angle::ParamCapture *paramCapture);
-void CaptureDeleteRenderbuffersOES_renderbuffersPacked(const Context *context,
+void CaptureDeleteRenderbuffersOES_renderbuffersPacked(const State &glState,
                                                        bool isCallValid,
                                                        GLsizei n,
                                                        const RenderbufferID *renderbuffersPacked,
                                                        angle::ParamCapture *paramCapture);
-void CaptureGenFramebuffersOES_framebuffersPacked(const Context *context,
+void CaptureGenFramebuffersOES_framebuffersPacked(const State &glState,
                                                   bool isCallValid,
                                                   GLsizei n,
                                                   FramebufferID *framebuffersPacked,
                                                   angle::ParamCapture *paramCapture);
-void CaptureGenRenderbuffersOES_renderbuffersPacked(const Context *context,
+void CaptureGenRenderbuffersOES_renderbuffersPacked(const State &glState,
                                                     bool isCallValid,
                                                     GLsizei n,
                                                     RenderbufferID *renderbuffersPacked,
                                                     angle::ParamCapture *paramCapture);
-void CaptureGetFramebufferAttachmentParameterivOES_params(const Context *context,
+void CaptureGetFramebufferAttachmentParameterivOES_params(const State &glState,
                                                           bool isCallValid,
                                                           GLenum target,
                                                           GLenum attachment,
                                                           GLenum pname,
                                                           GLint *params,
                                                           angle::ParamCapture *paramCapture);
-void CaptureGetRenderbufferParameterivOES_params(const Context *context,
+void CaptureGetRenderbufferParameterivOES_params(const State &glState,
                                                  bool isCallValid,
                                                  GLenum target,
                                                  GLenum pname,
                                                  GLint *params,
                                                  angle::ParamCapture *paramCapture);
-void CaptureGetProgramBinaryOES_length(const Context *context,
+void CaptureGetProgramBinaryOES_length(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLsizei bufSize,
@@ -3709,7 +3705,7 @@
                                        GLenum *binaryFormat,
                                        void *binary,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetProgramBinaryOES_binaryFormat(const Context *context,
+void CaptureGetProgramBinaryOES_binaryFormat(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID programPacked,
                                              GLsizei bufSize,
@@ -3717,7 +3713,7 @@
                                              GLenum *binaryFormat,
                                              void *binary,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetProgramBinaryOES_binary(const Context *context,
+void CaptureGetProgramBinaryOES_binary(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID programPacked,
                                        GLsizei bufSize,
@@ -3725,50 +3721,50 @@
                                        GLenum *binaryFormat,
                                        void *binary,
                                        angle::ParamCapture *paramCapture);
-void CaptureProgramBinaryOES_binary(const Context *context,
+void CaptureProgramBinaryOES_binary(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID programPacked,
                                     GLenum binaryFormat,
                                     const void *binary,
                                     GLint length,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetBufferPointervOES_params(const Context *context,
+void CaptureGetBufferPointervOES_params(const State &glState,
                                         bool isCallValid,
                                         BufferBinding targetPacked,
                                         GLenum pname,
                                         void **params,
                                         angle::ParamCapture *paramCapture);
-void CaptureMatrixIndexPointerOES_pointer(const Context *context,
+void CaptureMatrixIndexPointerOES_pointer(const State &glState,
                                           bool isCallValid,
                                           GLint size,
                                           GLenum type,
                                           GLsizei stride,
                                           const void *pointer,
                                           angle::ParamCapture *paramCapture);
-void CaptureWeightPointerOES_pointer(const Context *context,
+void CaptureWeightPointerOES_pointer(const State &glState,
                                      bool isCallValid,
                                      GLint size,
                                      GLenum type,
                                      GLsizei stride,
                                      const void *pointer,
                                      angle::ParamCapture *paramCapture);
-void CapturePointSizePointerOES_pointer(const Context *context,
+void CapturePointSizePointerOES_pointer(const State &glState,
                                         bool isCallValid,
                                         VertexAttribType typePacked,
                                         GLsizei stride,
                                         const void *pointer,
                                         angle::ParamCapture *paramCapture);
-void CaptureQueryMatrixxOES_mantissa(const Context *context,
+void CaptureQueryMatrixxOES_mantissa(const State &glState,
                                      bool isCallValid,
                                      GLfixed *mantissa,
                                      GLint *exponent,
                                      angle::ParamCapture *paramCapture);
-void CaptureQueryMatrixxOES_exponent(const Context *context,
+void CaptureQueryMatrixxOES_exponent(const State &glState,
                                      bool isCallValid,
                                      GLfixed *mantissa,
                                      GLint *exponent,
                                      angle::ParamCapture *paramCapture);
-void CaptureCompressedTexImage3DOES_data(const Context *context,
+void CaptureCompressedTexImage3DOES_data(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -3780,7 +3776,7 @@
                                          GLsizei imageSize,
                                          const void *data,
                                          angle::ParamCapture *paramCapture);
-void CaptureCompressedTexSubImage3DOES_data(const Context *context,
+void CaptureCompressedTexSubImage3DOES_data(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -3794,7 +3790,7 @@
                                             GLsizei imageSize,
                                             const void *data,
                                             angle::ParamCapture *paramCapture);
-void CaptureTexImage3DOES_pixels(const Context *context,
+void CaptureTexImage3DOES_pixels(const State &glState,
                                  bool isCallValid,
                                  TextureTarget targetPacked,
                                  GLint level,
@@ -3807,7 +3803,7 @@
                                  GLenum type,
                                  const void *pixels,
                                  angle::ParamCapture *paramCapture);
-void CaptureTexSubImage3DOES_pixels(const Context *context,
+void CaptureTexSubImage3DOES_pixels(const State &glState,
                                     bool isCallValid,
                                     TextureTarget targetPacked,
                                     GLint level,
@@ -3821,96 +3817,96 @@
                                     GLenum type,
                                     const void *pixels,
                                     angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterIivOES_params(const Context *context,
+void CaptureGetSamplerParameterIivOES_params(const State &glState,
                                              bool isCallValid,
                                              SamplerID samplerPacked,
                                              GLenum pname,
                                              GLint *params,
                                              angle::ParamCapture *paramCapture);
-void CaptureGetSamplerParameterIuivOES_params(const Context *context,
+void CaptureGetSamplerParameterIuivOES_params(const State &glState,
                                               bool isCallValid,
                                               SamplerID samplerPacked,
                                               GLenum pname,
                                               GLuint *params,
                                               angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterIivOES_params(const Context *context,
+void CaptureGetTexParameterIivOES_params(const State &glState,
                                          bool isCallValid,
                                          TextureType targetPacked,
                                          GLenum pname,
                                          GLint *params,
                                          angle::ParamCapture *paramCapture);
-void CaptureGetTexParameterIuivOES_params(const Context *context,
+void CaptureGetTexParameterIuivOES_params(const State &glState,
                                           bool isCallValid,
                                           TextureType targetPacked,
                                           GLenum pname,
                                           GLuint *params,
                                           angle::ParamCapture *paramCapture);
-void CaptureSamplerParameterIivOES_param(const Context *context,
+void CaptureSamplerParameterIivOES_param(const State &glState,
                                          bool isCallValid,
                                          SamplerID samplerPacked,
                                          GLenum pname,
                                          const GLint *param,
                                          angle::ParamCapture *paramCapture);
-void CaptureSamplerParameterIuivOES_param(const Context *context,
+void CaptureSamplerParameterIuivOES_param(const State &glState,
                                           bool isCallValid,
                                           SamplerID samplerPacked,
                                           GLenum pname,
                                           const GLuint *param,
                                           angle::ParamCapture *paramCapture);
-void CaptureTexParameterIivOES_params(const Context *context,
+void CaptureTexParameterIivOES_params(const State &glState,
                                       bool isCallValid,
                                       TextureType targetPacked,
                                       GLenum pname,
                                       const GLint *params,
                                       angle::ParamCapture *paramCapture);
-void CaptureTexParameterIuivOES_params(const Context *context,
+void CaptureTexParameterIuivOES_params(const State &glState,
                                        bool isCallValid,
                                        TextureType targetPacked,
                                        GLenum pname,
                                        const GLuint *params,
                                        angle::ParamCapture *paramCapture);
-void CaptureGetTexGenfvOES_params(const Context *context,
+void CaptureGetTexGenfvOES_params(const State &glState,
                                   bool isCallValid,
                                   GLenum coord,
                                   GLenum pname,
                                   GLfloat *params,
                                   angle::ParamCapture *paramCapture);
-void CaptureGetTexGenivOES_params(const Context *context,
+void CaptureGetTexGenivOES_params(const State &glState,
                                   bool isCallValid,
                                   GLenum coord,
                                   GLenum pname,
                                   GLint *params,
                                   angle::ParamCapture *paramCapture);
-void CaptureGetTexGenxvOES_params(const Context *context,
+void CaptureGetTexGenxvOES_params(const State &glState,
                                   bool isCallValid,
                                   GLenum coord,
                                   GLenum pname,
                                   GLfixed *params,
                                   angle::ParamCapture *paramCapture);
-void CaptureTexGenfvOES_params(const Context *context,
+void CaptureTexGenfvOES_params(const State &glState,
                                bool isCallValid,
                                GLenum coord,
                                GLenum pname,
                                const GLfloat *params,
                                angle::ParamCapture *paramCapture);
-void CaptureTexGenivOES_params(const Context *context,
+void CaptureTexGenivOES_params(const State &glState,
                                bool isCallValid,
                                GLenum coord,
                                GLenum pname,
                                const GLint *params,
                                angle::ParamCapture *paramCapture);
-void CaptureTexGenxvOES_params(const Context *context,
+void CaptureTexGenxvOES_params(const State &glState,
                                bool isCallValid,
                                GLenum coord,
                                GLenum pname,
                                const GLfixed *params,
                                angle::ParamCapture *paramCapture);
-void CaptureDeleteVertexArraysOES_arraysPacked(const Context *context,
+void CaptureDeleteVertexArraysOES_arraysPacked(const State &glState,
                                                bool isCallValid,
                                                GLsizei n,
                                                const VertexArrayID *arraysPacked,
                                                angle::ParamCapture *paramCapture);
-void CaptureGenVertexArraysOES_arraysPacked(const Context *context,
+void CaptureGenVertexArraysOES_arraysPacked(const State &glState,
                                             bool isCallValid,
                                             GLsizei n,
                                             VertexArrayID *arraysPacked,
diff --git a/src/libANGLE/capture_gles_ext_params.cpp b/src/libANGLE/capture_gles_ext_params.cpp
index 4e00d6a..d564a4d 100644
--- a/src/libANGLE/capture_gles_ext_params.cpp
+++ b/src/libANGLE/capture_gles_ext_params.cpp
@@ -13,7 +13,7 @@
 namespace gl
 {
 void CaptureDrawElementsInstancedBaseVertexBaseInstanceANGLE_indices(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     GLsizei count,
@@ -27,7 +27,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_firsts(const Context *context,
+void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_firsts(const State &glState,
                                                              bool isCallValid,
                                                              PrimitiveMode modePacked,
                                                              const GLint *firsts,
@@ -40,7 +40,7 @@
     UNIMPLEMENTED();
 }  // namespace gl
 
-void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_counts(const Context *context,
+void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_counts(const State &glState,
                                                              bool isCallValid,
                                                              PrimitiveMode modePacked,
                                                              const GLint *firsts,
@@ -54,7 +54,7 @@
 }
 
 void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_instanceCounts(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLint *firsts,
@@ -68,7 +68,7 @@
 }
 
 void CaptureMultiDrawArraysInstancedBaseInstanceANGLE_baseInstances(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLint *firsts,
@@ -82,7 +82,7 @@
 }
 
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_counts(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -98,7 +98,7 @@
 }
 
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_indices(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -114,7 +114,7 @@
 }
 
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_instanceCounts(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -130,7 +130,7 @@
 }
 
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_baseVertices(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -146,7 +146,7 @@
 }
 
 void CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_baseInstances(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     PrimitiveMode modePacked,
     const GLsizei *counts,
@@ -161,7 +161,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawElementsInstancedANGLE_indices(const Context *context,
+void CaptureDrawElementsInstancedANGLE_indices(const State &glState,
                                                bool isCallValid,
                                                PrimitiveMode modePacked,
                                                GLsizei count,
@@ -173,7 +173,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawArraysANGLE_firsts(const Context *context,
+void CaptureMultiDrawArraysANGLE_firsts(const State &glState,
                                         bool isCallValid,
                                         PrimitiveMode modePacked,
                                         const GLint *firsts,
@@ -184,7 +184,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawArraysANGLE_counts(const Context *context,
+void CaptureMultiDrawArraysANGLE_counts(const State &glState,
                                         bool isCallValid,
                                         PrimitiveMode modePacked,
                                         const GLint *firsts,
@@ -195,7 +195,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawArraysInstancedANGLE_firsts(const Context *context,
+void CaptureMultiDrawArraysInstancedANGLE_firsts(const State &glState,
                                                  bool isCallValid,
                                                  PrimitiveMode modePacked,
                                                  const GLint *firsts,
@@ -207,7 +207,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawArraysInstancedANGLE_counts(const Context *context,
+void CaptureMultiDrawArraysInstancedANGLE_counts(const State &glState,
                                                  bool isCallValid,
                                                  PrimitiveMode modePacked,
                                                  const GLint *firsts,
@@ -219,7 +219,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawArraysInstancedANGLE_instanceCounts(const Context *context,
+void CaptureMultiDrawArraysInstancedANGLE_instanceCounts(const State &glState,
                                                          bool isCallValid,
                                                          PrimitiveMode modePacked,
                                                          const GLint *firsts,
@@ -231,7 +231,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawElementsANGLE_counts(const Context *context,
+void CaptureMultiDrawElementsANGLE_counts(const State &glState,
                                           bool isCallValid,
                                           PrimitiveMode modePacked,
                                           const GLsizei *counts,
@@ -243,7 +243,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawElementsANGLE_indices(const Context *context,
+void CaptureMultiDrawElementsANGLE_indices(const State &glState,
                                            bool isCallValid,
                                            PrimitiveMode modePacked,
                                            const GLsizei *counts,
@@ -255,7 +255,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawElementsInstancedANGLE_counts(const Context *context,
+void CaptureMultiDrawElementsInstancedANGLE_counts(const State &glState,
                                                    bool isCallValid,
                                                    PrimitiveMode modePacked,
                                                    const GLsizei *counts,
@@ -268,7 +268,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawElementsInstancedANGLE_indices(const Context *context,
+void CaptureMultiDrawElementsInstancedANGLE_indices(const State &glState,
                                                     bool isCallValid,
                                                     PrimitiveMode modePacked,
                                                     const GLsizei *counts,
@@ -281,7 +281,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMultiDrawElementsInstancedANGLE_instanceCounts(const Context *context,
+void CaptureMultiDrawElementsInstancedANGLE_instanceCounts(const State &glState,
                                                            bool isCallValid,
                                                            PrimitiveMode modePacked,
                                                            const GLsizei *counts,
@@ -294,7 +294,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureRequestExtensionANGLE_name(const Context *context,
+void CaptureRequestExtensionANGLE_name(const State &glState,
                                        bool isCallValid,
                                        const GLchar *name,
                                        ParamCapture *paramCapture)
@@ -302,7 +302,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDisableExtensionANGLE_name(const Context *context,
+void CaptureDisableExtensionANGLE_name(const State &glState,
                                        bool isCallValid,
                                        const GLchar *name,
                                        ParamCapture *paramCapture)
@@ -310,7 +310,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBooleanvRobustANGLE_length(const Context *context,
+void CaptureGetBooleanvRobustANGLE_length(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
@@ -321,7 +321,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBooleanvRobustANGLE_params(const Context *context,
+void CaptureGetBooleanvRobustANGLE_params(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
@@ -332,7 +332,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBufferParameterivRobustANGLE_length(const Context *context,
+void CaptureGetBufferParameterivRobustANGLE_length(const State &glState,
                                                    bool isCallValid,
                                                    BufferBinding targetPacked,
                                                    GLenum pname,
@@ -344,7 +344,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBufferParameterivRobustANGLE_params(const Context *context,
+void CaptureGetBufferParameterivRobustANGLE_params(const State &glState,
                                                    bool isCallValid,
                                                    BufferBinding targetPacked,
                                                    GLenum pname,
@@ -356,7 +356,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFloatvRobustANGLE_length(const Context *context,
+void CaptureGetFloatvRobustANGLE_length(const State &glState,
                                         bool isCallValid,
                                         GLenum pname,
                                         GLsizei bufSize,
@@ -367,7 +367,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFloatvRobustANGLE_params(const Context *context,
+void CaptureGetFloatvRobustANGLE_params(const State &glState,
                                         bool isCallValid,
                                         GLenum pname,
                                         GLsizei bufSize,
@@ -378,7 +378,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFramebufferAttachmentParameterivRobustANGLE_length(const Context *context,
+void CaptureGetFramebufferAttachmentParameterivRobustANGLE_length(const State &glState,
                                                                   bool isCallValid,
                                                                   GLenum target,
                                                                   GLenum attachment,
@@ -391,7 +391,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFramebufferAttachmentParameterivRobustANGLE_params(const Context *context,
+void CaptureGetFramebufferAttachmentParameterivRobustANGLE_params(const State &glState,
                                                                   bool isCallValid,
                                                                   GLenum target,
                                                                   GLenum attachment,
@@ -404,7 +404,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetIntegervRobustANGLE_length(const Context *context,
+void CaptureGetIntegervRobustANGLE_length(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
@@ -415,7 +415,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetIntegervRobustANGLE_data(const Context *context,
+void CaptureGetIntegervRobustANGLE_data(const State &glState,
                                         bool isCallValid,
                                         GLenum pname,
                                         GLsizei bufSize,
@@ -426,7 +426,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramivRobustANGLE_length(const Context *context,
+void CaptureGetProgramivRobustANGLE_length(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID program,
                                            GLenum pname,
@@ -438,7 +438,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramivRobustANGLE_params(const Context *context,
+void CaptureGetProgramivRobustANGLE_params(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID program,
                                            GLenum pname,
@@ -450,7 +450,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetRenderbufferParameterivRobustANGLE_length(const Context *context,
+void CaptureGetRenderbufferParameterivRobustANGLE_length(const State &glState,
                                                          bool isCallValid,
                                                          GLenum target,
                                                          GLenum pname,
@@ -462,7 +462,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetRenderbufferParameterivRobustANGLE_params(const Context *context,
+void CaptureGetRenderbufferParameterivRobustANGLE_params(const State &glState,
                                                          bool isCallValid,
                                                          GLenum target,
                                                          GLenum pname,
@@ -474,7 +474,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetShaderivRobustANGLE_length(const Context *context,
+void CaptureGetShaderivRobustANGLE_length(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID shader,
                                           GLenum pname,
@@ -486,7 +486,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetShaderivRobustANGLE_params(const Context *context,
+void CaptureGetShaderivRobustANGLE_params(const State &glState,
                                           bool isCallValid,
                                           ShaderProgramID shader,
                                           GLenum pname,
@@ -498,7 +498,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterfvRobustANGLE_length(const Context *context,
+void CaptureGetTexParameterfvRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -510,7 +510,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterfvRobustANGLE_params(const Context *context,
+void CaptureGetTexParameterfvRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -522,7 +522,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterivRobustANGLE_length(const Context *context,
+void CaptureGetTexParameterivRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -534,7 +534,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterivRobustANGLE_params(const Context *context,
+void CaptureGetTexParameterivRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 TextureType targetPacked,
                                                 GLenum pname,
@@ -546,7 +546,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformfvRobustANGLE_length(const Context *context,
+void CaptureGetUniformfvRobustANGLE_length(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID program,
                                            GLint location,
@@ -558,7 +558,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformfvRobustANGLE_params(const Context *context,
+void CaptureGetUniformfvRobustANGLE_params(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID program,
                                            GLint location,
@@ -570,7 +570,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformivRobustANGLE_length(const Context *context,
+void CaptureGetUniformivRobustANGLE_length(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID program,
                                            GLint location,
@@ -582,7 +582,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformivRobustANGLE_params(const Context *context,
+void CaptureGetUniformivRobustANGLE_params(const State &glState,
                                            bool isCallValid,
                                            ShaderProgramID program,
                                            GLint location,
@@ -594,7 +594,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribfvRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribfvRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -606,7 +606,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribfvRobustANGLE_params(const Context *context,
+void CaptureGetVertexAttribfvRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -618,7 +618,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribivRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribivRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -630,7 +630,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribivRobustANGLE_params(const Context *context,
+void CaptureGetVertexAttribivRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 GLuint index,
                                                 GLenum pname,
@@ -642,7 +642,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribPointervRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribPointervRobustANGLE_length(const State &glState,
                                                       bool isCallValid,
                                                       GLuint index,
                                                       GLenum pname,
@@ -654,7 +654,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribPointervRobustANGLE_pointer(const Context *context,
+void CaptureGetVertexAttribPointervRobustANGLE_pointer(const State &glState,
                                                        bool isCallValid,
                                                        GLuint index,
                                                        GLenum pname,
@@ -666,7 +666,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadPixelsRobustANGLE_length(const Context *context,
+void CaptureReadPixelsRobustANGLE_length(const State &glState,
                                          bool isCallValid,
                                          GLint x,
                                          GLint y,
@@ -684,7 +684,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadPixelsRobustANGLE_columns(const Context *context,
+void CaptureReadPixelsRobustANGLE_columns(const State &glState,
                                           bool isCallValid,
                                           GLint x,
                                           GLint y,
@@ -702,7 +702,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadPixelsRobustANGLE_rows(const Context *context,
+void CaptureReadPixelsRobustANGLE_rows(const State &glState,
                                        bool isCallValid,
                                        GLint x,
                                        GLint y,
@@ -720,7 +720,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadPixelsRobustANGLE_pixels(const Context *context,
+void CaptureReadPixelsRobustANGLE_pixels(const State &glState,
                                          bool isCallValid,
                                          GLint x,
                                          GLint y,
@@ -738,7 +738,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexImage2DRobustANGLE_pixels(const Context *context,
+void CaptureTexImage2DRobustANGLE_pixels(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -755,7 +755,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameterfvRobustANGLE_params(const Context *context,
+void CaptureTexParameterfvRobustANGLE_params(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLenum pname,
@@ -766,7 +766,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameterivRobustANGLE_params(const Context *context,
+void CaptureTexParameterivRobustANGLE_params(const State &glState,
                                              bool isCallValid,
                                              TextureType targetPacked,
                                              GLenum pname,
@@ -777,7 +777,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexSubImage2DRobustANGLE_pixels(const Context *context,
+void CaptureTexSubImage2DRobustANGLE_pixels(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -794,7 +794,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexImage3DRobustANGLE_pixels(const Context *context,
+void CaptureTexImage3DRobustANGLE_pixels(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -812,7 +812,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexSubImage3DRobustANGLE_pixels(const Context *context,
+void CaptureTexSubImage3DRobustANGLE_pixels(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -831,7 +831,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCompressedTexImage2DRobustANGLE_data(const Context *context,
+void CaptureCompressedTexImage2DRobustANGLE_data(const State &glState,
                                                  bool isCallValid,
                                                  TextureTarget targetPacked,
                                                  GLint level,
@@ -847,7 +847,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCompressedTexSubImage2DRobustANGLE_data(const Context *context,
+void CaptureCompressedTexSubImage2DRobustANGLE_data(const State &glState,
                                                     bool isCallValid,
                                                     TextureTarget targetPacked,
                                                     GLint level,
@@ -864,7 +864,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCompressedTexImage3DRobustANGLE_data(const Context *context,
+void CaptureCompressedTexImage3DRobustANGLE_data(const State &glState,
                                                  bool isCallValid,
                                                  TextureTarget targetPacked,
                                                  GLint level,
@@ -881,7 +881,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCompressedTexSubImage3DRobustANGLE_data(const Context *context,
+void CaptureCompressedTexSubImage3DRobustANGLE_data(const State &glState,
                                                     bool isCallValid,
                                                     TextureTarget targetPacked,
                                                     GLint level,
@@ -900,7 +900,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryivRobustANGLE_length(const Context *context,
+void CaptureGetQueryivRobustANGLE_length(const State &glState,
                                          bool isCallValid,
                                          QueryType targetPacked,
                                          GLenum pname,
@@ -912,7 +912,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryivRobustANGLE_params(const Context *context,
+void CaptureGetQueryivRobustANGLE_params(const State &glState,
                                          bool isCallValid,
                                          QueryType targetPacked,
                                          GLenum pname,
@@ -924,7 +924,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectuivRobustANGLE_length(const Context *context,
+void CaptureGetQueryObjectuivRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 QueryID id,
                                                 GLenum pname,
@@ -936,7 +936,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectuivRobustANGLE_params(const Context *context,
+void CaptureGetQueryObjectuivRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 QueryID id,
                                                 GLenum pname,
@@ -948,7 +948,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBufferPointervRobustANGLE_length(const Context *context,
+void CaptureGetBufferPointervRobustANGLE_length(const State &glState,
                                                 bool isCallValid,
                                                 BufferBinding targetPacked,
                                                 GLenum pname,
@@ -960,7 +960,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBufferPointervRobustANGLE_params(const Context *context,
+void CaptureGetBufferPointervRobustANGLE_params(const State &glState,
                                                 bool isCallValid,
                                                 BufferBinding targetPacked,
                                                 GLenum pname,
@@ -972,7 +972,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetIntegeri_vRobustANGLE_length(const Context *context,
+void CaptureGetIntegeri_vRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             GLenum target,
                                             GLuint index,
@@ -984,7 +984,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetIntegeri_vRobustANGLE_data(const Context *context,
+void CaptureGetIntegeri_vRobustANGLE_data(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           GLuint index,
@@ -996,7 +996,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetInternalformativRobustANGLE_length(const Context *context,
+void CaptureGetInternalformativRobustANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum internalformat,
@@ -1009,7 +1009,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetInternalformativRobustANGLE_params(const Context *context,
+void CaptureGetInternalformativRobustANGLE_params(const State &glState,
                                                   bool isCallValid,
                                                   GLenum target,
                                                   GLenum internalformat,
@@ -1022,7 +1022,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribIivRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribIivRobustANGLE_length(const State &glState,
                                                  bool isCallValid,
                                                  GLuint index,
                                                  GLenum pname,
@@ -1034,7 +1034,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribIivRobustANGLE_params(const Context *context,
+void CaptureGetVertexAttribIivRobustANGLE_params(const State &glState,
                                                  bool isCallValid,
                                                  GLuint index,
                                                  GLenum pname,
@@ -1046,7 +1046,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribIuivRobustANGLE_length(const Context *context,
+void CaptureGetVertexAttribIuivRobustANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   GLuint index,
                                                   GLenum pname,
@@ -1058,7 +1058,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetVertexAttribIuivRobustANGLE_params(const Context *context,
+void CaptureGetVertexAttribIuivRobustANGLE_params(const State &glState,
                                                   bool isCallValid,
                                                   GLuint index,
                                                   GLenum pname,
@@ -1070,7 +1070,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformuivRobustANGLE_length(const Context *context,
+void CaptureGetUniformuivRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -1082,7 +1082,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUniformuivRobustANGLE_params(const Context *context,
+void CaptureGetUniformuivRobustANGLE_params(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -1094,7 +1094,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniformBlockivRobustANGLE_length(const Context *context,
+void CaptureGetActiveUniformBlockivRobustANGLE_length(const State &glState,
                                                       bool isCallValid,
                                                       ShaderProgramID program,
                                                       GLuint uniformBlockIndex,
@@ -1107,7 +1107,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetActiveUniformBlockivRobustANGLE_params(const Context *context,
+void CaptureGetActiveUniformBlockivRobustANGLE_params(const State &glState,
                                                       bool isCallValid,
                                                       ShaderProgramID program,
                                                       GLuint uniformBlockIndex,
@@ -1120,7 +1120,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetInteger64vRobustANGLE_length(const Context *context,
+void CaptureGetInteger64vRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             GLenum pname,
                                             GLsizei bufSize,
@@ -1131,7 +1131,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetInteger64vRobustANGLE_data(const Context *context,
+void CaptureGetInteger64vRobustANGLE_data(const State &glState,
                                           bool isCallValid,
                                           GLenum pname,
                                           GLsizei bufSize,
@@ -1142,7 +1142,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetInteger64i_vRobustANGLE_length(const Context *context,
+void CaptureGetInteger64i_vRobustANGLE_length(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLuint index,
@@ -1154,7 +1154,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetInteger64i_vRobustANGLE_data(const Context *context,
+void CaptureGetInteger64i_vRobustANGLE_data(const State &glState,
                                             bool isCallValid,
                                             GLenum target,
                                             GLuint index,
@@ -1166,7 +1166,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBufferParameteri64vRobustANGLE_length(const Context *context,
+void CaptureGetBufferParameteri64vRobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      BufferBinding targetPacked,
                                                      GLenum pname,
@@ -1178,7 +1178,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBufferParameteri64vRobustANGLE_params(const Context *context,
+void CaptureGetBufferParameteri64vRobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      BufferBinding targetPacked,
                                                      GLenum pname,
@@ -1190,7 +1190,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameterivRobustANGLE_param(const Context *context,
+void CaptureSamplerParameterivRobustANGLE_param(const State &glState,
                                                 bool isCallValid,
                                                 SamplerID sampler,
                                                 GLuint pname,
@@ -1201,7 +1201,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameterfvRobustANGLE_param(const Context *context,
+void CaptureSamplerParameterfvRobustANGLE_param(const State &glState,
                                                 bool isCallValid,
                                                 SamplerID sampler,
                                                 GLenum pname,
@@ -1212,7 +1212,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterivRobustANGLE_length(const Context *context,
+void CaptureGetSamplerParameterivRobustANGLE_length(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID sampler,
                                                     GLenum pname,
@@ -1224,7 +1224,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterivRobustANGLE_params(const Context *context,
+void CaptureGetSamplerParameterivRobustANGLE_params(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID sampler,
                                                     GLenum pname,
@@ -1236,7 +1236,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterfvRobustANGLE_length(const Context *context,
+void CaptureGetSamplerParameterfvRobustANGLE_length(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID sampler,
                                                     GLenum pname,
@@ -1248,7 +1248,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterfvRobustANGLE_params(const Context *context,
+void CaptureGetSamplerParameterfvRobustANGLE_params(const State &glState,
                                                     bool isCallValid,
                                                     SamplerID sampler,
                                                     GLenum pname,
@@ -1260,7 +1260,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFramebufferParameterivRobustANGLE_length(const Context *context,
+void CaptureGetFramebufferParameterivRobustANGLE_length(const State &glState,
                                                         bool isCallValid,
                                                         GLenum target,
                                                         GLenum pname,
@@ -1272,7 +1272,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFramebufferParameterivRobustANGLE_params(const Context *context,
+void CaptureGetFramebufferParameterivRobustANGLE_params(const State &glState,
                                                         bool isCallValid,
                                                         GLenum target,
                                                         GLenum pname,
@@ -1284,7 +1284,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramInterfaceivRobustANGLE_length(const Context *context,
+void CaptureGetProgramInterfaceivRobustANGLE_length(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID program,
                                                     GLenum programInterface,
@@ -1297,7 +1297,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramInterfaceivRobustANGLE_params(const Context *context,
+void CaptureGetProgramInterfaceivRobustANGLE_params(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID program,
                                                     GLenum programInterface,
@@ -1310,7 +1310,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBooleani_vRobustANGLE_length(const Context *context,
+void CaptureGetBooleani_vRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             GLenum target,
                                             GLuint index,
@@ -1322,7 +1322,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBooleani_vRobustANGLE_data(const Context *context,
+void CaptureGetBooleani_vRobustANGLE_data(const State &glState,
                                           bool isCallValid,
                                           GLenum target,
                                           GLuint index,
@@ -1334,7 +1334,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetMultisamplefvRobustANGLE_length(const Context *context,
+void CaptureGetMultisamplefvRobustANGLE_length(const State &glState,
                                                bool isCallValid,
                                                GLenum pname,
                                                GLuint index,
@@ -1346,7 +1346,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetMultisamplefvRobustANGLE_val(const Context *context,
+void CaptureGetMultisamplefvRobustANGLE_val(const State &glState,
                                             bool isCallValid,
                                             GLenum pname,
                                             GLuint index,
@@ -1358,7 +1358,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexLevelParameterivRobustANGLE_length(const Context *context,
+void CaptureGetTexLevelParameterivRobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -1371,7 +1371,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexLevelParameterivRobustANGLE_params(const Context *context,
+void CaptureGetTexLevelParameterivRobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -1384,7 +1384,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexLevelParameterfvRobustANGLE_length(const Context *context,
+void CaptureGetTexLevelParameterfvRobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -1397,7 +1397,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexLevelParameterfvRobustANGLE_params(const Context *context,
+void CaptureGetTexLevelParameterfvRobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      TextureTarget targetPacked,
                                                      GLint level,
@@ -1410,7 +1410,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetPointervRobustANGLERobustANGLE_length(const Context *context,
+void CaptureGetPointervRobustANGLERobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      GLenum pname,
                                                      GLsizei bufSize,
@@ -1421,7 +1421,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetPointervRobustANGLERobustANGLE_params(const Context *context,
+void CaptureGetPointervRobustANGLERobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      GLenum pname,
                                                      GLsizei bufSize,
@@ -1432,7 +1432,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadnPixelsRobustANGLE_length(const Context *context,
+void CaptureReadnPixelsRobustANGLE_length(const State &glState,
                                           bool isCallValid,
                                           GLint x,
                                           GLint y,
@@ -1450,7 +1450,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadnPixelsRobustANGLE_columns(const Context *context,
+void CaptureReadnPixelsRobustANGLE_columns(const State &glState,
                                            bool isCallValid,
                                            GLint x,
                                            GLint y,
@@ -1468,7 +1468,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadnPixelsRobustANGLE_rows(const Context *context,
+void CaptureReadnPixelsRobustANGLE_rows(const State &glState,
                                         bool isCallValid,
                                         GLint x,
                                         GLint y,
@@ -1486,7 +1486,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadnPixelsRobustANGLE_data(const Context *context,
+void CaptureReadnPixelsRobustANGLE_data(const State &glState,
                                         bool isCallValid,
                                         GLint x,
                                         GLint y,
@@ -1504,7 +1504,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformfvRobustANGLE_length(const Context *context,
+void CaptureGetnUniformfvRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -1516,7 +1516,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformfvRobustANGLE_params(const Context *context,
+void CaptureGetnUniformfvRobustANGLE_params(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -1528,7 +1528,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformivRobustANGLE_length(const Context *context,
+void CaptureGetnUniformivRobustANGLE_length(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -1540,7 +1540,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformivRobustANGLE_params(const Context *context,
+void CaptureGetnUniformivRobustANGLE_params(const State &glState,
                                             bool isCallValid,
                                             ShaderProgramID program,
                                             GLint location,
@@ -1552,7 +1552,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformuivRobustANGLE_length(const Context *context,
+void CaptureGetnUniformuivRobustANGLE_length(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLint location,
@@ -1564,7 +1564,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformuivRobustANGLE_params(const Context *context,
+void CaptureGetnUniformuivRobustANGLE_params(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLint location,
@@ -1576,7 +1576,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameterIivRobustANGLE_params(const Context *context,
+void CaptureTexParameterIivRobustANGLE_params(const State &glState,
                                               bool isCallValid,
                                               TextureType targetPacked,
                                               GLenum pname,
@@ -1587,7 +1587,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameterIuivRobustANGLE_params(const Context *context,
+void CaptureTexParameterIuivRobustANGLE_params(const State &glState,
                                                bool isCallValid,
                                                TextureType targetPacked,
                                                GLenum pname,
@@ -1598,7 +1598,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterIivRobustANGLE_length(const Context *context,
+void CaptureGetTexParameterIivRobustANGLE_length(const State &glState,
                                                  bool isCallValid,
                                                  TextureType targetPacked,
                                                  GLenum pname,
@@ -1610,7 +1610,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterIivRobustANGLE_params(const Context *context,
+void CaptureGetTexParameterIivRobustANGLE_params(const State &glState,
                                                  bool isCallValid,
                                                  TextureType targetPacked,
                                                  GLenum pname,
@@ -1622,7 +1622,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterIuivRobustANGLE_length(const Context *context,
+void CaptureGetTexParameterIuivRobustANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   TextureType targetPacked,
                                                   GLenum pname,
@@ -1634,7 +1634,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterIuivRobustANGLE_params(const Context *context,
+void CaptureGetTexParameterIuivRobustANGLE_params(const State &glState,
                                                   bool isCallValid,
                                                   TextureType targetPacked,
                                                   GLenum pname,
@@ -1646,7 +1646,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameterIivRobustANGLE_param(const Context *context,
+void CaptureSamplerParameterIivRobustANGLE_param(const State &glState,
                                                  bool isCallValid,
                                                  SamplerID sampler,
                                                  GLenum pname,
@@ -1657,7 +1657,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameterIuivRobustANGLE_param(const Context *context,
+void CaptureSamplerParameterIuivRobustANGLE_param(const State &glState,
                                                   bool isCallValid,
                                                   SamplerID sampler,
                                                   GLenum pname,
@@ -1668,7 +1668,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterIivRobustANGLE_length(const Context *context,
+void CaptureGetSamplerParameterIivRobustANGLE_length(const State &glState,
                                                      bool isCallValid,
                                                      SamplerID sampler,
                                                      GLenum pname,
@@ -1680,7 +1680,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterIivRobustANGLE_params(const Context *context,
+void CaptureGetSamplerParameterIivRobustANGLE_params(const State &glState,
                                                      bool isCallValid,
                                                      SamplerID sampler,
                                                      GLenum pname,
@@ -1692,7 +1692,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterIuivRobustANGLE_length(const Context *context,
+void CaptureGetSamplerParameterIuivRobustANGLE_length(const State &glState,
                                                       bool isCallValid,
                                                       SamplerID sampler,
                                                       GLenum pname,
@@ -1704,7 +1704,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterIuivRobustANGLE_params(const Context *context,
+void CaptureGetSamplerParameterIuivRobustANGLE_params(const State &glState,
                                                       bool isCallValid,
                                                       SamplerID sampler,
                                                       GLenum pname,
@@ -1716,7 +1716,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectivRobustANGLE_length(const Context *context,
+void CaptureGetQueryObjectivRobustANGLE_length(const State &glState,
                                                bool isCallValid,
                                                QueryID id,
                                                GLenum pname,
@@ -1728,7 +1728,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectivRobustANGLE_params(const Context *context,
+void CaptureGetQueryObjectivRobustANGLE_params(const State &glState,
                                                bool isCallValid,
                                                QueryID id,
                                                GLenum pname,
@@ -1740,7 +1740,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjecti64vRobustANGLE_length(const Context *context,
+void CaptureGetQueryObjecti64vRobustANGLE_length(const State &glState,
                                                  bool isCallValid,
                                                  QueryID id,
                                                  GLenum pname,
@@ -1752,7 +1752,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjecti64vRobustANGLE_params(const Context *context,
+void CaptureGetQueryObjecti64vRobustANGLE_params(const State &glState,
                                                  bool isCallValid,
                                                  QueryID id,
                                                  GLenum pname,
@@ -1764,7 +1764,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectui64vRobustANGLE_length(const Context *context,
+void CaptureGetQueryObjectui64vRobustANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   QueryID id,
                                                   GLenum pname,
@@ -1776,7 +1776,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectui64vRobustANGLE_params(const Context *context,
+void CaptureGetQueryObjectui64vRobustANGLE_params(const State &glState,
                                                   bool isCallValid,
                                                   QueryID id,
                                                   GLenum pname,
@@ -1788,7 +1788,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexLevelParameterivANGLE_params(const Context *context,
+void CaptureGetTexLevelParameterivANGLE_params(const State &glState,
                                                bool isCallValid,
                                                TextureTarget targetPacked,
                                                GLint level,
@@ -1799,7 +1799,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexLevelParameterfvANGLE_params(const Context *context,
+void CaptureGetTexLevelParameterfvANGLE_params(const State &glState,
                                                bool isCallValid,
                                                TextureTarget targetPacked,
                                                GLint level,
@@ -1810,7 +1810,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetMultisamplefvANGLE_val(const Context *context,
+void CaptureGetMultisamplefvANGLE_val(const State &glState,
                                       bool isCallValid,
                                       GLenum pname,
                                       GLuint index,
@@ -1820,7 +1820,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTranslatedShaderSourceANGLE_length(const Context *context,
+void CaptureGetTranslatedShaderSourceANGLE_length(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID shader,
                                                   GLsizei bufsize,
@@ -1831,7 +1831,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTranslatedShaderSourceANGLE_source(const Context *context,
+void CaptureGetTranslatedShaderSourceANGLE_source(const State &glState,
                                                   bool isCallValid,
                                                   ShaderProgramID shader,
                                                   GLsizei bufsize,
@@ -1842,7 +1842,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureBindUniformLocationCHROMIUM_name(const Context *context,
+void CaptureBindUniformLocationCHROMIUM_name(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLint location,
@@ -1852,7 +1852,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMatrixLoadfCHROMIUM_matrix(const Context *context,
+void CaptureMatrixLoadfCHROMIUM_matrix(const State &glState,
                                        bool isCallValid,
                                        GLenum matrixMode,
                                        const GLfloat *matrix,
@@ -1861,7 +1861,7 @@
     UNIMPLEMENTED();
 }
 
-void CapturePathCommandsCHROMIUM_commands(const Context *context,
+void CapturePathCommandsCHROMIUM_commands(const State &glState,
                                           bool isCallValid,
                                           PathID path,
                                           GLsizei numCommands,
@@ -1874,7 +1874,7 @@
     UNIMPLEMENTED();
 }
 
-void CapturePathCommandsCHROMIUM_coords(const Context *context,
+void CapturePathCommandsCHROMIUM_coords(const State &glState,
                                         bool isCallValid,
                                         PathID path,
                                         GLsizei numCommands,
@@ -1887,7 +1887,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetPathParameterfvCHROMIUM_value(const Context *context,
+void CaptureGetPathParameterfvCHROMIUM_value(const State &glState,
                                              bool isCallValid,
                                              PathID path,
                                              GLenum pname,
@@ -1897,7 +1897,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetPathParameterivCHROMIUM_value(const Context *context,
+void CaptureGetPathParameterivCHROMIUM_value(const State &glState,
                                              bool isCallValid,
                                              PathID path,
                                              GLenum pname,
@@ -1907,7 +1907,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCoverFillPathInstancedCHROMIUM_paths(const Context *context,
+void CaptureCoverFillPathInstancedCHROMIUM_paths(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei numPath,
                                                  GLenum pathNameType,
@@ -1921,7 +1921,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCoverFillPathInstancedCHROMIUM_transformValues(const Context *context,
+void CaptureCoverFillPathInstancedCHROMIUM_transformValues(const State &glState,
                                                            bool isCallValid,
                                                            GLsizei numPath,
                                                            GLenum pathNameType,
@@ -1935,7 +1935,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCoverStrokePathInstancedCHROMIUM_paths(const Context *context,
+void CaptureCoverStrokePathInstancedCHROMIUM_paths(const State &glState,
                                                    bool isCallValid,
                                                    GLsizei numPath,
                                                    GLenum pathNameType,
@@ -1949,7 +1949,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCoverStrokePathInstancedCHROMIUM_transformValues(const Context *context,
+void CaptureCoverStrokePathInstancedCHROMIUM_transformValues(const State &glState,
                                                              bool isCallValid,
                                                              GLsizei numPath,
                                                              GLenum pathNameType,
@@ -1963,7 +1963,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureStencilStrokePathInstancedCHROMIUM_paths(const Context *context,
+void CaptureStencilStrokePathInstancedCHROMIUM_paths(const State &glState,
                                                      bool isCallValid,
                                                      GLsizei numPath,
                                                      GLenum pathNameType,
@@ -1978,7 +1978,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureStencilStrokePathInstancedCHROMIUM_transformValues(const Context *context,
+void CaptureStencilStrokePathInstancedCHROMIUM_transformValues(const State &glState,
                                                                bool isCallValid,
                                                                GLsizei numPath,
                                                                GLenum pathNameType,
@@ -1993,7 +1993,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureStencilFillPathInstancedCHROMIUM_paths(const Context *context,
+void CaptureStencilFillPathInstancedCHROMIUM_paths(const State &glState,
                                                    bool isCallValid,
                                                    GLsizei numPaths,
                                                    GLenum pathNameType,
@@ -2008,7 +2008,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureStencilFillPathInstancedCHROMIUM_transformValues(const Context *context,
+void CaptureStencilFillPathInstancedCHROMIUM_transformValues(const State &glState,
                                                              bool isCallValid,
                                                              GLsizei numPaths,
                                                              GLenum pathNameType,
@@ -2023,7 +2023,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureStencilThenCoverFillPathInstancedCHROMIUM_paths(const Context *context,
+void CaptureStencilThenCoverFillPathInstancedCHROMIUM_paths(const State &glState,
                                                             bool isCallValid,
                                                             GLsizei numPaths,
                                                             GLenum pathNameType,
@@ -2040,7 +2040,7 @@
 }
 
 void CaptureStencilThenCoverFillPathInstancedCHROMIUM_transformValues(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     GLsizei numPaths,
     GLenum pathNameType,
@@ -2056,7 +2056,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureStencilThenCoverStrokePathInstancedCHROMIUM_paths(const Context *context,
+void CaptureStencilThenCoverStrokePathInstancedCHROMIUM_paths(const State &glState,
                                                               bool isCallValid,
                                                               GLsizei numPaths,
                                                               GLenum pathNameType,
@@ -2073,7 +2073,7 @@
 }
 
 void CaptureStencilThenCoverStrokePathInstancedCHROMIUM_transformValues(
-    const Context *context,
+    const State &glState,
     bool isCallValid,
     GLsizei numPaths,
     GLenum pathNameType,
@@ -2089,7 +2089,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureBindFragmentInputLocationCHROMIUM_name(const Context *context,
+void CaptureBindFragmentInputLocationCHROMIUM_name(const State &glState,
                                                    bool isCallValid,
                                                    ShaderProgramID programs,
                                                    GLint location,
@@ -2099,7 +2099,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramPathFragmentInputGenCHROMIUM_coeffs(const Context *context,
+void CaptureProgramPathFragmentInputGenCHROMIUM_coeffs(const State &glState,
                                                        bool isCallValid,
                                                        ShaderProgramID program,
                                                        GLint location,
@@ -2111,7 +2111,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureBindFragDataLocationEXT_name(const Context *context,
+void CaptureBindFragDataLocationEXT_name(const State &glState,
                                          bool isCallValid,
                                          ShaderProgramID program,
                                          GLuint color,
@@ -2121,7 +2121,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureBindFragDataLocationIndexedEXT_name(const Context *context,
+void CaptureBindFragDataLocationIndexedEXT_name(const State &glState,
                                                 bool isCallValid,
                                                 ShaderProgramID program,
                                                 GLuint colorNumber,
@@ -2132,7 +2132,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFragDataIndexEXT_name(const Context *context,
+void CaptureGetFragDataIndexEXT_name(const State &glState,
                                      bool isCallValid,
                                      ShaderProgramID program,
                                      const GLchar *name,
@@ -2141,7 +2141,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramResourceLocationIndexEXT_name(const Context *context,
+void CaptureGetProgramResourceLocationIndexEXT_name(const State &glState,
                                                     bool isCallValid,
                                                     ShaderProgramID program,
                                                     GLenum programInterface,
@@ -2151,7 +2151,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureInsertEventMarkerEXT_marker(const Context *context,
+void CaptureInsertEventMarkerEXT_marker(const State &glState,
                                         bool isCallValid,
                                         GLsizei length,
                                         const GLchar *marker,
@@ -2160,7 +2160,7 @@
     UNIMPLEMENTED();
 }
 
-void CapturePushGroupMarkerEXT_marker(const Context *context,
+void CapturePushGroupMarkerEXT_marker(const State &glState,
                                       bool isCallValid,
                                       GLsizei length,
                                       const GLchar *marker,
@@ -2169,7 +2169,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDiscardFramebufferEXT_attachments(const Context *context,
+void CaptureDiscardFramebufferEXT_attachments(const State &glState,
                                               bool isCallValid,
                                               GLenum target,
                                               GLsizei numAttachments,
@@ -2179,7 +2179,7 @@
     CaptureMemory(attachments, sizeof(GLenum) * numAttachments, paramCapture);
 }
 
-void CaptureDeleteQueriesEXT_idsPacked(const Context *context,
+void CaptureDeleteQueriesEXT_idsPacked(const State &glState,
                                        bool isCallValid,
                                        GLsizei n,
                                        const QueryID *ids,
@@ -2188,7 +2188,7 @@
     CaptureMemory(ids, sizeof(QueryID) * n, paramCapture);
 }
 
-void CaptureGenQueriesEXT_idsPacked(const Context *context,
+void CaptureGenQueriesEXT_idsPacked(const State &glState,
                                     bool isCallValid,
                                     GLsizei n,
                                     QueryID *ids,
@@ -2197,7 +2197,7 @@
     CaptureGenHandles(n, ids, paramCapture);
 }
 
-void CaptureGetQueryObjecti64vEXT_params(const Context *context,
+void CaptureGetQueryObjecti64vEXT_params(const State &glState,
                                          bool isCallValid,
                                          QueryID id,
                                          GLenum pname,
@@ -2207,7 +2207,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectivEXT_params(const Context *context,
+void CaptureGetQueryObjectivEXT_params(const State &glState,
                                        bool isCallValid,
                                        QueryID id,
                                        GLenum pname,
@@ -2217,7 +2217,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectui64vEXT_params(const Context *context,
+void CaptureGetQueryObjectui64vEXT_params(const State &glState,
                                           bool isCallValid,
                                           QueryID id,
                                           GLenum pname,
@@ -2227,7 +2227,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryObjectuivEXT_params(const Context *context,
+void CaptureGetQueryObjectuivEXT_params(const State &glState,
                                         bool isCallValid,
                                         QueryID id,
                                         GLenum pname,
@@ -2237,7 +2237,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetQueryivEXT_params(const Context *context,
+void CaptureGetQueryivEXT_params(const State &glState,
                                  bool isCallValid,
                                  QueryType targetPacked,
                                  GLenum pname,
@@ -2247,7 +2247,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawBuffersEXT_bufs(const Context *context,
+void CaptureDrawBuffersEXT_bufs(const State &glState,
                                 bool isCallValid,
                                 GLsizei n,
                                 const GLenum *bufs,
@@ -2256,7 +2256,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawElementsInstancedEXT_indices(const Context *context,
+void CaptureDrawElementsInstancedEXT_indices(const State &glState,
                                              bool isCallValid,
                                              PrimitiveMode modePacked,
                                              GLsizei count,
@@ -2268,7 +2268,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCreateMemoryObjectsEXT_memoryObjectsPacked(const Context *context,
+void CaptureCreateMemoryObjectsEXT_memoryObjectsPacked(const State &glState,
                                                        bool isCallValid,
                                                        GLsizei n,
                                                        MemoryObjectID *memoryObjects,
@@ -2277,7 +2277,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDeleteMemoryObjectsEXT_memoryObjectsPacked(const Context *context,
+void CaptureDeleteMemoryObjectsEXT_memoryObjectsPacked(const State &glState,
                                                        bool isCallValid,
                                                        GLsizei n,
                                                        const MemoryObjectID *memoryObjects,
@@ -2286,7 +2286,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetMemoryObjectParameterivEXT_params(const Context *context,
+void CaptureGetMemoryObjectParameterivEXT_params(const State &glState,
                                                  bool isCallValid,
                                                  MemoryObjectID memoryObject,
                                                  GLenum pname,
@@ -2296,7 +2296,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUnsignedBytevEXT_data(const Context *context,
+void CaptureGetUnsignedBytevEXT_data(const State &glState,
                                      bool isCallValid,
                                      GLenum pname,
                                      GLubyte *data,
@@ -2305,7 +2305,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetUnsignedBytei_vEXT_data(const Context *context,
+void CaptureGetUnsignedBytei_vEXT_data(const State &glState,
                                        bool isCallValid,
                                        GLenum target,
                                        GLuint index,
@@ -2315,7 +2315,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMemoryObjectParameterivEXT_params(const Context *context,
+void CaptureMemoryObjectParameterivEXT_params(const State &glState,
                                               bool isCallValid,
                                               MemoryObjectID memoryObject,
                                               GLenum pname,
@@ -2325,7 +2325,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformfvEXT_params(const Context *context,
+void CaptureGetnUniformfvEXT_params(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -2336,7 +2336,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetnUniformivEXT_params(const Context *context,
+void CaptureGetnUniformivEXT_params(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLint location,
@@ -2347,7 +2347,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureReadnPixelsEXT_data(const Context *context,
+void CaptureReadnPixelsEXT_data(const State &glState,
                                 bool isCallValid,
                                 GLint x,
                                 GLint y,
@@ -2362,7 +2362,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDeleteSemaphoresEXT_semaphoresPacked(const Context *context,
+void CaptureDeleteSemaphoresEXT_semaphoresPacked(const State &glState,
                                                  bool isCallValid,
                                                  GLsizei n,
                                                  const SemaphoreID *semaphores,
@@ -2371,7 +2371,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGenSemaphoresEXT_semaphoresPacked(const Context *context,
+void CaptureGenSemaphoresEXT_semaphoresPacked(const State &glState,
                                               bool isCallValid,
                                               GLsizei n,
                                               SemaphoreID *semaphores,
@@ -2380,7 +2380,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSemaphoreParameterui64vEXT_params(const Context *context,
+void CaptureGetSemaphoreParameterui64vEXT_params(const State &glState,
                                                  bool isCallValid,
                                                  SemaphoreID semaphore,
                                                  GLenum pname,
@@ -2390,7 +2390,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSemaphoreParameterui64vEXT_params(const Context *context,
+void CaptureSemaphoreParameterui64vEXT_params(const State &glState,
                                               bool isCallValid,
                                               SemaphoreID semaphore,
                                               GLenum pname,
@@ -2400,7 +2400,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSignalSemaphoreEXT_buffersPacked(const Context *context,
+void CaptureSignalSemaphoreEXT_buffersPacked(const State &glState,
                                              bool isCallValid,
                                              SemaphoreID semaphore,
                                              GLuint numBufferBarriers,
@@ -2413,7 +2413,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSignalSemaphoreEXT_texturesPacked(const Context *context,
+void CaptureSignalSemaphoreEXT_texturesPacked(const State &glState,
                                               bool isCallValid,
                                               SemaphoreID semaphore,
                                               GLuint numBufferBarriers,
@@ -2426,7 +2426,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSignalSemaphoreEXT_dstLayouts(const Context *context,
+void CaptureSignalSemaphoreEXT_dstLayouts(const State &glState,
                                           bool isCallValid,
                                           SemaphoreID semaphore,
                                           GLuint numBufferBarriers,
@@ -2439,7 +2439,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureWaitSemaphoreEXT_buffersPacked(const Context *context,
+void CaptureWaitSemaphoreEXT_buffersPacked(const State &glState,
                                            bool isCallValid,
                                            SemaphoreID semaphore,
                                            GLuint numBufferBarriers,
@@ -2452,7 +2452,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureWaitSemaphoreEXT_texturesPacked(const Context *context,
+void CaptureWaitSemaphoreEXT_texturesPacked(const State &glState,
                                             bool isCallValid,
                                             SemaphoreID semaphore,
                                             GLuint numBufferBarriers,
@@ -2465,7 +2465,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureWaitSemaphoreEXT_srcLayouts(const Context *context,
+void CaptureWaitSemaphoreEXT_srcLayouts(const State &glState,
                                         bool isCallValid,
                                         SemaphoreID semaphore,
                                         GLuint numBufferBarriers,
@@ -2478,7 +2478,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDebugMessageCallbackKHR_userParam(const Context *context,
+void CaptureDebugMessageCallbackKHR_userParam(const State &glState,
                                               bool isCallValid,
                                               GLDEBUGPROCKHR callback,
                                               const void *userParam,
@@ -2487,7 +2487,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDebugMessageControlKHR_ids(const Context *context,
+void CaptureDebugMessageControlKHR_ids(const State &glState,
                                        bool isCallValid,
                                        GLenum source,
                                        GLenum type,
@@ -2500,7 +2500,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDebugMessageInsertKHR_buf(const Context *context,
+void CaptureDebugMessageInsertKHR_buf(const State &glState,
                                       bool isCallValid,
                                       GLenum source,
                                       GLenum type,
@@ -2513,7 +2513,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLogKHR_sources(const Context *context,
+void CaptureGetDebugMessageLogKHR_sources(const State &glState,
                                           bool isCallValid,
                                           GLuint count,
                                           GLsizei bufSize,
@@ -2528,7 +2528,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLogKHR_types(const Context *context,
+void CaptureGetDebugMessageLogKHR_types(const State &glState,
                                         bool isCallValid,
                                         GLuint count,
                                         GLsizei bufSize,
@@ -2543,7 +2543,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLogKHR_ids(const Context *context,
+void CaptureGetDebugMessageLogKHR_ids(const State &glState,
                                       bool isCallValid,
                                       GLuint count,
                                       GLsizei bufSize,
@@ -2558,7 +2558,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLogKHR_severities(const Context *context,
+void CaptureGetDebugMessageLogKHR_severities(const State &glState,
                                              bool isCallValid,
                                              GLuint count,
                                              GLsizei bufSize,
@@ -2573,7 +2573,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLogKHR_lengths(const Context *context,
+void CaptureGetDebugMessageLogKHR_lengths(const State &glState,
                                           bool isCallValid,
                                           GLuint count,
                                           GLsizei bufSize,
@@ -2588,7 +2588,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetDebugMessageLogKHR_messageLog(const Context *context,
+void CaptureGetDebugMessageLogKHR_messageLog(const State &glState,
                                              bool isCallValid,
                                              GLuint count,
                                              GLsizei bufSize,
@@ -2603,7 +2603,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectLabelKHR_length(const Context *context,
+void CaptureGetObjectLabelKHR_length(const State &glState,
                                      bool isCallValid,
                                      GLenum identifier,
                                      GLuint name,
@@ -2615,7 +2615,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectLabelKHR_label(const Context *context,
+void CaptureGetObjectLabelKHR_label(const State &glState,
                                     bool isCallValid,
                                     GLenum identifier,
                                     GLuint name,
@@ -2627,7 +2627,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectPtrLabelKHR_ptr(const Context *context,
+void CaptureGetObjectPtrLabelKHR_ptr(const State &glState,
                                      bool isCallValid,
                                      const void *ptr,
                                      GLsizei bufSize,
@@ -2638,7 +2638,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectPtrLabelKHR_length(const Context *context,
+void CaptureGetObjectPtrLabelKHR_length(const State &glState,
                                         bool isCallValid,
                                         const void *ptr,
                                         GLsizei bufSize,
@@ -2649,7 +2649,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetObjectPtrLabelKHR_label(const Context *context,
+void CaptureGetObjectPtrLabelKHR_label(const State &glState,
                                        bool isCallValid,
                                        const void *ptr,
                                        GLsizei bufSize,
@@ -2660,7 +2660,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetPointervKHR_params(const Context *context,
+void CaptureGetPointervKHR_params(const State &glState,
                                   bool isCallValid,
                                   GLenum pname,
                                   void **params,
@@ -2669,7 +2669,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureObjectLabelKHR_label(const Context *context,
+void CaptureObjectLabelKHR_label(const State &glState,
                                  bool isCallValid,
                                  GLenum identifier,
                                  GLuint name,
@@ -2680,7 +2680,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureObjectPtrLabelKHR_ptr(const Context *context,
+void CaptureObjectPtrLabelKHR_ptr(const State &glState,
                                   bool isCallValid,
                                   const void *ptr,
                                   GLsizei length,
@@ -2690,7 +2690,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureObjectPtrLabelKHR_label(const Context *context,
+void CaptureObjectPtrLabelKHR_label(const State &glState,
                                     bool isCallValid,
                                     const void *ptr,
                                     GLsizei length,
@@ -2700,7 +2700,7 @@
     UNIMPLEMENTED();
 }
 
-void CapturePushDebugGroupKHR_message(const Context *context,
+void CapturePushDebugGroupKHR_message(const State &glState,
                                       bool isCallValid,
                                       GLenum source,
                                       GLuint id,
@@ -2711,7 +2711,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDeleteFencesNV_fencesPacked(const Context *context,
+void CaptureDeleteFencesNV_fencesPacked(const State &glState,
                                         bool isCallValid,
                                         GLsizei n,
                                         const FenceNVID *fences,
@@ -2720,7 +2720,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGenFencesNV_fencesPacked(const Context *context,
+void CaptureGenFencesNV_fencesPacked(const State &glState,
                                      bool isCallValid,
                                      GLsizei n,
                                      FenceNVID *fences,
@@ -2729,7 +2729,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFenceivNV_params(const Context *context,
+void CaptureGetFenceivNV_params(const State &glState,
                                 bool isCallValid,
                                 FenceNVID fence,
                                 GLenum pname,
@@ -2739,7 +2739,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawTexfvOES_coords(const Context *context,
+void CaptureDrawTexfvOES_coords(const State &glState,
                                 bool isCallValid,
                                 const GLfloat *coords,
                                 ParamCapture *paramCapture)
@@ -2747,7 +2747,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawTexivOES_coords(const Context *context,
+void CaptureDrawTexivOES_coords(const State &glState,
                                 bool isCallValid,
                                 const GLint *coords,
                                 ParamCapture *paramCapture)
@@ -2755,7 +2755,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawTexsvOES_coords(const Context *context,
+void CaptureDrawTexsvOES_coords(const State &glState,
                                 bool isCallValid,
                                 const GLshort *coords,
                                 ParamCapture *paramCapture)
@@ -2763,7 +2763,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDrawTexxvOES_coords(const Context *context,
+void CaptureDrawTexxvOES_coords(const State &glState,
                                 bool isCallValid,
                                 const GLfixed *coords,
                                 ParamCapture *paramCapture)
@@ -2771,7 +2771,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDeleteFramebuffersOES_framebuffersPacked(const Context *context,
+void CaptureDeleteFramebuffersOES_framebuffersPacked(const State &glState,
                                                      bool isCallValid,
                                                      GLsizei n,
                                                      const FramebufferID *framebuffers,
@@ -2780,7 +2780,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDeleteRenderbuffersOES_renderbuffersPacked(const Context *context,
+void CaptureDeleteRenderbuffersOES_renderbuffersPacked(const State &glState,
                                                        bool isCallValid,
                                                        GLsizei n,
                                                        const RenderbufferID *renderbuffers,
@@ -2789,7 +2789,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGenFramebuffersOES_framebuffersPacked(const Context *context,
+void CaptureGenFramebuffersOES_framebuffersPacked(const State &glState,
                                                   bool isCallValid,
                                                   GLsizei n,
                                                   FramebufferID *framebuffers,
@@ -2798,7 +2798,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGenRenderbuffersOES_renderbuffersPacked(const Context *context,
+void CaptureGenRenderbuffersOES_renderbuffersPacked(const State &glState,
                                                     bool isCallValid,
                                                     GLsizei n,
                                                     RenderbufferID *renderbuffers,
@@ -2807,7 +2807,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetFramebufferAttachmentParameterivOES_params(const Context *context,
+void CaptureGetFramebufferAttachmentParameterivOES_params(const State &glState,
                                                           bool isCallValid,
                                                           GLenum target,
                                                           GLenum attachment,
@@ -2818,7 +2818,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetRenderbufferParameterivOES_params(const Context *context,
+void CaptureGetRenderbufferParameterivOES_params(const State &glState,
                                                  bool isCallValid,
                                                  GLenum target,
                                                  GLenum pname,
@@ -2828,7 +2828,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramBinaryOES_length(const Context *context,
+void CaptureGetProgramBinaryOES_length(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID program,
                                        GLsizei bufSize,
@@ -2840,7 +2840,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramBinaryOES_binaryFormat(const Context *context,
+void CaptureGetProgramBinaryOES_binaryFormat(const State &glState,
                                              bool isCallValid,
                                              ShaderProgramID program,
                                              GLsizei bufSize,
@@ -2852,7 +2852,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetProgramBinaryOES_binary(const Context *context,
+void CaptureGetProgramBinaryOES_binary(const State &glState,
                                        bool isCallValid,
                                        ShaderProgramID program,
                                        GLsizei bufSize,
@@ -2864,7 +2864,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureProgramBinaryOES_binary(const Context *context,
+void CaptureProgramBinaryOES_binary(const State &glState,
                                     bool isCallValid,
                                     ShaderProgramID program,
                                     GLenum binaryFormat,
@@ -2875,7 +2875,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetBufferPointervOES_params(const Context *context,
+void CaptureGetBufferPointervOES_params(const State &glState,
                                         bool isCallValid,
                                         BufferBinding targetPacked,
                                         GLenum pname,
@@ -2885,7 +2885,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureMatrixIndexPointerOES_pointer(const Context *context,
+void CaptureMatrixIndexPointerOES_pointer(const State &glState,
                                           bool isCallValid,
                                           GLint size,
                                           GLenum type,
@@ -2896,7 +2896,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureWeightPointerOES_pointer(const Context *context,
+void CaptureWeightPointerOES_pointer(const State &glState,
                                      bool isCallValid,
                                      GLint size,
                                      GLenum type,
@@ -2907,7 +2907,7 @@
     UNIMPLEMENTED();
 }
 
-void CapturePointSizePointerOES_pointer(const Context *context,
+void CapturePointSizePointerOES_pointer(const State &glState,
                                         bool isCallValid,
                                         VertexAttribType typePacked,
                                         GLsizei stride,
@@ -2917,7 +2917,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureQueryMatrixxOES_mantissa(const Context *context,
+void CaptureQueryMatrixxOES_mantissa(const State &glState,
                                      bool isCallValid,
                                      GLfixed *mantissa,
                                      GLint *exponent,
@@ -2926,7 +2926,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureQueryMatrixxOES_exponent(const Context *context,
+void CaptureQueryMatrixxOES_exponent(const State &glState,
                                      bool isCallValid,
                                      GLfixed *mantissa,
                                      GLint *exponent,
@@ -2935,7 +2935,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCompressedTexImage3DOES_data(const Context *context,
+void CaptureCompressedTexImage3DOES_data(const State &glState,
                                          bool isCallValid,
                                          TextureTarget targetPacked,
                                          GLint level,
@@ -2951,7 +2951,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureCompressedTexSubImage3DOES_data(const Context *context,
+void CaptureCompressedTexSubImage3DOES_data(const State &glState,
                                             bool isCallValid,
                                             TextureTarget targetPacked,
                                             GLint level,
@@ -2969,7 +2969,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexImage3DOES_pixels(const Context *context,
+void CaptureTexImage3DOES_pixels(const State &glState,
                                  bool isCallValid,
                                  TextureTarget targetPacked,
                                  GLint level,
@@ -2986,7 +2986,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexSubImage3DOES_pixels(const Context *context,
+void CaptureTexSubImage3DOES_pixels(const State &glState,
                                     bool isCallValid,
                                     TextureTarget targetPacked,
                                     GLint level,
@@ -3004,7 +3004,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterIivOES_params(const Context *context,
+void CaptureGetSamplerParameterIivOES_params(const State &glState,
                                              bool isCallValid,
                                              SamplerID sampler,
                                              GLenum pname,
@@ -3014,7 +3014,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetSamplerParameterIuivOES_params(const Context *context,
+void CaptureGetSamplerParameterIuivOES_params(const State &glState,
                                               bool isCallValid,
                                               SamplerID sampler,
                                               GLenum pname,
@@ -3024,7 +3024,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterIivOES_params(const Context *context,
+void CaptureGetTexParameterIivOES_params(const State &glState,
                                          bool isCallValid,
                                          TextureType targetPacked,
                                          GLenum pname,
@@ -3034,7 +3034,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexParameterIuivOES_params(const Context *context,
+void CaptureGetTexParameterIuivOES_params(const State &glState,
                                           bool isCallValid,
                                           TextureType targetPacked,
                                           GLenum pname,
@@ -3044,7 +3044,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameterIivOES_param(const Context *context,
+void CaptureSamplerParameterIivOES_param(const State &glState,
                                          bool isCallValid,
                                          SamplerID sampler,
                                          GLenum pname,
@@ -3054,7 +3054,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureSamplerParameterIuivOES_param(const Context *context,
+void CaptureSamplerParameterIuivOES_param(const State &glState,
                                           bool isCallValid,
                                           SamplerID sampler,
                                           GLenum pname,
@@ -3064,7 +3064,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameterIivOES_params(const Context *context,
+void CaptureTexParameterIivOES_params(const State &glState,
                                       bool isCallValid,
                                       TextureType targetPacked,
                                       GLenum pname,
@@ -3074,7 +3074,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexParameterIuivOES_params(const Context *context,
+void CaptureTexParameterIuivOES_params(const State &glState,
                                        bool isCallValid,
                                        TextureType targetPacked,
                                        GLenum pname,
@@ -3084,7 +3084,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexGenfvOES_params(const Context *context,
+void CaptureGetTexGenfvOES_params(const State &glState,
                                   bool isCallValid,
                                   GLenum coord,
                                   GLenum pname,
@@ -3094,7 +3094,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexGenivOES_params(const Context *context,
+void CaptureGetTexGenivOES_params(const State &glState,
                                   bool isCallValid,
                                   GLenum coord,
                                   GLenum pname,
@@ -3104,7 +3104,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexGenxvOES_params(const Context *context,
+void CaptureGetTexGenxvOES_params(const State &glState,
                                   bool isCallValid,
                                   GLenum coord,
                                   GLenum pname,
@@ -3114,7 +3114,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexGenfvOES_params(const Context *context,
+void CaptureTexGenfvOES_params(const State &glState,
                                bool isCallValid,
                                GLenum coord,
                                GLenum pname,
@@ -3124,7 +3124,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexGenivOES_params(const Context *context,
+void CaptureTexGenivOES_params(const State &glState,
                                bool isCallValid,
                                GLenum coord,
                                GLenum pname,
@@ -3134,7 +3134,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureTexGenxvOES_params(const Context *context,
+void CaptureTexGenxvOES_params(const State &glState,
                                bool isCallValid,
                                GLenum coord,
                                GLenum pname,
@@ -3144,7 +3144,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureDeleteVertexArraysOES_arraysPacked(const Context *context,
+void CaptureDeleteVertexArraysOES_arraysPacked(const State &glState,
                                                bool isCallValid,
                                                GLsizei n,
                                                const VertexArrayID *arrays,
@@ -3153,7 +3153,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGenVertexArraysOES_arraysPacked(const Context *context,
+void CaptureGenVertexArraysOES_arraysPacked(const State &glState,
                                             bool isCallValid,
                                             GLsizei n,
                                             VertexArrayID *arrays,
@@ -3162,7 +3162,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetTexImageANGLE_pixels(const Context *context,
+void CaptureGetTexImageANGLE_pixels(const State &glState,
                                     bool isCallValid,
                                     TextureTarget target,
                                     GLint level,
@@ -3174,7 +3174,7 @@
     UNIMPLEMENTED();
 }
 
-void CaptureGetRenderbufferImageANGLE_pixels(const Context *context,
+void CaptureGetRenderbufferImageANGLE_pixels(const State &glState,
                                              bool isCallValid,
                                              GLenum target,
                                              GLenum format,
diff --git a/src/libANGLE/queryutils.cpp b/src/libANGLE/queryutils.cpp
index babaad3..2e53569 100644
--- a/src/libANGLE/queryutils.cpp
+++ b/src/libANGLE/queryutils.cpp
@@ -2830,6 +2830,769 @@
     }
 }
 
+bool GetQueryParameterInfo(const State &glState,
+                           GLenum pname,
+                           GLenum *type,
+                           unsigned int *numParams)
+{
+    const Caps &caps             = glState.getCaps();
+    const Extensions &extensions = glState.getExtensions();
+    GLint clientMajorVersion     = glState.getClientMajorVersion();
+
+    // Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation
+    // is FLOAT rather than INT, as would be suggested by the GL ES 2.0 spec. This is due
+    // to the fact that it is stored internally as a float, and so would require conversion
+    // if returned from Context::getIntegerv. Since this conversion is already implemented
+    // in the case that one calls glGetIntegerv to retrieve a float-typed state variable, we
+    // place DEPTH_CLEAR_VALUE with the floats. This should make no difference to the calling
+    // application.
+    switch (pname)
+    {
+        case GL_COMPRESSED_TEXTURE_FORMATS:
+        {
+            *type      = GL_INT;
+            *numParams = static_cast<unsigned int>(caps.compressedTextureFormats.size());
+            return true;
+        }
+        case GL_SHADER_BINARY_FORMATS:
+        {
+            *type      = GL_INT;
+            *numParams = static_cast<unsigned int>(caps.shaderBinaryFormats.size());
+            return true;
+        }
+
+        case GL_MAX_VERTEX_ATTRIBS:
+        case GL_MAX_VERTEX_UNIFORM_VECTORS:
+        case GL_MAX_VARYING_VECTORS:
+        case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
+        case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
+        case GL_MAX_TEXTURE_IMAGE_UNITS:
+        case GL_MAX_FRAGMENT_UNIFORM_VECTORS:
+        case GL_MAX_RENDERBUFFER_SIZE:
+        case GL_NUM_SHADER_BINARY_FORMATS:
+        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
+        case GL_ARRAY_BUFFER_BINDING:
+        case GL_FRAMEBUFFER_BINDING:  // GL_FRAMEBUFFER_BINDING now equivalent to
+                                      // GL_DRAW_FRAMEBUFFER_BINDING_ANGLE
+        case GL_RENDERBUFFER_BINDING:
+        case GL_CURRENT_PROGRAM:
+        case GL_PACK_ALIGNMENT:
+        case GL_UNPACK_ALIGNMENT:
+        case GL_GENERATE_MIPMAP_HINT:
+        case GL_RED_BITS:
+        case GL_GREEN_BITS:
+        case GL_BLUE_BITS:
+        case GL_ALPHA_BITS:
+        case GL_DEPTH_BITS:
+        case GL_STENCIL_BITS:
+        case GL_ELEMENT_ARRAY_BUFFER_BINDING:
+        case GL_CULL_FACE_MODE:
+        case GL_FRONT_FACE:
+        case GL_ACTIVE_TEXTURE:
+        case GL_STENCIL_FUNC:
+        case GL_STENCIL_VALUE_MASK:
+        case GL_STENCIL_REF:
+        case GL_STENCIL_FAIL:
+        case GL_STENCIL_PASS_DEPTH_FAIL:
+        case GL_STENCIL_PASS_DEPTH_PASS:
+        case GL_STENCIL_BACK_FUNC:
+        case GL_STENCIL_BACK_VALUE_MASK:
+        case GL_STENCIL_BACK_REF:
+        case GL_STENCIL_BACK_FAIL:
+        case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
+        case GL_STENCIL_BACK_PASS_DEPTH_PASS:
+        case GL_DEPTH_FUNC:
+        case GL_BLEND_SRC_RGB:
+        case GL_BLEND_SRC_ALPHA:
+        case GL_BLEND_DST_RGB:
+        case GL_BLEND_DST_ALPHA:
+        case GL_BLEND_EQUATION_RGB:
+        case GL_BLEND_EQUATION_ALPHA:
+        case GL_STENCIL_WRITEMASK:
+        case GL_STENCIL_BACK_WRITEMASK:
+        case GL_STENCIL_CLEAR_VALUE:
+        case GL_SUBPIXEL_BITS:
+        case GL_MAX_TEXTURE_SIZE:
+        case GL_MAX_CUBE_MAP_TEXTURE_SIZE:
+        case GL_SAMPLE_BUFFERS:
+        case GL_SAMPLES:
+        case GL_IMPLEMENTATION_COLOR_READ_TYPE:
+        case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
+        case GL_TEXTURE_BINDING_2D:
+        case GL_TEXTURE_BINDING_CUBE_MAP:
+        case GL_RESET_NOTIFICATION_STRATEGY_EXT:
+        {
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        }
+        case GL_PACK_REVERSE_ROW_ORDER_ANGLE:
+        {
+            if (!extensions.packReverseRowOrder)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        }
+        case GL_MAX_RECTANGLE_TEXTURE_SIZE_ANGLE:
+        case GL_TEXTURE_BINDING_RECTANGLE_ANGLE:
+        {
+            if (!extensions.textureRectangle)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        }
+        case GL_MAX_DRAW_BUFFERS_EXT:
+        case GL_MAX_COLOR_ATTACHMENTS_EXT:
+        {
+            if ((clientMajorVersion < 3) && !extensions.drawBuffers)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        }
+        case GL_MAX_VIEWPORT_DIMS:
+        {
+            *type      = GL_INT;
+            *numParams = 2;
+            return true;
+        }
+        case GL_VIEWPORT:
+        case GL_SCISSOR_BOX:
+        {
+            *type      = GL_INT;
+            *numParams = 4;
+            return true;
+        }
+        case GL_SHADER_COMPILER:
+        case GL_SAMPLE_COVERAGE_INVERT:
+        case GL_DEPTH_WRITEMASK:
+        case GL_CULL_FACE:                 // CULL_FACE through DITHER are natural to IsEnabled,
+        case GL_POLYGON_OFFSET_FILL:       // but can be retrieved through the Get{Type}v queries.
+        case GL_SAMPLE_ALPHA_TO_COVERAGE:  // For this purpose, they are treated here as
+                                           // bool-natural
+        case GL_SAMPLE_COVERAGE:
+        case GL_SCISSOR_TEST:
+        case GL_STENCIL_TEST:
+        case GL_DEPTH_TEST:
+        case GL_BLEND:
+        case GL_DITHER:
+        case GL_CONTEXT_ROBUST_ACCESS_EXT:
+        {
+            *type      = GL_BOOL;
+            *numParams = 1;
+            return true;
+        }
+        case GL_COLOR_WRITEMASK:
+        {
+            *type      = GL_BOOL;
+            *numParams = 4;
+            return true;
+        }
+        case GL_POLYGON_OFFSET_FACTOR:
+        case GL_POLYGON_OFFSET_UNITS:
+        case GL_SAMPLE_COVERAGE_VALUE:
+        case GL_DEPTH_CLEAR_VALUE:
+        case GL_LINE_WIDTH:
+        {
+            *type      = GL_FLOAT;
+            *numParams = 1;
+            return true;
+        }
+        case GL_ALIASED_LINE_WIDTH_RANGE:
+        case GL_ALIASED_POINT_SIZE_RANGE:
+        case GL_DEPTH_RANGE:
+        {
+            *type      = GL_FLOAT;
+            *numParams = 2;
+            return true;
+        }
+        case GL_COLOR_CLEAR_VALUE:
+        case GL_BLEND_COLOR:
+        {
+            *type      = GL_FLOAT;
+            *numParams = 4;
+            return true;
+        }
+        case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
+            if (!extensions.textureFilterAnisotropic)
+            {
+                return false;
+            }
+            *type      = GL_FLOAT;
+            *numParams = 1;
+            return true;
+        case GL_TIMESTAMP_EXT:
+            if (!extensions.disjointTimerQuery)
+            {
+                return false;
+            }
+            *type      = GL_INT_64_ANGLEX;
+            *numParams = 1;
+            return true;
+        case GL_GPU_DISJOINT_EXT:
+            if (!extensions.disjointTimerQuery)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        case GL_COVERAGE_MODULATION_CHROMIUM:
+            if (!extensions.framebufferMixedSamples)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        case GL_TEXTURE_BINDING_EXTERNAL_OES:
+            if (!extensions.eglStreamConsumerExternal && !extensions.eglImageExternal)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+    }
+
+    if (glState.getClientType() == EGL_OPENGL_API)
+    {
+        switch (pname)
+        {
+            case GL_CONTEXT_FLAGS:
+            case GL_CONTEXT_PROFILE_MASK:
+            {
+                *type      = GL_INT;
+                *numParams = 1;
+                return true;
+            }
+        }
+    }
+
+    if (extensions.debug)
+    {
+        switch (pname)
+        {
+            case GL_DEBUG_LOGGED_MESSAGES:
+            case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH:
+            case GL_DEBUG_GROUP_STACK_DEPTH:
+            case GL_MAX_DEBUG_MESSAGE_LENGTH:
+            case GL_MAX_DEBUG_LOGGED_MESSAGES:
+            case GL_MAX_DEBUG_GROUP_STACK_DEPTH:
+            case GL_MAX_LABEL_LENGTH:
+                *type      = GL_INT;
+                *numParams = 1;
+                return true;
+
+            case GL_DEBUG_OUTPUT_SYNCHRONOUS:
+            case GL_DEBUG_OUTPUT:
+                *type      = GL_BOOL;
+                *numParams = 1;
+                return true;
+        }
+    }
+
+    if (extensions.multisampleCompatibility)
+    {
+        switch (pname)
+        {
+            case GL_MULTISAMPLE_EXT:
+            case GL_SAMPLE_ALPHA_TO_ONE_EXT:
+                *type      = GL_BOOL;
+                *numParams = 1;
+                return true;
+        }
+    }
+
+    if (extensions.pathRendering)
+    {
+        switch (pname)
+        {
+            case GL_PATH_MODELVIEW_MATRIX_CHROMIUM:
+            case GL_PATH_PROJECTION_MATRIX_CHROMIUM:
+                *type      = GL_FLOAT;
+                *numParams = 16;
+                return true;
+        }
+    }
+
+    if (extensions.bindGeneratesResource)
+    {
+        switch (pname)
+        {
+            case GL_BIND_GENERATES_RESOURCE_CHROMIUM:
+                *type      = GL_BOOL;
+                *numParams = 1;
+                return true;
+        }
+    }
+
+    if (extensions.clientArrays)
+    {
+        switch (pname)
+        {
+            case GL_CLIENT_ARRAYS_ANGLE:
+                *type      = GL_BOOL;
+                *numParams = 1;
+                return true;
+        }
+    }
+
+    if (extensions.sRGBWriteControl)
+    {
+        switch (pname)
+        {
+            case GL_FRAMEBUFFER_SRGB_EXT:
+                *type      = GL_BOOL;
+                *numParams = 1;
+                return true;
+        }
+    }
+
+    if (extensions.robustResourceInitialization && pname == GL_ROBUST_RESOURCE_INITIALIZATION_ANGLE)
+    {
+        *type      = GL_BOOL;
+        *numParams = 1;
+        return true;
+    }
+
+    if (extensions.programCacheControl && pname == GL_PROGRAM_CACHE_ENABLED_ANGLE)
+    {
+        *type      = GL_BOOL;
+        *numParams = 1;
+        return true;
+    }
+
+    if (extensions.parallelShaderCompile && pname == GL_MAX_SHADER_COMPILER_THREADS_KHR)
+    {
+        *type      = GL_INT;
+        *numParams = 1;
+        return true;
+    }
+
+    if (extensions.blendFuncExtended && pname == GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT)
+    {
+        *type      = GL_INT;
+        *numParams = 1;
+        return true;
+    }
+
+    // Check for ES3.0+ parameter names which are also exposed as ES2 extensions
+    switch (pname)
+    {
+        // GL_DRAW_FRAMEBUFFER_BINDING_ANGLE equivalent to FRAMEBUFFER_BINDING
+        case GL_READ_FRAMEBUFFER_BINDING_ANGLE:
+            if ((clientMajorVersion < 3) && !extensions.framebufferBlit)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+
+        case GL_NUM_PROGRAM_BINARY_FORMATS_OES:
+            if ((clientMajorVersion < 3) && !extensions.getProgramBinary)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+
+        case GL_PROGRAM_BINARY_FORMATS_OES:
+            if ((clientMajorVersion < 3) && !extensions.getProgramBinary)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = static_cast<unsigned int>(caps.programBinaryFormats.size());
+            return true;
+
+        case GL_PACK_ROW_LENGTH:
+        case GL_PACK_SKIP_ROWS:
+        case GL_PACK_SKIP_PIXELS:
+            if ((clientMajorVersion < 3) && !extensions.packSubimage)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        case GL_UNPACK_ROW_LENGTH:
+        case GL_UNPACK_SKIP_ROWS:
+        case GL_UNPACK_SKIP_PIXELS:
+            if ((clientMajorVersion < 3) && !extensions.unpackSubimage)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        case GL_VERTEX_ARRAY_BINDING:
+            if ((clientMajorVersion < 3) && !extensions.vertexArrayObject)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        case GL_PIXEL_PACK_BUFFER_BINDING:
+        case GL_PIXEL_UNPACK_BUFFER_BINDING:
+            if ((clientMajorVersion < 3) && !extensions.pixelBufferObject)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        case GL_MAX_SAMPLES:
+        {
+            static_assert(GL_MAX_SAMPLES_ANGLE == GL_MAX_SAMPLES,
+                          "GL_MAX_SAMPLES_ANGLE not equal to GL_MAX_SAMPLES");
+            if ((clientMajorVersion < 3) &&
+                !(extensions.framebufferMultisample || extensions.multisampledRenderToTexture))
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+
+            case GL_FRAGMENT_SHADER_DERIVATIVE_HINT:
+                if ((clientMajorVersion < 3) && !extensions.standardDerivatives)
+                {
+                    return false;
+                }
+                *type      = GL_INT;
+                *numParams = 1;
+                return true;
+        }
+        case GL_TEXTURE_BINDING_3D:
+            if ((clientMajorVersion < 3) && !extensions.texture3DOES)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        case GL_MAX_3D_TEXTURE_SIZE:
+            if ((clientMajorVersion < 3) && !extensions.texture3DOES)
+            {
+                return false;
+            }
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+    }
+
+    if (pname >= GL_DRAW_BUFFER0_EXT && pname <= GL_DRAW_BUFFER15_EXT)
+    {
+        if ((glState.getClientVersion() < Version(3, 0)) && !extensions.drawBuffers)
+        {
+            return false;
+        }
+        *type      = GL_INT;
+        *numParams = 1;
+        return true;
+    }
+
+    if ((extensions.multiview2 || extensions.multiview) && pname == GL_MAX_VIEWS_OVR)
+    {
+        *type      = GL_INT;
+        *numParams = 1;
+        return true;
+    }
+
+    if (glState.getClientVersion() < Version(2, 0))
+    {
+        switch (pname)
+        {
+            case GL_ALPHA_TEST_FUNC:
+            case GL_CLIENT_ACTIVE_TEXTURE:
+            case GL_MATRIX_MODE:
+            case GL_MAX_TEXTURE_UNITS:
+            case GL_MAX_MODELVIEW_STACK_DEPTH:
+            case GL_MAX_PROJECTION_STACK_DEPTH:
+            case GL_MAX_TEXTURE_STACK_DEPTH:
+            case GL_MAX_LIGHTS:
+            case GL_MAX_CLIP_PLANES:
+            case GL_VERTEX_ARRAY_STRIDE:
+            case GL_NORMAL_ARRAY_STRIDE:
+            case GL_COLOR_ARRAY_STRIDE:
+            case GL_TEXTURE_COORD_ARRAY_STRIDE:
+            case GL_VERTEX_ARRAY_SIZE:
+            case GL_COLOR_ARRAY_SIZE:
+            case GL_TEXTURE_COORD_ARRAY_SIZE:
+            case GL_VERTEX_ARRAY_TYPE:
+            case GL_NORMAL_ARRAY_TYPE:
+            case GL_COLOR_ARRAY_TYPE:
+            case GL_TEXTURE_COORD_ARRAY_TYPE:
+            case GL_VERTEX_ARRAY_BUFFER_BINDING:
+            case GL_NORMAL_ARRAY_BUFFER_BINDING:
+            case GL_COLOR_ARRAY_BUFFER_BINDING:
+            case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
+            case GL_POINT_SIZE_ARRAY_STRIDE_OES:
+            case GL_POINT_SIZE_ARRAY_TYPE_OES:
+            case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
+            case GL_SHADE_MODEL:
+            case GL_MODELVIEW_STACK_DEPTH:
+            case GL_PROJECTION_STACK_DEPTH:
+            case GL_TEXTURE_STACK_DEPTH:
+            case GL_LOGIC_OP_MODE:
+            case GL_BLEND_SRC:
+            case GL_BLEND_DST:
+            case GL_PERSPECTIVE_CORRECTION_HINT:
+            case GL_POINT_SMOOTH_HINT:
+            case GL_LINE_SMOOTH_HINT:
+            case GL_FOG_HINT:
+                *type      = GL_INT;
+                *numParams = 1;
+                return true;
+            case GL_ALPHA_TEST_REF:
+            case GL_FOG_DENSITY:
+            case GL_FOG_START:
+            case GL_FOG_END:
+            case GL_FOG_MODE:
+            case GL_POINT_SIZE:
+            case GL_POINT_SIZE_MIN:
+            case GL_POINT_SIZE_MAX:
+            case GL_POINT_FADE_THRESHOLD_SIZE:
+                *type      = GL_FLOAT;
+                *numParams = 1;
+                return true;
+            case GL_SMOOTH_POINT_SIZE_RANGE:
+            case GL_SMOOTH_LINE_WIDTH_RANGE:
+                *type      = GL_FLOAT;
+                *numParams = 2;
+                return true;
+            case GL_CURRENT_COLOR:
+            case GL_CURRENT_TEXTURE_COORDS:
+            case GL_LIGHT_MODEL_AMBIENT:
+            case GL_FOG_COLOR:
+                *type      = GL_FLOAT;
+                *numParams = 4;
+                return true;
+            case GL_CURRENT_NORMAL:
+            case GL_POINT_DISTANCE_ATTENUATION:
+                *type      = GL_FLOAT;
+                *numParams = 3;
+                return true;
+            case GL_MODELVIEW_MATRIX:
+            case GL_PROJECTION_MATRIX:
+            case GL_TEXTURE_MATRIX:
+                *type      = GL_FLOAT;
+                *numParams = 16;
+                return true;
+            case GL_LIGHT_MODEL_TWO_SIDE:
+                *type      = GL_BOOL;
+                *numParams = 1;
+                return true;
+        }
+    }
+
+    if (glState.getClientVersion() < Version(3, 0))
+    {
+        return false;
+    }
+
+    // Check for ES3.0+ parameter names
+    switch (pname)
+    {
+        case GL_MAX_UNIFORM_BUFFER_BINDINGS:
+        case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:
+        case GL_UNIFORM_BUFFER_BINDING:
+        case GL_TRANSFORM_FEEDBACK_BINDING:
+        case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
+        case GL_COPY_READ_BUFFER_BINDING:
+        case GL_COPY_WRITE_BUFFER_BINDING:
+        case GL_SAMPLER_BINDING:
+        case GL_READ_BUFFER:
+        case GL_TEXTURE_BINDING_3D:
+        case GL_TEXTURE_BINDING_2D_ARRAY:
+        case GL_MAX_ARRAY_TEXTURE_LAYERS:
+        case GL_MAX_VERTEX_UNIFORM_BLOCKS:
+        case GL_MAX_FRAGMENT_UNIFORM_BLOCKS:
+        case GL_MAX_COMBINED_UNIFORM_BLOCKS:
+        case GL_MAX_VERTEX_OUTPUT_COMPONENTS:
+        case GL_MAX_FRAGMENT_INPUT_COMPONENTS:
+        case GL_MAX_VARYING_COMPONENTS:
+        case GL_MAX_VERTEX_UNIFORM_COMPONENTS:
+        case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:
+        case GL_MIN_PROGRAM_TEXEL_OFFSET:
+        case GL_MAX_PROGRAM_TEXEL_OFFSET:
+        case GL_NUM_EXTENSIONS:
+        case GL_MAJOR_VERSION:
+        case GL_MINOR_VERSION:
+        case GL_MAX_ELEMENTS_INDICES:
+        case GL_MAX_ELEMENTS_VERTICES:
+        case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
+        case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
+        case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
+        case GL_UNPACK_IMAGE_HEIGHT:
+        case GL_UNPACK_SKIP_IMAGES:
+        {
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        }
+
+        case GL_MAX_ELEMENT_INDEX:
+        case GL_MAX_UNIFORM_BLOCK_SIZE:
+        case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:
+        case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:
+        case GL_MAX_SERVER_WAIT_TIMEOUT:
+        {
+            *type      = GL_INT_64_ANGLEX;
+            *numParams = 1;
+            return true;
+        }
+
+        case GL_TRANSFORM_FEEDBACK_ACTIVE:
+        case GL_TRANSFORM_FEEDBACK_PAUSED:
+        case GL_PRIMITIVE_RESTART_FIXED_INDEX:
+        case GL_RASTERIZER_DISCARD:
+        {
+            *type      = GL_BOOL;
+            *numParams = 1;
+            return true;
+        }
+
+        case GL_MAX_TEXTURE_LOD_BIAS:
+        {
+            *type      = GL_FLOAT;
+            *numParams = 1;
+            return true;
+        }
+    }
+
+    if (extensions.requestExtension)
+    {
+        switch (pname)
+        {
+            case GL_NUM_REQUESTABLE_EXTENSIONS_ANGLE:
+                *type      = GL_INT;
+                *numParams = 1;
+                return true;
+        }
+    }
+
+    if (extensions.textureMultisample)
+    {
+        switch (pname)
+        {
+            case GL_MAX_COLOR_TEXTURE_SAMPLES_ANGLE:
+            case GL_MAX_INTEGER_SAMPLES_ANGLE:
+            case GL_MAX_DEPTH_TEXTURE_SAMPLES_ANGLE:
+            case GL_TEXTURE_BINDING_2D_MULTISAMPLE_ANGLE:
+            case GL_MAX_SAMPLE_MASK_WORDS:
+                *type      = GL_INT;
+                *numParams = 1;
+                return true;
+        }
+    }
+
+    if (glState.getClientVersion() < Version(3, 1))
+    {
+        return false;
+    }
+
+    switch (pname)
+    {
+        case GL_ATOMIC_COUNTER_BUFFER_BINDING:
+        case GL_DRAW_INDIRECT_BUFFER_BINDING:
+        case GL_DISPATCH_INDIRECT_BUFFER_BINDING:
+        case GL_MAX_FRAMEBUFFER_WIDTH:
+        case GL_MAX_FRAMEBUFFER_HEIGHT:
+        case GL_MAX_FRAMEBUFFER_SAMPLES:
+        case GL_MAX_SAMPLE_MASK_WORDS:
+        case GL_MAX_COLOR_TEXTURE_SAMPLES:
+        case GL_MAX_DEPTH_TEXTURE_SAMPLES:
+        case GL_MAX_INTEGER_SAMPLES:
+        case GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET:
+        case GL_MAX_VERTEX_ATTRIB_BINDINGS:
+        case GL_MAX_VERTEX_ATTRIB_STRIDE:
+        case GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS:
+        case GL_MAX_VERTEX_ATOMIC_COUNTERS:
+        case GL_MAX_VERTEX_IMAGE_UNIFORMS:
+        case GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS:
+        case GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS:
+        case GL_MAX_FRAGMENT_ATOMIC_COUNTERS:
+        case GL_MAX_FRAGMENT_IMAGE_UNIFORMS:
+        case GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS:
+        case GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET:
+        case GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET:
+        case GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS:
+        case GL_MAX_COMPUTE_UNIFORM_BLOCKS:
+        case GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS:
+        case GL_MAX_COMPUTE_SHARED_MEMORY_SIZE:
+        case GL_MAX_COMPUTE_UNIFORM_COMPONENTS:
+        case GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS:
+        case GL_MAX_COMPUTE_ATOMIC_COUNTERS:
+        case GL_MAX_COMPUTE_IMAGE_UNIFORMS:
+        case GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS:
+        case GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS:
+        case GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES:
+        case GL_MAX_UNIFORM_LOCATIONS:
+        case GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS:
+        case GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE:
+        case GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS:
+        case GL_MAX_COMBINED_ATOMIC_COUNTERS:
+        case GL_MAX_IMAGE_UNITS:
+        case GL_MAX_COMBINED_IMAGE_UNIFORMS:
+        case GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS:
+        case GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS:
+        case GL_SHADER_STORAGE_BUFFER_BINDING:
+        case GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT:
+        case GL_TEXTURE_BINDING_2D_MULTISAMPLE:
+        case GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY:
+            *type      = GL_INT;
+            *numParams = 1;
+            return true;
+        case GL_MAX_SHADER_STORAGE_BLOCK_SIZE:
+            *type      = GL_INT_64_ANGLEX;
+            *numParams = 1;
+            return true;
+        case GL_SAMPLE_MASK:
+            *type      = GL_BOOL;
+            *numParams = 1;
+            return true;
+    }
+
+    if (extensions.geometryShader)
+    {
+        switch (pname)
+        {
+            case GL_MAX_FRAMEBUFFER_LAYERS_EXT:
+            case GL_LAYER_PROVOKING_VERTEX_EXT:
+            case GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT:
+            case GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT:
+            case GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT:
+            case GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT:
+            case GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT:
+            case GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT:
+            case GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT:
+            case GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT:
+            case GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT:
+            case GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT:
+            case GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT:
+            case GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT:
+            case GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT:
+                *type      = GL_INT;
+                *numParams = 1;
+                return true;
+        }
+    }
+
+    return false;
+}
 }  // namespace gl
 
 namespace egl
@@ -3139,5 +3902,4 @@
     UNREACHABLE();
     return NoError();
 }
-
 }  // namespace egl
diff --git a/src/libANGLE/queryutils.h b/src/libANGLE/queryutils.h
index 114a301..48a6d9d 100644
--- a/src/libANGLE/queryutils.h
+++ b/src/libANGLE/queryutils.h
@@ -27,6 +27,7 @@
 class Renderbuffer;
 class Sampler;
 class Shader;
+class State;
 class Texture;
 struct TextureCaps;
 struct UniformBlock;
@@ -238,6 +239,10 @@
 
 unsigned int GetTexParameterCount(GLenum pname);
 
+bool GetQueryParameterInfo(const State &glState,
+                           GLenum pname,
+                           GLenum *type,
+                           unsigned int *numParams);
 }  // namespace gl
 
 namespace egl