Commit 9e14a19b by Jiacheng Lu Committed by Commit Bot

EVENT trace to print GLenum as string reland

Reland of CL https://chromium-review.googlesource.com/c/angle/angle/+/1737141 Bug: angleproject:3778 Change-Id: I2a43c618de032d6e6286d707fbc88241ad4c19ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1745837 Commit-Queue: Jiacheng Lu <lujc@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 1d0a778f
......@@ -741,6 +741,11 @@ angle_source_set("libANGLE") {
sources = [
"src/libANGLE/FrameCapture.cpp",
]
# gl_enum_utils defaults included in with_capture build
if (angle_enable_trace || is_debug) {
sources += [ "src/libANGLE/gl_enum_utils_autogen.cpp" ]
}
}
angle_source_set("libANGLE_with_capture") {
......
......@@ -6,7 +6,7 @@
"scripts/generate_loader.py":
"48c60c668bec42a80378179aae2acc61",
"scripts/registry_xml.py":
"40cac0341003ce27d09003ada7f367b4",
"a801192d7b3fc697cf813a57a41031e0",
"scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4",
"src/libEGL/egl_loader_autogen.cpp":
......
......@@ -6,13 +6,13 @@
"scripts/entry_point_packed_gl_enums.json":
"1ae29315f077b86ebec5789d67546251",
"scripts/generate_entry_points.py":
"11aa814c8ad837e39cd2184b84a67321",
"5650698233a9be8d4c8a5840c92a738d",
"scripts/gl.xml":
"b470cb06b06cbbe7adb2c8129ec85708",
"scripts/gl_angle_ext.xml":
"bed6b56a38621721e689ebc19601a556",
"scripts/registry_xml.py":
"40cac0341003ce27d09003ada7f367b4",
"a801192d7b3fc697cf813a57a41031e0",
"scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4",
"src/libANGLE/Context_gl_1_0_autogen.h":
......@@ -140,79 +140,79 @@
"src/libANGLE/validationGL4_autogen.h":
"ebbde7f5154a4d1736330d1fc53b3af7",
"src/libGL/entry_points_gl_1_0_autogen.cpp":
"63ee802b42763919798ef12e490460a7",
"96092a26b819623ca49a81c3690830ed",
"src/libGL/entry_points_gl_1_0_autogen.h":
"a2372719bd7fbc4a6b070ecae7d9247a",
"src/libGL/entry_points_gl_1_1_autogen.cpp":
"67e84f20faf4dd0d04926008ea0a2e9a",
"50f8efcb8324aa80454cb1a74651a6d8",
"src/libGL/entry_points_gl_1_1_autogen.h":
"29ff203c0d402f78d020525a5e5ee447",
"src/libGL/entry_points_gl_1_2_autogen.cpp":
"424ffac8d5e49c625f4eb45dfbd9734e",
"627f9a4d4027b80ff6ef70165da73116",
"src/libGL/entry_points_gl_1_2_autogen.h":
"db041e9b37eaaf1c31a4b4e2e4e987f4",
"src/libGL/entry_points_gl_1_3_autogen.cpp":
"cc2b8fde7794469a5d71d10e18de6146",
"21523304ba89513af7a80ac9630d97b2",
"src/libGL/entry_points_gl_1_3_autogen.h":
"0c30cbdd3d5b10e9217a049cc2794317",
"src/libGL/entry_points_gl_1_4_autogen.cpp":
"5aeb14595231e98a9b25cf2dd9605a50",
"cf02087b9f49b68c79b40c613151cc07",
"src/libGL/entry_points_gl_1_4_autogen.h":
"6f3dcfd98c18cd53f32e61ee01eabad6",
"src/libGL/entry_points_gl_1_5_autogen.cpp":
"139cf69583b4df858e001a3f30964b66",
"c14c1660c18f40eb2ab097e7f7dcb6fe",
"src/libGL/entry_points_gl_1_5_autogen.h":
"8caacff247caecb833b065afaf6e90ef",
"src/libGL/entry_points_gl_2_0_autogen.cpp":
"9187c545b6401d45eb7af0a98d035e51",
"cf239b560209f34d4b8154981a4561c0",
"src/libGL/entry_points_gl_2_0_autogen.h":
"f0f58f83717148d58b735af5c435f2ef",
"src/libGL/entry_points_gl_2_1_autogen.cpp":
"4fb669499e04560153871472b61cd99c",
"d15c90bd58f6d20ba3dc21946c9fae09",
"src/libGL/entry_points_gl_2_1_autogen.h":
"87cd6d513a5852c56eed9b58484fbe19",
"src/libGL/entry_points_gl_3_0_autogen.cpp":
"4119c7c81b8cde1faf3df6a849d2c23b",
"87154b4570afc60e4f921f081f166aef",
"src/libGL/entry_points_gl_3_0_autogen.h":
"47396290a846f808e598acdbca56e9b3",
"src/libGL/entry_points_gl_3_1_autogen.cpp":
"5c794b43453e0f91a14480c822b8c938",
"0a33c5ca28297647cbadc8d66265bb7d",
"src/libGL/entry_points_gl_3_1_autogen.h":
"6ee6613c0206d99c6afdcd3faddb52a3",
"src/libGL/entry_points_gl_3_2_autogen.cpp":
"ac9c90e1db85a982329dfd0be26426c1",
"71d5247e0f1bdc7af6fb0a273cf30eb1",
"src/libGL/entry_points_gl_3_2_autogen.h":
"347e40b5c9fd08a693bf4ffe713c61e6",
"src/libGL/entry_points_gl_3_3_autogen.cpp":
"2629a236c149c428e006ff9a99a47bd6",
"f89eec28c18b6c39ec6c3a595310a6a3",
"src/libGL/entry_points_gl_3_3_autogen.h":
"2151c64b03364111ad1455609243caba",
"src/libGL/entry_points_gl_4_0_autogen.cpp":
"71dafcdf5735674912db4393ae4fb0cc",
"f0dee9931d60318c7b106cb620af9dde",
"src/libGL/entry_points_gl_4_0_autogen.h":
"c5a258322ee6de37ffdbb6f40d5703a2",
"src/libGL/entry_points_gl_4_1_autogen.cpp":
"10807001f592e3930603456f4d4a3cd8",
"80a8f927cb407a58125002258845f50c",
"src/libGL/entry_points_gl_4_1_autogen.h":
"ea1e18bf5ed2bd1063c940bd793cb50c",
"src/libGL/entry_points_gl_4_2_autogen.cpp":
"00fa653085c5f4f19aafa5f952468966",
"3379976b8fab03eeed7c2d20b27253ad",
"src/libGL/entry_points_gl_4_2_autogen.h":
"e6b93e1c3028230ebf5ba8a09f5f4aca",
"src/libGL/entry_points_gl_4_3_autogen.cpp":
"17deeaae719c5c7fbb6b663cd4192ab3",
"40ac16f146445d485289e2a91510d20b",
"src/libGL/entry_points_gl_4_3_autogen.h":
"60bf8a8337129670875de694386a0a9d",
"src/libGL/entry_points_gl_4_4_autogen.cpp":
"7225cfc05ca9d0789da08b7c09979902",
"5606b7bd27c47fc1abd328618ef762f5",
"src/libGL/entry_points_gl_4_4_autogen.h":
"d0a8c556ffb1c9d4519a66b2868c68b2",
"src/libGL/entry_points_gl_4_5_autogen.cpp":
"2bec509d621e499596da56093f00e3f6",
"2f01d0dea949a58cfe48848e36429133",
"src/libGL/entry_points_gl_4_5_autogen.h":
"0cc66bfbe40b1120e38ba977c2c95cc1",
"src/libGL/entry_points_gl_4_6_autogen.cpp":
"da6e469e201b6a2d3874003ddbc6d721",
"3823ded8b5957a1e1b84e2dae7f00bb8",
"src/libGL/entry_points_gl_4_6_autogen.h":
"d659e18d8caffa8d0729fc1a8bdd79f2",
"src/libGL/libGL_autogen.cpp":
......@@ -220,23 +220,23 @@
"src/libGL/libGL_autogen.def":
"b372327de868ff8eaa4f837b7e434f72",
"src/libGLESv2/entry_points_gles_1_0_autogen.cpp":
"ccf5955c47e40d2b9a6177efa483561f",
"9f18cbeb0767ec936bb3e63c566d05a9",
"src/libGLESv2/entry_points_gles_1_0_autogen.h":
"77fa8d307ebf839838f8812786cddc1a",
"src/libGLESv2/entry_points_gles_2_0_autogen.cpp":
"0488fabde57bac56cd5bdeca2436fe26",
"6311cca6704f9d7c624cddaacbf75ed7",
"src/libGLESv2/entry_points_gles_2_0_autogen.h":
"3bbaf1cf42fba5d675e5b54cd1d14df7",
"src/libGLESv2/entry_points_gles_3_0_autogen.cpp":
"de4790e176225d629cd91b6274c1b0eb",
"f69e90c2ebfce5eaa6fa737ba1941091",
"src/libGLESv2/entry_points_gles_3_0_autogen.h":
"395f6978219abd5182bbe80cc367e40c",
"src/libGLESv2/entry_points_gles_3_1_autogen.cpp":
"730e53bd2d370d9894f5fc44cd254c77",
"26b6244426a4ddd0eacbe37f446453b5",
"src/libGLESv2/entry_points_gles_3_1_autogen.h":
"043d09a964c740067bf4279e0b544aed",
"src/libGLESv2/entry_points_gles_ext_autogen.cpp":
"2388c7eb9ebdbc1fcfdbf57c43f99845",
"d4718c0d869dec12fe729657d30b3817",
"src/libGLESv2/entry_points_gles_ext_autogen.h":
"294cc52579b3439e99914c11bb7cd9f6",
"src/libGLESv2/libGLESv2_autogen.cpp":
......
{
"scripts/gen_gl_enum_utils.py":
"b01e8fd8aaf03282f430d98cccc960e4",
"aefa4a2651b184aaf1e3b83dea1dc253",
"scripts/gl.xml":
"b470cb06b06cbbe7adb2c8129ec85708",
"scripts/gl_angle_ext.xml":
"bed6b56a38621721e689ebc19601a556",
"src/libANGLE/gl_enum_utils_autogen.cpp":
"e1b0d3b84de3e2259961c4af2a1e7853",
"72d7c2a5b96fd0099e2f03d631d7637f",
"src/libANGLE/gl_enum_utils_autogen.h":
"c04076709a7f310bc313d2eae0713f1e"
"9f539607968a5a53256443740407893b"
}
\ No newline at end of file
......@@ -10,7 +10,7 @@
"scripts/gl_angle_ext.xml":
"bed6b56a38621721e689ebc19601a556",
"scripts/registry_xml.py":
"40cac0341003ce27d09003ada7f367b4",
"a801192d7b3fc697cf813a57a41031e0",
"scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4",
"src/libGL/proc_table_wgl_autogen.cpp":
......
......@@ -10,9 +10,7 @@
import sys
import os
import re
from datetime import date
from collections import namedtuple
import registry_xml
......@@ -31,6 +29,8 @@ template_gl_enums_header = """// GENERATED FILE - DO NOT EDIT.
#include <string>
#include "common/PackedGLEnums_autogen.h"
namespace gl
{{
......@@ -38,6 +38,7 @@ enum class GLenumGroup {{
{gl_enum_groups}
}};
const char *GLbooleanToString(unsigned int value);
const char *GLenumToString(GLenumGroup enumGroup, unsigned int value);
......@@ -62,17 +63,26 @@ template_gl_enums_source = """// GENERATED FILE - DO NOT EDIT.
#include <sstream>
#include "common/debug.h"
#include "common/bitset_utils.h"
namespace gl
{{
const char *GLbooleanToString(unsigned int value) {{
switch (value) {{
case 0x0:
return "GL_FALSE";
case 0x1:
return "GL_TRUE";
default:
return "EnumUnknown";
}}
}}
const char *GLenumToString(GLenumGroup enumGroup, unsigned int value) {{
switch (enumGroup) {{
{gl_enums_value_to_string_table}
default:
UNREACHABLE();
return "EnumUnknown";
}}
}}
......@@ -113,10 +123,11 @@ template_enum_group_case = """case GLenumGroup::{group_name}: {{
template_enum_value_to_string_case = """case {value}: return {name};"""
export_apis = ['gles2']
export_extensions = registry_xml.supported_extensions
trivial_gl_enums = {'GL_FALSE', 'GL_TRUE', 'GL_NO_ERROR', 'GL_TIMEOUT_IGNORED', 'GL_INVALID_INDEX'}
exclude_gl_enums = {
'GL_NO_ERROR', 'GL_TIMEOUT_IGNORED', 'GL_INVALID_INDEX', 'GL_VERSION_ES_CL_1_0',
'GL_VERSION_ES_CM_1_1', 'GL_VERSION_ES_CL_1_1'
}
exclude_gl_enum_groups = {'SpecialNumbers'}
def dump_value_to_string_mapping(gl_enum_in_groups, exporting_enums):
......@@ -174,6 +185,9 @@ def main(header_output_path, source_output_path):
enums_has_group = set()
for enums_group_node in xml.root.findall('groups/group'):
group_name = enums_group_node.attrib['name']
if group_name in exclude_gl_enum_groups:
continue
if group_name not in gl_enum_in_groups:
gl_enum_in_groups[group_name] = dict()
......@@ -184,21 +198,19 @@ def main(header_output_path, source_output_path):
# Find relevant GLenums according to enabled APIs and extensions.
exporting_enums = set()
for api in export_apis:
xpath = ".//feature[@api='%s']//require//enum" % api
for enum_tag in xml.root.findall(xpath):
enum_name = enum_tag.attrib['name']
# export all the apis
xpath = "./feature/require/enum"
for enum_tag in xml.root.findall(xpath):
enum_name = enum_tag.attrib['name']
if enum_name not in exclude_gl_enums:
exporting_enums.add(enum_name)
for extension in export_extensions:
xpath = ".//extensions//extension[@name='%s']//require//enum" % extension
for extension in registry_xml.supported_extensions:
xpath = "./extensions/extension[@name='%s']/require/enum" % extension
for enum_tag in xml.root.findall(xpath):
enum_name = enum_tag.attrib['name']
exporting_enums.add(enum_name)
for enum in trivial_gl_enums:
if enum in exporting_enums:
exporting_enums.remove(enum)
if enum_name not in exclude_gl_enums:
exporting_enums.add(enum_name)
# For enums that do not have a group, add them to a default group
default_group_name = registry_xml.default_enum_group_name
......@@ -215,6 +227,7 @@ def main(header_output_path, source_output_path):
year=date.today().year,
gl_enum_groups=',\n'.join(sorted(gl_enum_in_groups.iterkeys())))
header_output_path = registry_xml.script_relative(header_output_path)
with open(header_output_path, 'w') as f:
f.write(header_content)
......
......@@ -366,15 +366,15 @@ reinterpret_cast_to_dict = {
}
format_dict = {
"GLbitfield": "0x%X",
"GLboolean": "%u",
"GLbitfield": "%s",
"GLboolean": "%s",
"GLbyte": "%d",
"GLclampx": "0x%X",
"GLDEBUGPROC": "0x%016\" PRIxPTR \"",
"GLDEBUGPROCKHR": "0x%016\" PRIxPTR \"",
"GLdouble": "%f",
"GLeglImageOES": "0x%016\" PRIxPTR \"",
"GLenum": "0x%X",
"GLenum": "%s",
"GLfixed": "0x%X",
"GLfloat": "%f",
"GLint": "%d",
......@@ -408,6 +408,7 @@ template_sources_includes = """#include "libGLESv2/entry_points_{header_version}
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/capture_{header_version}_autogen.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validation{validation_header_version}.h"
#include "libANGLE/entry_points_utils.h"
#include "libGLESv2/global_state.h"
......@@ -422,6 +423,7 @@ template_sources_includes_gl32 = """#include "libGL/entry_points_{}_autogen.h"
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -617,7 +619,7 @@ def just_the_name_packed(param, reserved_set):
return name
def param_print_argument(param):
def param_print_argument(command_node, param):
name_only = just_the_name(param)
type_only = just_the_type(param)
......@@ -630,6 +632,17 @@ def param_print_argument(param):
if type_only in static_cast_to_dict:
return "static_cast<" + static_cast_to_dict[type_only] + ">(" + name_only + ")"
if type_only == "GLboolean":
return "GLbooleanToString(%s)" % (name_only,)
if type_only == "GLbitfield":
group_name = find_gl_enum_group_in_command(command_node, name_only)
return "GLbitfieldToString(GLenumGroup::%s, %s).c_str()" % (group_name, name_only)
if type_only == "GLenum":
group_name = find_gl_enum_group_in_command(command_node, name_only)
return "GLenumToString(GLenumGroup::%s, %s)" % (group_name, name_only)
return name_only
......@@ -693,7 +706,8 @@ def get_packed_enums(cmd_packed_gl_enums, cmd_name):
return cmd_packed_gl_enums.get(strip_suffix(cmd_name), {})
def format_entry_point_def(cmd_name, proto, params, is_explicit_context, cmd_packed_gl_enums):
def format_entry_point_def(command_node, cmd_name, proto, params, is_explicit_context,
cmd_packed_gl_enums):
packed_gl_enums = get_packed_enums(cmd_packed_gl_enums, cmd_name)
internal_params = [just_the_name_packed(param, packed_gl_enums) for param in params]
packed_gl_enum_conversions = []
......@@ -707,7 +721,7 @@ def format_entry_point_def(cmd_name, proto, params, is_explicit_context, cmd_pac
">(" + name + ");"
]
pass_params = [param_print_argument(param) for param in params]
pass_params = [param_print_argument(command_node, param) for param in params]
format_params = [param_format_string(param) for param in params]
return_type = proto[:-len(cmd_name)]
default_return = default_return_value(cmd_name, return_type.strip())
......@@ -910,7 +924,7 @@ def get_entry_points(all_commands, commands, is_explicit_context, is_wgl, all_pa
decls.append(
format_entry_point_decl(cmd_name, proto_text, param_text, is_explicit_context))
defs.append(
format_entry_point_def(cmd_name, proto_text, param_text, is_explicit_context,
format_entry_point_def(command, cmd_name, proto_text, param_text, is_explicit_context,
cmd_packed_gl_enums))
export_defs.append(
......
......@@ -139,6 +139,9 @@ unsupported_enum_group_names = {
'FenceConditionNV',
'BufferPointerNameARB',
'MatrixIndexPointerTypeARB',
'PointParameterNameARB',
'ClampColorTargetARB',
'ClampColorModeARB',
}
......
......@@ -15,10 +15,14 @@
#include "libANGLE/angletypes.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/frame_capture_utils_autogen.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include <tuple>
namespace gl
{
enum class GLenumGroup;
}
namespace angle
{
struct ParamCapture : angle::NonCopyable
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -13,6 +13,8 @@
#include <string>
#include "common/PackedGLEnums_autogen.h"
namespace gl
{
......@@ -217,6 +219,8 @@ enum class GLenumGroup
VertexProvokingMode
};
const char *GLbooleanToString(unsigned int value);
const char *GLenumToString(GLenumGroup enumGroup, unsigned int value);
std::string GLbitfieldToString(GLenumGroup enumGroup, unsigned int value);
......
......@@ -13,6 +13,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -36,9 +37,10 @@ void GL_APIENTRY CopyTexSubImage3D(GLenum target,
GLsizei height)
{
EVENT(
"(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, GLint "
"(GLenum target = %s, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, GLint "
"zoffset = %d, GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)",
target, level, xoffset, yoffset, zoffset, x, y, width, height);
GLenumToString(GLenumGroup::TextureTarget, target), level, xoffset, yoffset, zoffset, x, y,
width, height);
Context *context = GetValidGlobalContext();
if (context)
......@@ -65,9 +67,10 @@ void GL_APIENTRY DrawRangeElements(GLenum mode,
const void *indices)
{
EVENT(
"(GLenum mode = 0x%X, GLuint start = %u, GLuint end = %u, GLsizei count = %d, GLenum type "
"= 0x%X, const void *indices = 0x%016" PRIxPTR ")",
mode, start, end, count, type, (uintptr_t)indices);
"(GLenum mode = %s, GLuint start = %u, GLuint end = %u, GLsizei count = %d, GLenum type = "
"%s, const void *indices = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::PrimitiveType, mode), start, end, count,
GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices);
Context *context = GetValidGlobalContext();
if (context)
......@@ -98,11 +101,12 @@ void GL_APIENTRY TexImage3D(GLenum target,
const void *pixels)
{
EVENT(
"(GLenum target = 0x%X, GLint level = %d, GLint internalformat = %d, GLsizei width = %d, "
"GLsizei height = %d, GLsizei depth = %d, GLint border = %d, GLenum format = 0x%X, GLenum "
"type = 0x%X, const void *pixels = 0x%016" PRIxPTR ")",
target, level, internalformat, width, height, depth, border, format, type,
(uintptr_t)pixels);
"(GLenum target = %s, GLint level = %d, GLint internalformat = %d, GLsizei width = %d, "
"GLsizei height = %d, GLsizei depth = %d, GLint border = %d, GLenum format = %s, GLenum "
"type = %s, const void *pixels = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::TextureTarget, target), level, internalformat, width, height,
depth, border, GLenumToString(GLenumGroup::PixelFormat, format),
GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);
Context *context = GetValidGlobalContext();
if (context)
......@@ -134,11 +138,12 @@ void GL_APIENTRY TexSubImage3D(GLenum target,
const void *pixels)
{
EVENT(
"(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, GLint "
"(GLenum target = %s, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, GLint "
"zoffset = %d, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, GLenum format "
"= 0x%X, GLenum type = 0x%X, const void *pixels = 0x%016" PRIxPTR ")",
target, level, xoffset, yoffset, zoffset, width, height, depth, format, type,
(uintptr_t)pixels);
"= %s, GLenum type = %s, const void *pixels = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::TextureTarget, target), level, xoffset, yoffset, zoffset, width,
height, depth, GLenumToString(GLenumGroup::PixelFormat, format),
GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);
Context *context = GetValidGlobalContext();
if (context)
......
......@@ -13,6 +13,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -45,7 +46,7 @@ void GL_APIENTRY BlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat al
void GL_APIENTRY BlendEquation(GLenum mode)
{
EVENT("(GLenum mode = 0x%X)", mode);
EVENT("(GLenum mode = %s)", GLenumToString(GLenumGroup::BlendEquationModeEXT, mode));
Context *context = GetValidGlobalContext();
if (context)
......@@ -65,9 +66,12 @@ void GL_APIENTRY BlendFuncSeparate(GLenum sfactorRGB,
GLenum dfactorAlpha)
{
EVENT(
"(GLenum sfactorRGB = 0x%X, GLenum dfactorRGB = 0x%X, GLenum sfactorAlpha = 0x%X, GLenum "
"dfactorAlpha = 0x%X)",
sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
"(GLenum sfactorRGB = %s, GLenum dfactorRGB = %s, GLenum sfactorAlpha = %s, GLenum "
"dfactorAlpha = %s)",
GLenumToString(GLenumGroup::BlendingFactor, sfactorRGB),
GLenumToString(GLenumGroup::BlendingFactor, dfactorRGB),
GLenumToString(GLenumGroup::BlendingFactor, sfactorAlpha),
GLenumToString(GLenumGroup::BlendingFactor, dfactorAlpha));
Context *context = GetValidGlobalContext();
if (context)
......@@ -86,8 +90,8 @@ void GL_APIENTRY BlendFuncSeparate(GLenum sfactorRGB,
void GL_APIENTRY FogCoordPointer(GLenum type, GLsizei stride, const void *pointer)
{
EVENT("(GLenum type = 0x%X, GLsizei stride = %d, const void *pointer = 0x%016" PRIxPTR ")",
type, stride, (uintptr_t)pointer);
EVENT("(GLenum type = %s, GLsizei stride = %d, const void *pointer = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::FogPointerTypeEXT, type), stride, (uintptr_t)pointer);
Context *context = GetValidGlobalContext();
if (context)
......@@ -171,9 +175,10 @@ void GL_APIENTRY MultiDrawArrays(GLenum mode,
const GLsizei *count,
GLsizei drawcount)
{
EVENT("(GLenum mode = 0x%X, const GLint *first = 0x%016" PRIxPTR
EVENT("(GLenum mode = %s, const GLint *first = 0x%016" PRIxPTR
", const GLsizei *count = 0x%016" PRIxPTR ", GLsizei drawcount = %d)",
mode, (uintptr_t)first, (uintptr_t)count, drawcount);
GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)first, (uintptr_t)count,
drawcount);
Context *context = GetValidGlobalContext();
if (context)
......@@ -195,10 +200,11 @@ void GL_APIENTRY MultiDrawElements(GLenum mode,
const void *const *indices,
GLsizei drawcount)
{
EVENT("(GLenum mode = 0x%X, const GLsizei *count = 0x%016" PRIxPTR
", GLenum type = 0x%X, const void *const*indices = 0x%016" PRIxPTR
EVENT("(GLenum mode = %s, const GLsizei *count = 0x%016" PRIxPTR
", GLenum type = %s, const void *const*indices = 0x%016" PRIxPTR
", GLsizei drawcount = %d)",
mode, (uintptr_t)count, type, (uintptr_t)indices, drawcount);
GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)count,
GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, drawcount);
Context *context = GetValidGlobalContext();
if (context)
......@@ -219,7 +225,8 @@ void GL_APIENTRY MultiDrawElements(GLenum mode,
void GL_APIENTRY PointParameterf(GLenum pname, GLfloat param)
{
EVENT("(GLenum pname = 0x%X, GLfloat param = %f)", pname, param);
EVENT("(GLenum pname = %s, GLfloat param = %f)",
GLenumToString(GLenumGroup::DefaultGroup, pname), param);
Context *context = GetValidGlobalContext();
if (context)
......@@ -237,8 +244,8 @@ void GL_APIENTRY PointParameterf(GLenum pname, GLfloat param)
void GL_APIENTRY PointParameterfv(GLenum pname, const GLfloat *params)
{
EVENT("(GLenum pname = 0x%X, const GLfloat *params = 0x%016" PRIxPTR ")", pname,
(uintptr_t)params);
EVENT("(GLenum pname = %s, const GLfloat *params = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -256,7 +263,8 @@ void GL_APIENTRY PointParameterfv(GLenum pname, const GLfloat *params)
void GL_APIENTRY PointParameteri(GLenum pname, GLint param)
{
EVENT("(GLenum pname = 0x%X, GLint param = %d)", pname, param);
EVENT("(GLenum pname = %s, GLint param = %d)", GLenumToString(GLenumGroup::DefaultGroup, pname),
param);
Context *context = GetValidGlobalContext();
if (context)
......@@ -273,8 +281,8 @@ void GL_APIENTRY PointParameteri(GLenum pname, GLint param)
void GL_APIENTRY PointParameteriv(GLenum pname, const GLint *params)
{
EVENT("(GLenum pname = 0x%X, const GLint *params = 0x%016" PRIxPTR ")", pname,
(uintptr_t)params);
EVENT("(GLenum pname = %s, const GLint *params = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -556,9 +564,9 @@ void GL_APIENTRY SecondaryColor3usv(const GLushort *v)
void GL_APIENTRY SecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)
{
EVENT(
"(GLint size = %d, GLenum type = 0x%X, GLsizei stride = %d, const void *pointer = "
"(GLint size = %d, GLenum type = %s, GLsizei stride = %d, const void *pointer = "
"0x%016" PRIxPTR ")",
size, type, stride, (uintptr_t)pointer);
size, GLenumToString(GLenumGroup::ColorPointerType, type), stride, (uintptr_t)pointer);
Context *context = GetValidGlobalContext();
if (context)
......
......@@ -13,6 +13,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -27,7 +28,8 @@ namespace gl
{
void GL_APIENTRY BeginQuery(GLenum target, GLuint id)
{
EVENT("(GLenum target = 0x%X, GLuint id = %u)", target, id);
EVENT("(GLenum target = %s, GLuint id = %u)", GLenumToString(GLenumGroup::QueryTarget, target),
id);
Context *context = GetValidGlobalContext();
if (context)
......@@ -45,7 +47,8 @@ void GL_APIENTRY BeginQuery(GLenum target, GLuint id)
void GL_APIENTRY BindBuffer(GLenum target, GLuint buffer)
{
EVENT("(GLenum target = 0x%X, GLuint buffer = %u)", target, buffer);
EVENT("(GLenum target = %s, GLuint buffer = %u)",
GLenumToString(GLenumGroup::BufferTargetARB, target), buffer);
Context *context = GetValidGlobalContext();
if (context)
......@@ -64,9 +67,11 @@ void GL_APIENTRY BindBuffer(GLenum target, GLuint buffer)
void GL_APIENTRY BufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage)
{
EVENT("(GLenum target = 0x%X, GLsizeiptr size = %llu, const void *data = 0x%016" PRIxPTR
", GLenum usage = 0x%X)",
target, static_cast<unsigned long long>(size), (uintptr_t)data, usage);
EVENT("(GLenum target = %s, GLsizeiptr size = %llu, const void *data = 0x%016" PRIxPTR
", GLenum usage = %s)",
GLenumToString(GLenumGroup::BufferTargetARB, target),
static_cast<unsigned long long>(size), (uintptr_t)data,
GLenumToString(GLenumGroup::BufferUsageARB, usage));
Context *context = GetValidGlobalContext();
if (context)
......@@ -86,9 +91,10 @@ void GL_APIENTRY BufferData(GLenum target, GLsizeiptr size, const void *data, GL
void GL_APIENTRY BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data)
{
EVENT(
"(GLenum target = 0x%X, GLintptr offset = %llu, GLsizeiptr size = %llu, const void *data = "
"(GLenum target = %s, GLintptr offset = %llu, GLsizeiptr size = %llu, const void *data = "
"0x%016" PRIxPTR ")",
target, static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size),
GLenumToString(GLenumGroup::BufferTargetARB, target),
static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size),
(uintptr_t)data);
Context *context = GetValidGlobalContext();
......@@ -141,7 +147,7 @@ void GL_APIENTRY DeleteQueries(GLsizei n, const GLuint *ids)
void GL_APIENTRY EndQuery(GLenum target)
{
EVENT("(GLenum target = 0x%X)", target);
EVENT("(GLenum target = %s)", GLenumToString(GLenumGroup::QueryTarget, target));
Context *context = GetValidGlobalContext();
if (context)
......@@ -192,8 +198,9 @@ void GL_APIENTRY GenQueries(GLsizei n, GLuint *ids)
void GL_APIENTRY GetBufferParameteriv(GLenum target, GLenum pname, GLint *params)
{
EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint *params = 0x%016" PRIxPTR ")", target,
pname, (uintptr_t)params);
EVENT("(GLenum target = %s, GLenum pname = %s, GLint *params = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::BufferTargetARB, target),
GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -211,8 +218,9 @@ void GL_APIENTRY GetBufferParameteriv(GLenum target, GLenum pname, GLint *params
void GL_APIENTRY GetBufferPointerv(GLenum target, GLenum pname, void **params)
{
EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, void **params = 0x%016" PRIxPTR ")", target,
pname, (uintptr_t)params);
EVENT("(GLenum target = %s, GLenum pname = %s, void **params = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::BufferTargetARB, target),
GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -231,9 +239,10 @@ void GL_APIENTRY GetBufferPointerv(GLenum target, GLenum pname, void **params)
void GL_APIENTRY GetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data)
{
EVENT(
"(GLenum target = 0x%X, GLintptr offset = %llu, GLsizeiptr size = %llu, void *data = "
"(GLenum target = %s, GLintptr offset = %llu, GLsizeiptr size = %llu, void *data = "
"0x%016" PRIxPTR ")",
target, static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size),
GLenumToString(GLenumGroup::BufferTargetARB, target),
static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size),
(uintptr_t)data);
Context *context = GetValidGlobalContext();
......@@ -251,8 +260,8 @@ void GL_APIENTRY GetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr siz
void GL_APIENTRY GetQueryObjectiv(GLuint id, GLenum pname, GLint *params)
{
EVENT("(GLuint id = %u, GLenum pname = 0x%X, GLint *params = 0x%016" PRIxPTR ")", id, pname,
(uintptr_t)params);
EVENT("(GLuint id = %u, GLenum pname = %s, GLint *params = 0x%016" PRIxPTR ")", id,
GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);
Context *context = GetGlobalContext();
if (context)
......@@ -269,8 +278,8 @@ void GL_APIENTRY GetQueryObjectiv(GLuint id, GLenum pname, GLint *params)
void GL_APIENTRY GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
{
EVENT("(GLuint id = %u, GLenum pname = 0x%X, GLuint *params = 0x%016" PRIxPTR ")", id, pname,
(uintptr_t)params);
EVENT("(GLuint id = %u, GLenum pname = %s, GLuint *params = 0x%016" PRIxPTR ")", id,
GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -287,8 +296,9 @@ void GL_APIENTRY GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
void GL_APIENTRY GetQueryiv(GLenum target, GLenum pname, GLint *params)
{
EVENT("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint *params = 0x%016" PRIxPTR ")", target,
pname, (uintptr_t)params);
EVENT("(GLenum target = %s, GLenum pname = %s, GLint *params = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::QueryTarget, target),
GLenumToString(GLenumGroup::QueryParameterName, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -359,7 +369,9 @@ GLboolean GL_APIENTRY IsQuery(GLuint id)
void *GL_APIENTRY MapBuffer(GLenum target, GLenum access)
{
EVENT("(GLenum target = 0x%X, GLenum access = 0x%X)", target, access);
EVENT("(GLenum target = %s, GLenum access = %s)",
GLenumToString(GLenumGroup::BufferTargetARB, target),
GLenumToString(GLenumGroup::BufferAccessARB, access));
Context *context = GetValidGlobalContext();
void *returnValue;
......@@ -387,7 +399,7 @@ void *GL_APIENTRY MapBuffer(GLenum target, GLenum access)
GLboolean GL_APIENTRY UnmapBuffer(GLenum target)
{
EVENT("(GLenum target = 0x%X)", target);
EVENT("(GLenum target = %s)", GLenumToString(GLenumGroup::BufferTargetARB, target));
Context *context = GetValidGlobalContext();
GLboolean returnValue;
......
......@@ -13,6 +13,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -62,7 +63,9 @@ void GL_APIENTRY BindAttribLocation(GLuint program, GLuint index, const GLchar *
void GL_APIENTRY BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
{
EVENT("(GLenum modeRGB = 0x%X, GLenum modeAlpha = 0x%X)", modeRGB, modeAlpha);
EVENT("(GLenum modeRGB = %s, GLenum modeAlpha = %s)",
GLenumToString(GLenumGroup::BlendEquationModeEXT, modeRGB),
GLenumToString(GLenumGroup::BlendEquationModeEXT, modeAlpha));
Context *context = GetValidGlobalContext();
if (context)
......@@ -121,7 +124,7 @@ GLuint GL_APIENTRY CreateProgram()
GLuint GL_APIENTRY CreateShader(GLenum type)
{
EVENT("(GLenum type = 0x%X)", type);
EVENT("(GLenum type = %s)", GLenumToString(GLenumGroup::ShaderType, type));
Context *context = GetValidGlobalContext();
GLuint returnValue;
......@@ -379,8 +382,8 @@ void GL_APIENTRY GetProgramInfoLog(GLuint program,
void GL_APIENTRY GetProgramiv(GLuint program, GLenum pname, GLint *params)
{
EVENT("(GLuint program = %u, GLenum pname = 0x%X, GLint *params = 0x%016" PRIxPTR ")", program,
pname, (uintptr_t)params);
EVENT("(GLuint program = %u, GLenum pname = %s, GLint *params = 0x%016" PRIxPTR ")", program,
GLenumToString(GLenumGroup::ProgramPropertyARB, pname), (uintptr_t)params);
Context *context = GetGlobalContext();
if (context)
......@@ -435,8 +438,8 @@ void GL_APIENTRY GetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length
void GL_APIENTRY GetShaderiv(GLuint shader, GLenum pname, GLint *params)
{
EVENT("(GLuint shader = %u, GLenum pname = 0x%X, GLint *params = 0x%016" PRIxPTR ")", shader,
pname, (uintptr_t)params);
EVENT("(GLuint shader = %u, GLenum pname = %s, GLint *params = 0x%016" PRIxPTR ")", shader,
GLenumToString(GLenumGroup::ShaderParameterName, pname), (uintptr_t)params);
Context *context = GetGlobalContext();
if (context)
......@@ -517,8 +520,8 @@ void GL_APIENTRY GetUniformiv(GLuint program, GLint location, GLint *params)
void GL_APIENTRY GetVertexAttribPointerv(GLuint index, GLenum pname, void **pointer)
{
EVENT("(GLuint index = %u, GLenum pname = 0x%X, void **pointer = 0x%016" PRIxPTR ")", index,
pname, (uintptr_t)pointer);
EVENT("(GLuint index = %u, GLenum pname = %s, void **pointer = 0x%016" PRIxPTR ")", index,
GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)pointer);
Context *context = GetValidGlobalContext();
if (context)
......@@ -535,8 +538,8 @@ void GL_APIENTRY GetVertexAttribPointerv(GLuint index, GLenum pname, void **poin
void GL_APIENTRY GetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params)
{
EVENT("(GLuint index = %u, GLenum pname = 0x%X, GLdouble *params = 0x%016" PRIxPTR ")", index,
pname, (uintptr_t)params);
EVENT("(GLuint index = %u, GLenum pname = %s, GLdouble *params = 0x%016" PRIxPTR ")", index,
GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -553,8 +556,8 @@ void GL_APIENTRY GetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params)
void GL_APIENTRY GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params)
{
EVENT("(GLuint index = %u, GLenum pname = 0x%X, GLfloat *params = 0x%016" PRIxPTR ")", index,
pname, (uintptr_t)params);
EVENT("(GLuint index = %u, GLenum pname = %s, GLfloat *params = 0x%016" PRIxPTR ")", index,
GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -571,8 +574,8 @@ void GL_APIENTRY GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params)
void GL_APIENTRY GetVertexAttribiv(GLuint index, GLenum pname, GLint *params)
{
EVENT("(GLuint index = %u, GLenum pname = 0x%X, GLint *params = 0x%016" PRIxPTR ")", index,
pname, (uintptr_t)params);
EVENT("(GLuint index = %u, GLenum pname = %s, GLint *params = 0x%016" PRIxPTR ")", index,
GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -679,8 +682,9 @@ void GL_APIENTRY ShaderSource(GLuint shader,
void GL_APIENTRY StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
{
EVENT("(GLenum face = 0x%X, GLenum func = 0x%X, GLint ref = %d, GLuint mask = %u)", face, func,
ref, mask);
EVENT("(GLenum face = %s, GLenum func = %s, GLint ref = %d, GLuint mask = %u)",
GLenumToString(GLenumGroup::StencilFaceDirection, face),
GLenumToString(GLenumGroup::StencilFunction, func), ref, mask);
Context *context = GetValidGlobalContext();
if (context)
......@@ -697,7 +701,8 @@ void GL_APIENTRY StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint
void GL_APIENTRY StencilMaskSeparate(GLenum face, GLuint mask)
{
EVENT("(GLenum face = 0x%X, GLuint mask = %u)", face, mask);
EVENT("(GLenum face = %s, GLuint mask = %u)",
GLenumToString(GLenumGroup::StencilFaceDirection, face), mask);
Context *context = GetValidGlobalContext();
if (context)
......@@ -714,8 +719,11 @@ void GL_APIENTRY StencilMaskSeparate(GLenum face, GLuint mask)
void GL_APIENTRY StencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
{
EVENT("(GLenum face = 0x%X, GLenum sfail = 0x%X, GLenum dpfail = 0x%X, GLenum dppass = 0x%X)",
face, sfail, dpfail, dppass);
EVENT("(GLenum face = %s, GLenum sfail = %s, GLenum dpfail = %s, GLenum dppass = %s)",
GLenumToString(GLenumGroup::StencilFaceDirection, face),
GLenumToString(GLenumGroup::StencilOp, sfail),
GLenumToString(GLenumGroup::StencilOp, dpfail),
GLenumToString(GLenumGroup::StencilOp, dppass));
Context *context = GetValidGlobalContext();
if (context)
......@@ -1019,9 +1027,9 @@ void GL_APIENTRY UniformMatrix2fv(GLint location,
const GLfloat *value)
{
EVENT(
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, const GLfloat *value "
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %s, const GLfloat *value "
"= 0x%016" PRIxPTR ")",
location, count, transpose, (uintptr_t)value);
location, count, GLbooleanToString(transpose), (uintptr_t)value);
Context *context = GetValidGlobalContext();
if (context)
......@@ -1042,9 +1050,9 @@ void GL_APIENTRY UniformMatrix3fv(GLint location,
const GLfloat *value)
{
EVENT(
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, const GLfloat *value "
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %s, const GLfloat *value "
"= 0x%016" PRIxPTR ")",
location, count, transpose, (uintptr_t)value);
location, count, GLbooleanToString(transpose), (uintptr_t)value);
Context *context = GetValidGlobalContext();
if (context)
......@@ -1065,9 +1073,9 @@ void GL_APIENTRY UniformMatrix4fv(GLint location,
const GLfloat *value)
{
EVENT(
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, const GLfloat *value "
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %s, const GLfloat *value "
"= 0x%016" PRIxPTR ")",
location, count, transpose, (uintptr_t)value);
location, count, GLbooleanToString(transpose), (uintptr_t)value);
Context *context = GetValidGlobalContext();
if (context)
......@@ -1735,9 +1743,10 @@ void GL_APIENTRY VertexAttribPointer(GLuint index,
const void *pointer)
{
EVENT(
"(GLuint index = %u, GLint size = %d, GLenum type = 0x%X, GLboolean normalized = %u, "
"GLsizei stride = %d, const void *pointer = 0x%016" PRIxPTR ")",
index, size, type, normalized, stride, (uintptr_t)pointer);
"(GLuint index = %u, GLint size = %d, GLenum type = %s, GLboolean normalized = %s, GLsizei "
"stride = %d, const void *pointer = 0x%016" PRIxPTR ")",
index, size, GLenumToString(GLenumGroup::VertexAttribPointerType, type),
GLbooleanToString(normalized), stride, (uintptr_t)pointer);
Context *context = GetValidGlobalContext();
if (context)
......
......@@ -13,6 +13,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -31,9 +32,9 @@ void GL_APIENTRY UniformMatrix2x3fv(GLint location,
const GLfloat *value)
{
EVENT(
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, const GLfloat *value "
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %s, const GLfloat *value "
"= 0x%016" PRIxPTR ")",
location, count, transpose, (uintptr_t)value);
location, count, GLbooleanToString(transpose), (uintptr_t)value);
Context *context = GetValidGlobalContext();
if (context)
......@@ -54,9 +55,9 @@ void GL_APIENTRY UniformMatrix2x4fv(GLint location,
const GLfloat *value)
{
EVENT(
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, const GLfloat *value "
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %s, const GLfloat *value "
"= 0x%016" PRIxPTR ")",
location, count, transpose, (uintptr_t)value);
location, count, GLbooleanToString(transpose), (uintptr_t)value);
Context *context = GetValidGlobalContext();
if (context)
......@@ -77,9 +78,9 @@ void GL_APIENTRY UniformMatrix3x2fv(GLint location,
const GLfloat *value)
{
EVENT(
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, const GLfloat *value "
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %s, const GLfloat *value "
"= 0x%016" PRIxPTR ")",
location, count, transpose, (uintptr_t)value);
location, count, GLbooleanToString(transpose), (uintptr_t)value);
Context *context = GetValidGlobalContext();
if (context)
......@@ -100,9 +101,9 @@ void GL_APIENTRY UniformMatrix3x4fv(GLint location,
const GLfloat *value)
{
EVENT(
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, const GLfloat *value "
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %s, const GLfloat *value "
"= 0x%016" PRIxPTR ")",
location, count, transpose, (uintptr_t)value);
location, count, GLbooleanToString(transpose), (uintptr_t)value);
Context *context = GetValidGlobalContext();
if (context)
......@@ -123,9 +124,9 @@ void GL_APIENTRY UniformMatrix4x2fv(GLint location,
const GLfloat *value)
{
EVENT(
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, const GLfloat *value "
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %s, const GLfloat *value "
"= 0x%016" PRIxPTR ")",
location, count, transpose, (uintptr_t)value);
location, count, GLbooleanToString(transpose), (uintptr_t)value);
Context *context = GetValidGlobalContext();
if (context)
......@@ -146,9 +147,9 @@ void GL_APIENTRY UniformMatrix4x3fv(GLint location,
const GLfloat *value)
{
EVENT(
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %u, const GLfloat *value "
"(GLint location = %d, GLsizei count = %d, GLboolean transpose = %s, const GLfloat *value "
"= 0x%016" PRIxPTR ")",
location, count, transpose, (uintptr_t)value);
location, count, GLbooleanToString(transpose), (uintptr_t)value);
Context *context = GetValidGlobalContext();
if (context)
......
......@@ -13,6 +13,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -32,10 +33,12 @@ void GL_APIENTRY CopyBufferSubData(GLenum readTarget,
GLsizeiptr size)
{
EVENT(
"(GLenum readTarget = 0x%X, GLenum writeTarget = 0x%X, GLintptr readOffset = %llu, "
"GLintptr writeOffset = %llu, GLsizeiptr size = %llu)",
readTarget, writeTarget, static_cast<unsigned long long>(readOffset),
static_cast<unsigned long long>(writeOffset), static_cast<unsigned long long>(size));
"(GLenum readTarget = %s, GLenum writeTarget = %s, GLintptr readOffset = %llu, GLintptr "
"writeOffset = %llu, GLsizeiptr size = %llu)",
GLenumToString(GLenumGroup::CopyBufferSubDataTarget, readTarget),
GLenumToString(GLenumGroup::CopyBufferSubDataTarget, writeTarget),
static_cast<unsigned long long>(readOffset), static_cast<unsigned long long>(writeOffset),
static_cast<unsigned long long>(size));
Context *context = GetValidGlobalContext();
if (context)
......@@ -57,8 +60,8 @@ void GL_APIENTRY CopyBufferSubData(GLenum readTarget,
void GL_APIENTRY DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
{
EVENT("(GLenum mode = 0x%X, GLint first = %d, GLsizei count = %d, GLsizei instancecount = %d)",
mode, first, count, instancecount);
EVENT("(GLenum mode = %s, GLint first = %d, GLsizei count = %d, GLsizei instancecount = %d)",
GLenumToString(GLenumGroup::PrimitiveType, mode), first, count, instancecount);
Context *context = GetValidGlobalContext();
if (context)
......@@ -83,9 +86,10 @@ void GL_APIENTRY DrawElementsInstanced(GLenum mode,
GLsizei instancecount)
{
EVENT(
"(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const void *indices = "
"(GLenum mode = %s, GLsizei count = %d, GLenum type = %s, const void *indices = "
"0x%016" PRIxPTR ", GLsizei instancecount = %d)",
mode, count, type, (uintptr_t)indices, instancecount);
GLenumToString(GLenumGroup::PrimitiveType, mode), count,
GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, instancecount);
Context *context = GetValidGlobalContext();
if (context)
......@@ -137,9 +141,10 @@ void GL_APIENTRY GetActiveUniformBlockiv(GLuint program,
GLint *params)
{
EVENT(
"(GLuint program = %u, GLuint uniformBlockIndex = %u, GLenum pname = 0x%X, GLint *params = "
"(GLuint program = %u, GLuint uniformBlockIndex = %u, GLenum pname = %s, GLint *params = "
"0x%016" PRIxPTR ")",
program, uniformBlockIndex, pname, (uintptr_t)params);
program, uniformBlockIndex, GLenumToString(GLenumGroup::UniformBlockPName, pname),
(uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -190,8 +195,9 @@ void GL_APIENTRY GetActiveUniformsiv(GLuint program,
{
EVENT(
"(GLuint program = %u, GLsizei uniformCount = %d, const GLuint *uniformIndices = "
"0x%016" PRIxPTR ", GLenum pname = 0x%X, GLint *params = 0x%016" PRIxPTR ")",
program, uniformCount, (uintptr_t)uniformIndices, pname, (uintptr_t)params);
"0x%016" PRIxPTR ", GLenum pname = %s, GLint *params = 0x%016" PRIxPTR ")",
program, uniformCount, (uintptr_t)uniformIndices,
GLenumToString(GLenumGroup::UniformPName, pname), (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -281,8 +287,9 @@ void GL_APIENTRY PrimitiveRestartIndex(GLuint index)
void GL_APIENTRY TexBuffer(GLenum target, GLenum internalformat, GLuint buffer)
{
EVENT("(GLenum target = 0x%X, GLenum internalformat = 0x%X, GLuint buffer = %u)", target,
internalformat, buffer);
EVENT("(GLenum target = %s, GLenum internalformat = %s, GLuint buffer = %u)",
GLenumToString(GLenumGroup::TextureTarget, target),
GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer);
Context *context = GetValidGlobalContext();
if (context)
......
......@@ -13,6 +13,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -34,9 +35,11 @@ void GL_APIENTRY BindImageTexture(GLuint unit,
GLenum format)
{
EVENT(
"(GLuint unit = %u, GLuint texture = %u, GLint level = %d, GLboolean layered = %u, GLint "
"layer = %d, GLenum access = 0x%X, GLenum format = 0x%X)",
unit, texture, level, layered, layer, access, format);
"(GLuint unit = %u, GLuint texture = %u, GLint level = %d, GLboolean layered = %s, GLint "
"layer = %d, GLenum access = %s, GLenum format = %s)",
unit, texture, level, GLbooleanToString(layered), layer,
GLenumToString(GLenumGroup::BufferAccessARB, access),
GLenumToString(GLenumGroup::InternalFormat, format));
Context *context = GetValidGlobalContext();
if (context)
......@@ -60,9 +63,10 @@ void GL_APIENTRY DrawArraysInstancedBaseInstance(GLenum mode,
GLuint baseinstance)
{
EVENT(
"(GLenum mode = 0x%X, GLint first = %d, GLsizei count = %d, GLsizei instancecount = %d, "
"(GLenum mode = %s, GLint first = %d, GLsizei count = %d, GLsizei instancecount = %d, "
"GLuint baseinstance = %u)",
mode, first, count, instancecount, baseinstance);
GLenumToString(GLenumGroup::PrimitiveType, mode), first, count, instancecount,
baseinstance);
Context *context = GetValidGlobalContext();
if (context)
......@@ -88,9 +92,11 @@ void GL_APIENTRY DrawElementsInstancedBaseInstance(GLenum mode,
GLuint baseinstance)
{
EVENT(
"(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const void *indices = "
"(GLenum mode = %s, GLsizei count = %d, GLenum type = %s, const void *indices = "
"0x%016" PRIxPTR ", GLsizei instancecount = %d, GLuint baseinstance = %u)",
mode, count, type, (uintptr_t)indices, instancecount, baseinstance);
GLenumToString(GLenumGroup::PrimitiveType, mode), count,
GLenumToString(GLenumGroup::PrimitiveType, type), (uintptr_t)indices, instancecount,
baseinstance);
Context *context = GetValidGlobalContext();
if (context)
......@@ -117,10 +123,12 @@ void GL_APIENTRY DrawElementsInstancedBaseVertexBaseInstance(GLenum mode,
GLuint baseinstance)
{
EVENT(
"(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const void *indices = "
"(GLenum mode = %s, GLsizei count = %d, GLenum type = %s, const void *indices = "
"0x%016" PRIxPTR
", GLsizei instancecount = %d, GLint basevertex = %d, GLuint baseinstance = %u)",
mode, count, type, (uintptr_t)indices, instancecount, basevertex, baseinstance);
GLenumToString(GLenumGroup::PrimitiveType, mode), count,
GLenumToString(GLenumGroup::PrimitiveType, type), (uintptr_t)indices, instancecount,
basevertex, baseinstance);
Context *context = GetValidGlobalContext();
if (context)
......@@ -141,8 +149,8 @@ void GL_APIENTRY DrawElementsInstancedBaseVertexBaseInstance(GLenum mode,
void GL_APIENTRY DrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount)
{
EVENT("(GLenum mode = 0x%X, GLuint id = %u, GLsizei instancecount = %d)", mode, id,
instancecount);
EVENT("(GLenum mode = %s, GLuint id = %u, GLsizei instancecount = %d)",
GLenumToString(GLenumGroup::PrimitiveType, mode), id, instancecount);
Context *context = GetValidGlobalContext();
if (context)
......@@ -163,8 +171,8 @@ void GL_APIENTRY DrawTransformFeedbackStreamInstanced(GLenum mode,
GLuint stream,
GLsizei instancecount)
{
EVENT("(GLenum mode = 0x%X, GLuint id = %u, GLuint stream = %u, GLsizei instancecount = %d)",
mode, id, stream, instancecount);
EVENT("(GLenum mode = %s, GLuint id = %u, GLuint stream = %u, GLsizei instancecount = %d)",
GLenumToString(GLenumGroup::PrimitiveType, mode), id, stream, instancecount);
Context *context = GetValidGlobalContext();
if (context)
......@@ -187,9 +195,10 @@ void GL_APIENTRY GetActiveAtomicCounterBufferiv(GLuint program,
GLint *params)
{
EVENT(
"(GLuint program = %u, GLuint bufferIndex = %u, GLenum pname = 0x%X, GLint *params = "
"(GLuint program = %u, GLuint bufferIndex = %u, GLenum pname = %s, GLint *params = "
"0x%016" PRIxPTR ")",
program, bufferIndex, pname, (uintptr_t)params);
program, bufferIndex, GLenumToString(GLenumGroup::AtomicCounterBufferPName, pname),
(uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -213,9 +222,11 @@ void GL_APIENTRY GetInternalformativ(GLenum target,
GLint *params)
{
EVENT(
"(GLenum target = 0x%X, GLenum internalformat = 0x%X, GLenum pname = 0x%X, GLsizei bufSize "
"= %d, GLint *params = 0x%016" PRIxPTR ")",
target, internalformat, pname, bufSize, (uintptr_t)params);
"(GLenum target = %s, GLenum internalformat = %s, GLenum pname = %s, GLsizei bufSize = %d, "
"GLint *params = 0x%016" PRIxPTR ")",
GLenumToString(GLenumGroup::TextureTarget, target),
GLenumToString(GLenumGroup::InternalFormat, internalformat),
GLenumToString(GLenumGroup::InternalFormatPName, pname), bufSize, (uintptr_t)params);
Context *context = GetValidGlobalContext();
if (context)
......@@ -234,7 +245,8 @@ void GL_APIENTRY GetInternalformativ(GLenum target,
void GL_APIENTRY MemoryBarrier(GLbitfield barriers)
{
EVENT("(GLbitfield barriers = 0x%X)", barriers);
EVENT("(GLbitfield barriers = %s)",
GLbitfieldToString(GLenumGroup::MemoryBarrierMask, barriers).c_str());
Context *context = GetValidGlobalContext();
if (context)
......@@ -251,9 +263,9 @@ void GL_APIENTRY MemoryBarrier(GLbitfield barriers)
void GL_APIENTRY TexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
{
EVENT(
"(GLenum target = 0x%X, GLsizei levels = %d, GLenum internalformat = 0x%X, GLsizei width = "
"%d)",
target, levels, internalformat, width);
"(GLenum target = %s, GLsizei levels = %d, GLenum internalformat = %s, GLsizei width = %d)",
GLenumToString(GLenumGroup::TextureTarget, target), levels,
GLenumToString(GLenumGroup::InternalFormat, internalformat), width);
Context *context = GetValidGlobalContext();
if (context)
......@@ -272,9 +284,10 @@ void GL_APIENTRY
TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
{
EVENT(
"(GLenum target = 0x%X, GLsizei levels = %d, GLenum internalformat = 0x%X, GLsizei width = "
"%d, GLsizei height = %d)",
target, levels, internalformat, width, height);
"(GLenum target = %s, GLsizei levels = %d, GLenum internalformat = %s, GLsizei width = %d, "
"GLsizei height = %d)",
GLenumToString(GLenumGroup::TextureTarget, target), levels,
GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);
Context *context = GetValidGlobalContext();
if (context)
......@@ -300,9 +313,10 @@ void GL_APIENTRY TexStorage3D(GLenum target,
GLsizei depth)
{
EVENT(
"(GLenum target = 0x%X, GLsizei levels = %d, GLenum internalformat = 0x%X, GLsizei width = "
"%d, GLsizei height = %d, GLsizei depth = %d)",
target, levels, internalformat, width, height, depth);
"(GLenum target = %s, GLsizei levels = %d, GLenum internalformat = %s, GLsizei width = %d, "
"GLsizei height = %d, GLsizei depth = %d)",
GLenumToString(GLenumGroup::TextureTarget, target), levels,
GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth);
Context *context = GetValidGlobalContext();
if (context)
......
......@@ -13,6 +13,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -28,9 +29,9 @@ namespace gl
void GL_APIENTRY BindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers)
{
EVENT(
"(GLenum target = 0x%X, GLuint first = %u, GLsizei count = %d, const GLuint *buffers = "
"(GLenum target = %s, GLuint first = %u, GLsizei count = %d, const GLuint *buffers = "
"0x%016" PRIxPTR ")",
target, first, count, (uintptr_t)buffers);
GLenumToString(GLenumGroup::BufferTargetARB, target), first, count, (uintptr_t)buffers);
Context *context = GetValidGlobalContext();
if (context)
......@@ -54,10 +55,11 @@ void GL_APIENTRY BindBuffersRange(GLenum target,
const GLsizeiptr *sizes)
{
EVENT(
"(GLenum target = 0x%X, GLuint first = %u, GLsizei count = %d, const GLuint *buffers = "
"(GLenum target = %s, GLuint first = %u, GLsizei count = %d, const GLuint *buffers = "
"0x%016" PRIxPTR ", const GLintptr *offsets = 0x%016" PRIxPTR
", const GLsizeiptr *sizes = 0x%016" PRIxPTR ")",
target, first, count, (uintptr_t)buffers, (uintptr_t)offsets, (uintptr_t)sizes);
GLenumToString(GLenumGroup::BufferTargetARB, target), first, count, (uintptr_t)buffers,
(uintptr_t)offsets, (uintptr_t)sizes);
Context *context = GetValidGlobalContext();
if (context)
......@@ -158,9 +160,11 @@ void GL_APIENTRY BindVertexBuffers(GLuint first,
void GL_APIENTRY BufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)
{
EVENT("(GLenum target = 0x%X, GLsizeiptr size = %llu, const void *data = 0x%016" PRIxPTR
", GLbitfield flags = 0x%X)",
target, static_cast<unsigned long long>(size), (uintptr_t)data, flags);
EVENT("(GLenum target = %s, GLsizeiptr size = %llu, const void *data = 0x%016" PRIxPTR
", GLbitfield flags = %s)",
GLenumToString(GLenumGroup::BufferStorageTarget, target),
static_cast<unsigned long long>(size), (uintptr_t)data,
GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());
Context *context = GetValidGlobalContext();
if (context)
......@@ -179,9 +183,10 @@ void GL_APIENTRY
ClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data)
{
EVENT(
"(GLuint texture = %u, GLint level = %d, GLenum format = 0x%X, GLenum type = 0x%X, const "
"void *data = 0x%016" PRIxPTR ")",
texture, level, format, type, (uintptr_t)data);
"(GLuint texture = %u, GLint level = %d, GLenum format = %s, GLenum type = %s, const void "
"*data = 0x%016" PRIxPTR ")",
texture, level, GLenumToString(GLenumGroup::PixelFormat, format),
GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);
Context *context = GetValidGlobalContext();
if (context)
......@@ -211,9 +216,10 @@ void GL_APIENTRY ClearTexSubImage(GLuint texture,
EVENT(
"(GLuint texture = %u, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, GLint "
"zoffset = %d, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, GLenum format "
"= 0x%X, GLenum type = 0x%X, const void *data = 0x%016" PRIxPTR ")",
texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type,
(uintptr_t)data);
"= %s, GLenum type = %s, const void *data = 0x%016" PRIxPTR ")",
texture, level, xoffset, yoffset, zoffset, width, height, depth,
GLenumToString(GLenumGroup::PixelFormat, format),
GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);
Context *context = GetValidGlobalContext();
if (context)
......
......@@ -13,6 +13,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/Context.inl.h"
#include "libANGLE/entry_points_utils.h"
#include "libANGLE/gl_enum_utils_autogen.h"
#include "libANGLE/validationEGL.h"
#include "libANGLE/validationES.h"
#include "libANGLE/validationES1.h"
......@@ -31,10 +32,10 @@ void GL_APIENTRY MultiDrawArraysIndirectCount(GLenum mode,
GLsizei maxdrawcount,
GLsizei stride)
{
EVENT("(GLenum mode = 0x%X, const void *indirect = 0x%016" PRIxPTR
EVENT("(GLenum mode = %s, const void *indirect = 0x%016" PRIxPTR
", GLintptr drawcount = %llu, GLsizei maxdrawcount = %d, GLsizei stride = %d)",
mode, (uintptr_t)indirect, static_cast<unsigned long long>(drawcount), maxdrawcount,
stride);
GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)indirect,
static_cast<unsigned long long>(drawcount), maxdrawcount, stride);
Context *context = GetValidGlobalContext();
if (context)
......@@ -58,10 +59,11 @@ void GL_APIENTRY MultiDrawElementsIndirectCount(GLenum mode,
GLsizei maxdrawcount,
GLsizei stride)
{
EVENT("(GLenum mode = 0x%X, GLenum type = 0x%X, const void *indirect = 0x%016" PRIxPTR
EVENT("(GLenum mode = %s, GLenum type = %s, const void *indirect = 0x%016" PRIxPTR
", GLintptr drawcount = %llu, GLsizei maxdrawcount = %d, GLsizei stride = %d)",
mode, type, (uintptr_t)indirect, static_cast<unsigned long long>(drawcount), maxdrawcount,
stride);
GLenumToString(GLenumGroup::PrimitiveType, mode),
GLenumToString(GLenumGroup::DefaultGroup, type), (uintptr_t)indirect,
static_cast<unsigned long long>(drawcount), maxdrawcount, stride);
Context *context = GetValidGlobalContext();
if (context)
......
......@@ -938,8 +938,8 @@ libangle_capture_sources = [
"src/libANGLE/capture_gles_3_1_params.cpp",
"src/libANGLE/capture_gles_ext_autogen.cpp",
"src/libANGLE/capture_gles_ext_params.cpp",
"src/libANGLE/gl_enum_utils_autogen.cpp",
"src/libANGLE/frame_capture_utils_autogen.cpp",
"src/libANGLE/gl_enum_utils_autogen.cpp",
]
libangle_vulkan_android_sources = [
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment