Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit e960392

Browse files
null77Commit Bot
authored andcommitted
Capture/Replay: Correct a few GLenum replay issues.
This change refactors the GLenum utils into a non-autogenerated and an autogenerated portion. That makes it easier to modify the non-auto- generated bits to properly output GLenums even when the gl.xml data isn't totally correct. For instance, the "GetPName" group was missing a bunch of queries. Instead of trying to fix the GL we can simply fall back to querying the "Default" group when we return invalid enum. Also corrects a missing "0x" on hex output. Also allows the capture/replay sample to specify the correct binary data directory when testing a replay. Bug: angleproject:3611 Change-Id: I8e4c690b2850bb157a8cde8b057b20603e4b177d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1891008 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
1 parent ba65c15 commit e960392

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+371
-357
lines changed

BUILD.gn

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -772,7 +772,10 @@ angle_source_set("libANGLE") {
772772

773773
# gl_enum_utils defaults included in with_capture build
774774
if (angle_enable_trace || is_debug) {
775-
sources += [ "src/libANGLE/gl_enum_utils_autogen.cpp" ]
775+
sources += [
776+
"src/libANGLE/gl_enum_utils.cpp",
777+
"src/libANGLE/gl_enum_utils_autogen.cpp",
778+
]
776779
}
777780
}
778781

samples/BUILD.gn

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ template("angle_sample") {
5757
angle_executable(target_name) {
5858
forward_variables_from(invoker,
5959
[
60-
"sources",
6160
"cflags",
61+
"defines",
62+
"sources",
6263
])
6364
deps = [
6465
":sample_util",
@@ -224,6 +225,9 @@ template("capture_replay") {
224225
"capture_replay/angle_capture_context1.cpp",
225226
"capture_replay/angle_capture_context1.h",
226227
]
228+
229+
_data_path = rebase_path("capture_replay", root_out_dir)
230+
defines = [ "ANGLE_CAPTURE_REPLAY_SAMPLE_DATA_DIR=\"${_data_path}\"" ]
227231
suppressed_configs = [ "$angle_root:constructor_and_destructor_warnings" ]
228232
}
229233
}

samples/capture_replay/CaptureReplay.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,20 @@ class CaptureReplaySample : public SampleApplication
1313
{
1414
public:
1515
CaptureReplaySample(int argc, char **argv)
16-
: SampleApplication("CaptureReplaySample", argc, argv, 2, 0)
16+
: SampleApplication("CaptureReplaySample", argc, argv, 3, 0)
1717
{}
1818

19-
bool initialize() override { return true; }
19+
bool initialize() override
20+
{
21+
// Set CWD to executable directory.
22+
std::string exeDir = angle::GetExecutableDirectory();
23+
if (!angle::SetCWD(exeDir.c_str()))
24+
return false;
25+
SetBinaryDataDir(ANGLE_CAPTURE_REPLAY_SAMPLE_DATA_DIR);
26+
SetupContext1Replay();
27+
return true;
28+
}
29+
2030
void destroy() override {}
2131

2232
void draw() override

scripts/code_generation_hashes/GL_EGL_entry_points.json

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts/entry_point_packed_gl_enums.json":
77
"3b72a1d43df45cf53784b2a0002b93e5",
88
"scripts/generate_entry_points.py":
9-
"b6c3c544f603a6e37168c39581a86c3d",
9+
"fef06e2feec72f9e4bf4f2b8c9c76c17",
1010
"scripts/gl.xml":
1111
"b470cb06b06cbbe7adb2c8129ec85708",
1212
"scripts/gl_angle_ext.xml":
@@ -66,27 +66,27 @@
6666
"src/libANGLE/Context_gles_ext_autogen.h":
6767
"2b79ca4165cde1822bf3114e9be36ffe",
6868
"src/libANGLE/capture_gles_1_0_autogen.cpp":
69-
"b186bbd2b8e541208f58c68a7b7201d0",
69+
"cdf61f5bb245ec4b7976922ad3c983b4",
7070
"src/libANGLE/capture_gles_1_0_autogen.h":
7171
"942cece5d16510b77529dd549fc8ffb6",
7272
"src/libANGLE/capture_gles_2_0_autogen.cpp":
73-
"928f64b38fefa6f69b1b9ddd3cb0a800",
73+
"6abbbf043ab061141516ec0a78d83414",
7474
"src/libANGLE/capture_gles_2_0_autogen.h":
7575
"1d7c76f7dfcb666161bc4675932511c5",
7676
"src/libANGLE/capture_gles_3_0_autogen.cpp":
77-
"0ccdb5401c2630ecc2bbd0bcbc1559f0",
77+
"8c29bbcc49be5d9792b65a98dde38c81",
7878
"src/libANGLE/capture_gles_3_0_autogen.h":
7979
"47530c15422e03b9cc224533eed1f2f7",
8080
"src/libANGLE/capture_gles_3_1_autogen.cpp":
81-
"1de6bb30272e7b4b29e508a64c7d2e63",
81+
"2a941ced0f0721fb0256accbf07fc4c3",
8282
"src/libANGLE/capture_gles_3_1_autogen.h":
8383
"389c0212c9d2da8bdc159aecee243551",
8484
"src/libANGLE/capture_gles_3_2_autogen.cpp":
85-
"7cb1866e8c3d754187d25a7db272dded",
85+
"105d24635bacbd3e464da5056c328987",
8686
"src/libANGLE/capture_gles_3_2_autogen.h":
8787
"670fe346f46607380fc7cf8234657123",
8888
"src/libANGLE/capture_gles_ext_autogen.cpp":
89-
"f28449f3234c31a499ca46636898ff34",
89+
"3157fc72b59492ae13f2b4ddb17a4a7e",
9090
"src/libANGLE/capture_gles_ext_autogen.h":
9191
"50e37179609055eeee59807b631e33c9",
9292
"src/libANGLE/entry_points_enum_autogen.cpp":
@@ -150,107 +150,107 @@
150150
"src/libANGLE/validationGL4_autogen.h":
151151
"506d7f2976f38191e8124292d4b2381c",
152152
"src/libGL/entry_points_gl_1_0_autogen.cpp":
153-
"97af960a3ac3e09c7582ae5fd34ea00f",
153+
"a4daa0cb63f70d3df36d82c62dadf4eb",
154154
"src/libGL/entry_points_gl_1_0_autogen.h":
155155
"a2372719bd7fbc4a6b070ecae7d9247a",
156156
"src/libGL/entry_points_gl_1_1_autogen.cpp":
157-
"ffb6c6ad66896c1fb6ae829943a8ab19",
157+
"bda932e7b8c48c6f9d3e67986daa760f",
158158
"src/libGL/entry_points_gl_1_1_autogen.h":
159159
"29ff203c0d402f78d020525a5e5ee447",
160160
"src/libGL/entry_points_gl_1_2_autogen.cpp":
161-
"46a9ee44d1130a0edc6af15a7ba69cae",
161+
"58cbcbd98a5b2a39f0399bc4cf877d72",
162162
"src/libGL/entry_points_gl_1_2_autogen.h":
163163
"db041e9b37eaaf1c31a4b4e2e4e987f4",
164164
"src/libGL/entry_points_gl_1_3_autogen.cpp":
165-
"6808f83f6917854166d327ae3fd65b06",
165+
"084e837b6de7022a77189025778edf66",
166166
"src/libGL/entry_points_gl_1_3_autogen.h":
167167
"0c30cbdd3d5b10e9217a049cc2794317",
168168
"src/libGL/entry_points_gl_1_4_autogen.cpp":
169-
"3008406765111143f7fc03403ab1ae02",
169+
"bdf0e58164be5874746c932a8b4a4ca9",
170170
"src/libGL/entry_points_gl_1_4_autogen.h":
171171
"6f3dcfd98c18cd53f32e61ee01eabad6",
172172
"src/libGL/entry_points_gl_1_5_autogen.cpp":
173-
"52cdf4ba872a2cb70d3da4a37550fe65",
173+
"d1af528536223d6596de5f80eba8afa0",
174174
"src/libGL/entry_points_gl_1_5_autogen.h":
175175
"8caacff247caecb833b065afaf6e90ef",
176176
"src/libGL/entry_points_gl_2_0_autogen.cpp":
177-
"95a7a8632efad5246cd47f13e67a4f8f",
177+
"5ca4096a4ef67886a0ab8833a1d78e38",
178178
"src/libGL/entry_points_gl_2_0_autogen.h":
179179
"f0f58f83717148d58b735af5c435f2ef",
180180
"src/libGL/entry_points_gl_2_1_autogen.cpp":
181-
"3bcd909ee2074e04bdd74cd5334a3314",
181+
"de8220d247cf6f5c3fe6e53180f4e4e4",
182182
"src/libGL/entry_points_gl_2_1_autogen.h":
183183
"87cd6d513a5852c56eed9b58484fbe19",
184184
"src/libGL/entry_points_gl_3_0_autogen.cpp":
185-
"8c6e1637e876828f7a843bcd8ee343ad",
185+
"ce58fb8f366180f4985c15525fd2d688",
186186
"src/libGL/entry_points_gl_3_0_autogen.h":
187187
"47396290a846f808e598acdbca56e9b3",
188188
"src/libGL/entry_points_gl_3_1_autogen.cpp":
189-
"ed491a5e2eb7db9737b7a7e637291f09",
189+
"7580f570dc32617d92795f64acd2bcd2",
190190
"src/libGL/entry_points_gl_3_1_autogen.h":
191191
"6ee6613c0206d99c6afdcd3faddb52a3",
192192
"src/libGL/entry_points_gl_3_2_autogen.cpp":
193-
"629fe168acc316b1f2a370048e6f0ee4",
193+
"85c8dad28022855d4b08189abd0c45f9",
194194
"src/libGL/entry_points_gl_3_2_autogen.h":
195195
"347e40b5c9fd08a693bf4ffe713c61e6",
196196
"src/libGL/entry_points_gl_3_3_autogen.cpp":
197-
"56cf84c3812e618cbe818a1f4e7e01ac",
197+
"82a9a4afafd9d4aab5c549adcfb1615e",
198198
"src/libGL/entry_points_gl_3_3_autogen.h":
199199
"2151c64b03364111ad1455609243caba",
200200
"src/libGL/entry_points_gl_4_0_autogen.cpp":
201-
"5109dc62f6d5ae5a7e967d67289c27df",
201+
"706e99bdf41e8b40770e30212d029aa7",
202202
"src/libGL/entry_points_gl_4_0_autogen.h":
203203
"c5a258322ee6de37ffdbb6f40d5703a2",
204204
"src/libGL/entry_points_gl_4_1_autogen.cpp":
205-
"74448960c2c6d1ade9e96914b13a71f6",
205+
"e7030ef9c2eb8a060ff39f8290e08324",
206206
"src/libGL/entry_points_gl_4_1_autogen.h":
207207
"ea1e18bf5ed2bd1063c940bd793cb50c",
208208
"src/libGL/entry_points_gl_4_2_autogen.cpp":
209-
"9de6c0fb0299ed6ac582888391d88e70",
209+
"b1398145a971caf304bfa04b763ef4c3",
210210
"src/libGL/entry_points_gl_4_2_autogen.h":
211211
"e6b93e1c3028230ebf5ba8a09f5f4aca",
212212
"src/libGL/entry_points_gl_4_3_autogen.cpp":
213-
"90385feca064cabc28380a66e82429d1",
213+
"fdbad2524aa7da7fae958f63561b67ae",
214214
"src/libGL/entry_points_gl_4_3_autogen.h":
215215
"60bf8a8337129670875de694386a0a9d",
216216
"src/libGL/entry_points_gl_4_4_autogen.cpp":
217-
"c79d8b66a98a49b66f12ff6379ff8fb4",
217+
"433442c50de217a592a9196b8459e4b0",
218218
"src/libGL/entry_points_gl_4_4_autogen.h":
219219
"d0a8c556ffb1c9d4519a66b2868c68b2",
220220
"src/libGL/entry_points_gl_4_5_autogen.cpp":
221-
"ddb5009c66a37741716cd508cf83c0c3",
221+
"84025bdbd5390f84a30c2ea6c1412611",
222222
"src/libGL/entry_points_gl_4_5_autogen.h":
223223
"0cc66bfbe40b1120e38ba977c2c95cc1",
224224
"src/libGL/entry_points_gl_4_6_autogen.cpp":
225-
"17403d2322e09156e58dd97ef341ed4b",
225+
"76e7e0bfa5550d77665f63c6f7a918a9",
226226
"src/libGL/entry_points_gl_4_6_autogen.h":
227227
"d659e18d8caffa8d0729fc1a8bdd79f2",
228228
"src/libGL/libGL_autogen.cpp":
229229
"9dafbdb3d31700b4505f312a91b147fc",
230230
"src/libGL/libGL_autogen.def":
231231
"b372327de868ff8eaa4f837b7e434f72",
232232
"src/libGLESv2/entry_points_gles_1_0_autogen.cpp":
233-
"ca944f7d1a68a87f07acf51b4f6b11f6",
233+
"09ad611acdd58e37aae27cbde7ec04a1",
234234
"src/libGLESv2/entry_points_gles_1_0_autogen.h":
235235
"bc93815cab91fe9b6f86d04ef4e8863f",
236236
"src/libGLESv2/entry_points_gles_2_0_autogen.cpp":
237-
"2a2a36cace079a1c836f9227811143e2",
237+
"cb70d24eba01f14857514c2c95fe0fea",
238238
"src/libGLESv2/entry_points_gles_2_0_autogen.h":
239239
"3bbaf1cf42fba5d675e5b54cd1d14df7",
240240
"src/libGLESv2/entry_points_gles_3_0_autogen.cpp":
241-
"e0ec5aae2046f3cb7de9d51594024fe9",
241+
"0268fdd48ffb3ae84a0f1dcd4064d45f",
242242
"src/libGLESv2/entry_points_gles_3_0_autogen.h":
243243
"395f6978219abd5182bbe80cc367e40c",
244244
"src/libGLESv2/entry_points_gles_3_1_autogen.cpp":
245-
"a5b1581c1f809b6f7b36b06688a95d7b",
245+
"4fe124db0b5d238038358853f349b247",
246246
"src/libGLESv2/entry_points_gles_3_1_autogen.h":
247247
"043d09a964c740067bf4279e0b544aed",
248248
"src/libGLESv2/entry_points_gles_3_2_autogen.cpp":
249-
"83c4850e1c9be655bd342ef34a398012",
249+
"09693d9b4cd5f015ee1b1bd46a2a0e0a",
250250
"src/libGLESv2/entry_points_gles_3_2_autogen.h":
251251
"e06eb4df7dc6fb29c5fd632a54b0b162",
252252
"src/libGLESv2/entry_points_gles_ext_autogen.cpp":
253-
"7dd5f8f00efe704691859723dc83f5ec",
253+
"19f6e2b5b612f49f8a079c646112d1dd",
254254
"src/libGLESv2/entry_points_gles_ext_autogen.h":
255255
"ce40d2f260a855dd7f11cfb919db4b70",
256256
"src/libGLESv2/libGLESv2_autogen.cpp":
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
22
"scripts/gen_gl_enum_utils.py":
3-
"a9b5da824adad3e9f8f586a6a53708c6",
3+
"43712e01cc1c0ae60b4eccef659fe328",
44
"scripts/gl.xml":
55
"b470cb06b06cbbe7adb2c8129ec85708",
66
"scripts/gl_angle_ext.xml":
77
"7ae7214df3151267943d34b2b3fb9d2b",
88
"scripts/registry_xml.py":
99
"b24096dba06cad5f97b07edbd5f0c132",
1010
"src/libANGLE/gl_enum_utils_autogen.cpp":
11-
"2561a68fa7582e248c7d9feb400723d3",
11+
"1d8757468215b824bf6a1c0bd077909d",
1212
"src/libANGLE/gl_enum_utils_autogen.h":
13-
"b6b36e2bbb676ed3b744e883b0d101e1"
13+
"fb0bb7f506f6082ea3b2c3fa384d2739"
1414
}

scripts/gen_gl_enum_utils.py

Lines changed: 12 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -27,29 +27,13 @@
2727
# ifndef LIBANGLE_GL_ENUM_UTILS_AUTOGEN_H_
2828
# define LIBANGLE_GL_ENUM_UTILS_AUTOGEN_H_
2929
30-
#include <string>
31-
#include <ostream>
32-
33-
#include "common/PackedGLEnums_autogen.h"
34-
3530
namespace gl
3631
{{
37-
38-
enum class GLenumGroup {{
32+
enum class GLenumGroup
33+
{{
3934
{gl_enum_groups}
4035
}};
41-
42-
const char *GLbooleanToString(unsigned int value);
43-
44-
const char *GLenumToString(GLenumGroup enumGroup, unsigned int value);
45-
46-
std::string GLbitfieldToString(GLenumGroup enumGroup, unsigned int value);
47-
48-
void OutputGLenumString(std::ostream &out, GLenumGroup enumGroup, unsigned int value);
49-
50-
void OutputGLbitfieldString(std::ostream &out, GLenumGroup enumGroup, unsigned int value);
51-
52-
}}
36+
}} // namespace gl
5337
5438
# endif // LIBANGLE_GL_ENUM_UTILS_AUTOGEN_H_
5539
"""
@@ -66,57 +50,27 @@
6650
6751
#include "libANGLE/gl_enum_utils_autogen.h"
6852
53+
#include "libANGLE/gl_enum_utils.h"
54+
6955
#include <sstream>
7056
7157
#include "common/bitset_utils.h"
7258
7359
namespace gl
7460
{{
75-
76-
namespace
77-
{{
78-
constexpr char kEnumUnknown[] = "EnumUnknown";
79-
}} // anonymous namespace
80-
81-
void OutputGLenumString(std::ostream &out, GLenumGroup enumGroup, unsigned int value)
61+
const char *GLenumToString(GLenumGroup enumGroup, unsigned int value)
8262
{{
83-
const char *enumStr = GLenumToString(enumGroup, value);
84-
if (enumStr != kEnumUnknown)
63+
switch (enumGroup)
8564
{{
86-
out << enumStr;
87-
}}
88-
else
89-
{{
90-
out << std::hex << value << std::dec;
91-
}}
92-
}}
93-
94-
void OutputGLbitfieldString(std::ostream &out, GLenumGroup enumGroup, unsigned int value)
95-
{{
96-
out << GLbitfieldToString(enumGroup, value);
97-
}}
98-
99-
const char *GLbooleanToString(unsigned int value) {{
100-
switch (value) {{
101-
case 0x0:
102-
return "GL_FALSE";
103-
case 0x1:
104-
return "GL_TRUE";
105-
default:
106-
return kEnumUnknown;
107-
}}
108-
}}
109-
110-
const char *GLenumToString(GLenumGroup enumGroup, unsigned int value) {{
111-
switch (enumGroup) {{
11265
{gl_enums_value_to_string_table}
11366
default:
114-
return kEnumUnknown;
67+
return kUnknownGLenumString;
11568
}}
11669
}}
11770
11871
119-
std::string GLbitfieldToString(GLenumGroup enumGroup, unsigned int value) {{
72+
std::string GLbitfieldToString(GLenumGroup enumGroup, unsigned int value)
73+
{{
12074
std::stringstream st;
12175
12276
const angle::BitSet<32> bitSet(value);
@@ -135,16 +89,15 @@
13589
13690
return st.str();
13791
}}
138-
139-
}}
92+
}} // namespace gl
14093
14194
"""
14295

14396
template_enum_group_case = """case GLenumGroup::{group_name}: {{
14497
switch (value) {{
14598
{inner_group_cases}
14699
default:
147-
return kEnumUnknown;
100+
return kUnknownGLenumString;
148101
}}
149102
}}
150103
"""

scripts/generate_entry_points.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ class Context;
298298
299299
#include "libANGLE/Context.h"
300300
#include "libANGLE/FrameCapture.h"
301-
#include "libANGLE/gl_enum_utils_autogen.h"
301+
#include "libANGLE/gl_enum_utils.h"
302302
#include "libANGLE/validation{annotation_no_dash}.h"
303303
304304
using namespace angle;
@@ -447,7 +447,7 @@ class Context;
447447
#include "libANGLE/Context.h"
448448
#include "libANGLE/Context.inl.h"
449449
#include "libANGLE/capture_{header_version}_autogen.h"
450-
#include "libANGLE/gl_enum_utils_autogen.h"
450+
#include "libANGLE/gl_enum_utils.h"
451451
#include "libANGLE/validation{validation_header_version}.h"
452452
#include "libANGLE/entry_points_utils.h"
453453
#include "libGLESv2/global_state.h"
@@ -462,7 +462,7 @@ class Context;
462462
463463
#include "libANGLE/Context.h"
464464
#include "libANGLE/Context.inl.h"
465-
#include "libANGLE/gl_enum_utils_autogen.h"
465+
#include "libANGLE/gl_enum_utils.h"
466466
#include "libANGLE/validationEGL.h"
467467
#include "libANGLE/validationES.h"
468468
#include "libANGLE/validationES1.h"

0 commit comments

Comments
 (0)