mirror of
https://github.com/godotengine/godot-angle-static.git
synced 2026-01-03 14:09:33 +03:00
Trace Interpreter: Support Manhattan trace.
Adds the following fixes and features: - support transform feedback varying strings - support infinity and NaN constants - support for sampler and query resources Bug: angleproject:7887 Change-Id: Ib01afe66e4fda9bc77d0cb5eed52fa83a694a7d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4126885 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
This commit is contained in:
committed by
Angle LUCI CQ
parent
f7b5d5d1e0
commit
2c582dcb7b
@@ -1603,7 +1603,7 @@
|
||||
"args": [
|
||||
"--log=debug",
|
||||
"interpret",
|
||||
"among_us:trex_200",
|
||||
"among_us:manhattan_10:trex_200",
|
||||
"-L=2",
|
||||
"--show-test-stdout"
|
||||
],
|
||||
@@ -2413,7 +2413,7 @@
|
||||
"args": [
|
||||
"--log=debug",
|
||||
"interpret",
|
||||
"among_us:trex_200",
|
||||
"among_us:manhattan_10:trex_200",
|
||||
"-L=2",
|
||||
"--show-test-stdout"
|
||||
],
|
||||
@@ -4397,7 +4397,7 @@
|
||||
"args": [
|
||||
"--log=debug",
|
||||
"interpret",
|
||||
"among_us:trex_200",
|
||||
"among_us:manhattan_10:trex_200",
|
||||
"-L=2",
|
||||
"--show-test-stdout"
|
||||
],
|
||||
@@ -5281,7 +5281,7 @@
|
||||
"args": [
|
||||
"--log=debug",
|
||||
"interpret",
|
||||
"among_us:trex_200",
|
||||
"among_us:manhattan_10:trex_200",
|
||||
"-L=2",
|
||||
"--show-test-stdout"
|
||||
],
|
||||
|
||||
@@ -759,7 +759,7 @@
|
||||
'args': [
|
||||
'--log=debug',
|
||||
'interpret',
|
||||
'among_us:trex_200',
|
||||
'among_us:manhattan_10:trex_200',
|
||||
'-L=2',
|
||||
'--show-test-stdout',
|
||||
],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"infra/specs/angle.json":
|
||||
"729f4ae6669455e203dc118f586527e5",
|
||||
"40ceba904a16f0d182788f0d224860a0",
|
||||
"infra/specs/generate_test_spec_json.py":
|
||||
"55db0ebf31449241041560f53752d3fb",
|
||||
"infra/specs/mixins.pyl":
|
||||
@@ -8,7 +8,7 @@
|
||||
"infra/specs/test_suite_exceptions.pyl":
|
||||
"47f7e288f077652df8ecd85dc671c32b",
|
||||
"infra/specs/test_suites.pyl":
|
||||
"c2ee50fddde24a65084199b14c2f1081",
|
||||
"69169f28bf6473edeadd1cb6aaea56b0",
|
||||
"infra/specs/variants.pyl":
|
||||
"8cfcaa99fa07ad2a2d5d14f220fd5037",
|
||||
"infra/specs/waterfalls.pyl":
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"scripts/egl_angle_ext.xml":
|
||||
"9fbe802e21374f4c0bff6f7a68bb928c",
|
||||
"scripts/gen_interpreter_utils.py":
|
||||
"c8bc4867ffceeacbf56677db88dbf41f",
|
||||
"10ba16ee78604763fc883525dd275de8",
|
||||
"scripts/gl_angle_ext.xml":
|
||||
"e42890bf014f4d4b7ebc07112bbb9764",
|
||||
"scripts/registry_xml.py":
|
||||
@@ -18,7 +18,7 @@
|
||||
"third_party/OpenGL-Registry/src/xml/wgl.xml":
|
||||
"eae784bf4d1b983a42af5671b140b7c4",
|
||||
"util/capture/trace_fixture.h":
|
||||
"19d490ad7256dd6dc3148eb75683b242",
|
||||
"d1be0f16cc678d532e2c296beb403ae7",
|
||||
"util/capture/trace_interpreter_autogen.cpp":
|
||||
"02721169ed2c3adf162324b6879cb44d"
|
||||
"a1b01a2f5f6fc8ae78eb380f622f0fef"
|
||||
}
|
||||
@@ -36,7 +36,7 @@ CPP_TEMPLATE = """\
|
||||
|
||||
namespace angle
|
||||
{{
|
||||
CallCapture ParseCallCapture(const Token &nameToken, size_t numParamTokens, const Token *paramTokens, const TraceShaderMap &shaders)
|
||||
CallCapture ParseCallCapture(const Token &nameToken, size_t numParamTokens, const Token *paramTokens, const TraceStringMap &strings)
|
||||
{{
|
||||
{parse_cases}
|
||||
if (numParamTokens > 0)
|
||||
@@ -78,7 +78,7 @@ void ReplayCustomFunctionCall(const CallCapture &call, const TraceFunctionMap &c
|
||||
PARSE_CASE = """\
|
||||
if (strcmp(nameToken, "{ep}") == 0)
|
||||
{{
|
||||
ParamBuffer params = ParseParameters<{pfn}>(paramTokens, shaders);
|
||||
ParamBuffer params = ParseParameters<{pfn}>(paramTokens, strings);
|
||||
return CallCapture({call}, std::move(params));
|
||||
}}
|
||||
"""
|
||||
|
||||
@@ -467,11 +467,11 @@ void WriteGLFloatValue(std::ostream &out, GLfloat value)
|
||||
{
|
||||
out << "-";
|
||||
}
|
||||
out << "std::numeric_limits<float>::infinity()";
|
||||
out << "INFINITY";
|
||||
}
|
||||
else if (std::isnan(value))
|
||||
{
|
||||
out << "std::numeric_limits<float>::quiet_NaN()";
|
||||
out << "NAN";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#include <EGL/egl.h>
|
||||
#include <EGL/eglext.h>
|
||||
#include <math.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ class Parser : angle::NonCopyable
|
||||
: mStream(stream), mIndex(0), mVerboseLogging(verboseLogging)
|
||||
{}
|
||||
|
||||
void getFunctionsAndShaders(TraceFunctionMap &functionsOut, TraceShaderMap &shadersOut)
|
||||
void getFunctionsAndStrings(TraceFunctionMap &functionsOut, TraceStringMap &stringsOut)
|
||||
{
|
||||
parse();
|
||||
for (auto &iter : mFunctions)
|
||||
@@ -47,13 +47,13 @@ class Parser : angle::NonCopyable
|
||||
functionsOut.emplace(std::move(name), std::move(func));
|
||||
}
|
||||
mFunctions.clear();
|
||||
for (auto &iter : mShaders)
|
||||
for (auto &iter : mStrings)
|
||||
{
|
||||
std::string name = iter.first;
|
||||
TraceShader &shader = iter.second;
|
||||
shadersOut.emplace(std::move(name), std::move(shader));
|
||||
std::string name = iter.first;
|
||||
TraceString &traceStr = iter.second;
|
||||
stringsOut.emplace(std::move(name), std::move(traceStr));
|
||||
}
|
||||
mShaders.clear();
|
||||
mStrings.clear();
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -99,7 +99,7 @@ class Parser : angle::NonCopyable
|
||||
}
|
||||
|
||||
// In our simplified trace C, every line that begins with a } either ends a function or a
|
||||
// shader. All lines inside the function begin with whitespace. So to find the end of the
|
||||
// string. All lines inside the function begin with whitespace. So to find the end of the
|
||||
// function we just need to scan for a line beginning with }.
|
||||
void skipFunction()
|
||||
{
|
||||
@@ -123,8 +123,13 @@ class Parser : angle::NonCopyable
|
||||
{
|
||||
*stringOut += '\n';
|
||||
}
|
||||
else if (peek() == '\"')
|
||||
{
|
||||
*stringOut += '\"';
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Unrecognized escape character: \\%c\n", peek());
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
@@ -237,8 +242,8 @@ class Parser : angle::NonCopyable
|
||||
// printf(")\n");
|
||||
//}
|
||||
|
||||
// We pass in the shaders for specific use with C string array parameters.
|
||||
CallCapture call = ParseCallCapture(nameToken, numParams, paramTokens, mShaders);
|
||||
// We pass in the strings for specific use with C string array parameters.
|
||||
CallCapture call = ParseCallCapture(nameToken, numParams, paramTokens, mStrings);
|
||||
func.push_back(std::move(call));
|
||||
skipLine();
|
||||
}
|
||||
@@ -247,43 +252,43 @@ class Parser : angle::NonCopyable
|
||||
addFunction(funcName, func);
|
||||
}
|
||||
|
||||
void readShader()
|
||||
void readMultilineString()
|
||||
{
|
||||
std::string name;
|
||||
TraceShader shader;
|
||||
TraceString traceStr;
|
||||
|
||||
while (peek() != 'g')
|
||||
{
|
||||
advance();
|
||||
}
|
||||
ASSERT(check("glShaderSource"));
|
||||
ASSERT(check("glShaderSource") || check("glTransformFeedbackVaryings"));
|
||||
|
||||
readStringAppend(&name, '[');
|
||||
if (mVerboseLogging)
|
||||
{
|
||||
printf("shader: %s\n", name.c_str());
|
||||
printf("string: %s\n", name.c_str());
|
||||
}
|
||||
skipLine();
|
||||
std::string source;
|
||||
std::string str;
|
||||
while (peek() != '}')
|
||||
{
|
||||
advance();
|
||||
readStringAppend(&source, '\"');
|
||||
readStringAppend(&str, '\"');
|
||||
advance();
|
||||
if (peek() == ',')
|
||||
{
|
||||
shader.sources.push_back(std::move(source));
|
||||
traceStr.strings.push_back(std::move(str));
|
||||
}
|
||||
skipLine();
|
||||
}
|
||||
skipLine();
|
||||
|
||||
for (const std::string &src : shader.sources)
|
||||
for (const std::string &cppstr : traceStr.strings)
|
||||
{
|
||||
shader.pointers.push_back(src.c_str());
|
||||
traceStr.pointers.push_back(cppstr.c_str());
|
||||
}
|
||||
|
||||
mShaders[name] = std::move(shader);
|
||||
mStrings[name] = std::move(traceStr);
|
||||
}
|
||||
|
||||
void addFunction(const std::string &funcName, TraceFunction &func)
|
||||
@@ -312,7 +317,7 @@ class Parser : angle::NonCopyable
|
||||
}
|
||||
else
|
||||
{
|
||||
readShader();
|
||||
readMultilineString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -320,7 +325,7 @@ class Parser : angle::NonCopyable
|
||||
const std::string &mStream;
|
||||
size_t mIndex;
|
||||
TraceFunctionMap mFunctions;
|
||||
TraceShaderMap mShaders;
|
||||
TraceStringMap mStrings;
|
||||
bool mVerboseLogging = false;
|
||||
};
|
||||
|
||||
@@ -370,6 +375,16 @@ void PackResourceID(ParamBuffer ¶ms, const Token &token)
|
||||
gl::VertexArrayID id = {value};
|
||||
params.addUnnamedParam(ParamType::TVertexArrayID, id);
|
||||
}
|
||||
else if (BeginsWith(token, "gQueryMap"))
|
||||
{
|
||||
gl::QueryID id = {value};
|
||||
params.addUnnamedParam(ParamType::TQueryID, id);
|
||||
}
|
||||
else if (BeginsWith(token, "gSamplerMap"))
|
||||
{
|
||||
gl::SamplerID id = {value};
|
||||
params.addUnnamedParam(ParamType::TSamplerID, id);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Unknown resource map: %s\n", token);
|
||||
@@ -521,7 +536,7 @@ void TraceInterpreter::setupReplay()
|
||||
}
|
||||
|
||||
Parser parser(fileData, mVerboseLogging);
|
||||
parser.getFunctionsAndShaders(mTraceFunctions, mTraceShaders);
|
||||
parser.getFunctionsAndStrings(mTraceFunctions, mTraceStrings);
|
||||
}
|
||||
|
||||
if (mTraceFunctions.count("SetupReplay") == 0)
|
||||
@@ -565,7 +580,7 @@ void TraceInterpreter::runTraceFunction(const char *name) const
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<uint32_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<uint32_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
if (token[0] == 'g')
|
||||
{
|
||||
@@ -578,7 +593,7 @@ void PackParameter<uint32_t>(ParamBuffer ¶ms, const Token &token, const Trac
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<int32_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<int32_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
if (BeginsWith(token, "gUniformLocations"))
|
||||
{
|
||||
@@ -595,7 +610,7 @@ void PackParameter<int32_t>(ParamBuffer ¶ms, const Token &token, const Trace
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<void *>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<void *>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
void *value = 0;
|
||||
params.addUnnamedParam(ParamType::TvoidPointer, value);
|
||||
@@ -604,13 +619,13 @@ void PackParameter<void *>(ParamBuffer ¶ms, const Token &token, const TraceS
|
||||
template <>
|
||||
void PackParameter<const int32_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
PackConstPointerParameter<int32_t>(params, ParamType::TGLintConstPointer, token);
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<void **>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<void **>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -618,20 +633,20 @@ void PackParameter<void **>(ParamBuffer ¶ms, const Token &token, const Trace
|
||||
template <>
|
||||
void PackParameter<int32_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<uint64_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<uint64_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
params.addUnnamedParam(ParamType::TGLuint64,
|
||||
static_cast<GLuint64>(std::strtoull(token, nullptr, 10)));
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<int64_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<int64_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
params.addUnnamedParam(ParamType::TGLint64,
|
||||
static_cast<GLint64>(std::strtoll(token, nullptr, 10)));
|
||||
@@ -640,7 +655,7 @@ void PackParameter<int64_t>(ParamBuffer ¶ms, const Token &token, const Trace
|
||||
template <>
|
||||
void PackParameter<const int64_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -648,7 +663,7 @@ void PackParameter<const int64_t *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<int64_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -656,7 +671,7 @@ void PackParameter<int64_t *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<uint64_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -664,7 +679,7 @@ void PackParameter<uint64_t *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<const char *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
if (token[0] == '"')
|
||||
{
|
||||
@@ -686,7 +701,7 @@ void PackParameter<const char *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<const void *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
PackConstPointerParameter<void>(params, ParamType::TvoidConstPointer, token);
|
||||
}
|
||||
@@ -694,7 +709,7 @@ void PackParameter<const void *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<uint32_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
PackMutablePointerParameter<uint32_t>(params, ParamType::TGLuintPointer, token);
|
||||
}
|
||||
@@ -702,25 +717,25 @@ void PackParameter<uint32_t *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<const uint32_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
PackConstPointerParameter<uint32_t>(params, ParamType::TGLuintConstPointer, token);
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<float>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<float>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
params.addUnnamedParam(ParamType::TGLfloat, std::stof(token));
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<uint8_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<uint8_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
PackIntParameter<uint8_t>(params, ParamType::TGLubyte, token);
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<float *>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<float *>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -728,13 +743,13 @@ void PackParameter<float *>(ParamBuffer ¶ms, const Token &token, const Trace
|
||||
template <>
|
||||
void PackParameter<const float *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
PackConstPointerParameter<float>(params, ParamType::TGLfloatConstPointer, token);
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<GLsync>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<GLsync>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
PackResourceID(params, token);
|
||||
}
|
||||
@@ -742,19 +757,19 @@ void PackParameter<GLsync>(ParamBuffer ¶ms, const Token &token, const TraceS
|
||||
template <>
|
||||
void PackParameter<const char *const *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
// Find the shader that corresponds to "token". Currently we only support shader string arrays.
|
||||
auto iter = shaders.find(token);
|
||||
ASSERT(iter != shaders.end());
|
||||
const TraceShader &shader = iter->second;
|
||||
params.addUnnamedParam(ParamType::TGLcharConstPointerPointer, shader.pointers.data());
|
||||
// Find the string that corresponds to "token". Currently we only support string arrays.
|
||||
auto iter = strings.find(token);
|
||||
ASSERT(iter != strings.end());
|
||||
const TraceString &traceStr = iter->second;
|
||||
params.addUnnamedParam(ParamType::TGLcharConstPointerPointer, traceStr.pointers.data());
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<const char **>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -762,7 +777,7 @@ void PackParameter<const char **>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<GLDEBUGPROCKHR>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -770,7 +785,7 @@ void PackParameter<GLDEBUGPROCKHR>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<EGLDEBUGPROCKHR>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -778,7 +793,7 @@ void PackParameter<EGLDEBUGPROCKHR>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<const struct AHardwareBuffer *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -786,7 +801,7 @@ void PackParameter<const struct AHardwareBuffer *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<EGLSetBlobFuncANDROID>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -794,13 +809,13 @@ void PackParameter<EGLSetBlobFuncANDROID>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<EGLGetBlobFuncANDROID>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<int16_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<int16_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
PackIntParameter<int16_t>(params, ParamType::TGLshort, token);
|
||||
}
|
||||
@@ -808,13 +823,13 @@ void PackParameter<int16_t>(ParamBuffer ¶ms, const Token &token, const Trace
|
||||
template <>
|
||||
void PackParameter<const int16_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
PackConstPointerParameter<int16_t>(params, ParamType::TGLshortConstPointer, token);
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<char *>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<char *>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -822,7 +837,7 @@ void PackParameter<char *>(ParamBuffer ¶ms, const Token &token, const TraceS
|
||||
template <>
|
||||
void PackParameter<unsigned char *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -830,7 +845,7 @@ void PackParameter<unsigned char *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<const void *const *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -838,7 +853,7 @@ void PackParameter<const void *const *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<const uint64_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -847,7 +862,7 @@ void PackParameter<const uint64_t *>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<EGLNativeDisplayType>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -857,7 +872,7 @@ void PackParameter<EGLNativeDisplayType>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<EGLNativeWindowType>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -865,7 +880,7 @@ void PackParameter<EGLNativeWindowType>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<EGLNativePixmapType>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
UNREACHABLE();
|
||||
}
|
||||
@@ -875,19 +890,19 @@ void PackParameter<EGLNativePixmapType>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<const long *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
PackConstPointerParameter<int64_t>(params, ParamType::TGLuint64ConstPointer, token);
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<long *>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<long *>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
PackMutablePointerParameter<int64_t>(params, ParamType::TGLint64Pointer, token);
|
||||
}
|
||||
|
||||
template <>
|
||||
void PackParameter<long>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter<long>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
PackIntParameter<int64_t>(params, ParamType::TGLint64, token);
|
||||
}
|
||||
@@ -895,7 +910,7 @@ void PackParameter<long>(ParamBuffer ¶ms, const Token &token, const TraceSha
|
||||
template <>
|
||||
void PackParameter<unsigned long>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders)
|
||||
const TraceStringMap &strings)
|
||||
{
|
||||
PackIntParameter<uint64_t>(params, ParamType::TGLuint64, token);
|
||||
}
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
|
||||
namespace angle
|
||||
{
|
||||
struct TraceShader
|
||||
struct TraceString
|
||||
{
|
||||
std::vector<std::string> sources;
|
||||
std::vector<std::string> strings;
|
||||
std::vector<const char *> pointers;
|
||||
};
|
||||
using TraceShaderMap = std::map<std::string, TraceShader>;
|
||||
using TraceStringMap = std::map<std::string, TraceString>;
|
||||
|
||||
class TraceInterpreter : public TraceReplayInterface
|
||||
{
|
||||
@@ -45,7 +45,7 @@ class TraceInterpreter : public TraceReplayInterface
|
||||
const TraceInfo &mTraceInfo;
|
||||
const char *mTestDataDir;
|
||||
TraceFunctionMap mTraceFunctions;
|
||||
TraceShaderMap mTraceShaders;
|
||||
TraceStringMap mTraceStrings;
|
||||
bool mVerboseLogging;
|
||||
};
|
||||
|
||||
@@ -56,174 +56,174 @@ using Token = char[kMaxTokenSize];
|
||||
CallCapture ParseCallCapture(const Token &nameToken,
|
||||
size_t numParamTokens,
|
||||
const Token *paramTokens,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <typename T>
|
||||
void PackParameter(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<uint32_t>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<int32_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<int32_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<void *>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<void *>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const int32_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<void **>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<void **>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<int32_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<uint64_t>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<int64_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<int64_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const int64_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<int64_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<uint64_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const char *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const void *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<uint32_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const uint32_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<float>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<float>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<uint8_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<uint8_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<float *>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<float *>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const float *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<GLsync>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<GLsync>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const char *const *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const char **>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<GLDEBUGPROCKHR>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<EGLDEBUGPROCKHR>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const struct AHardwareBuffer *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<EGLSetBlobFuncANDROID>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<EGLGetBlobFuncANDROID>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<int16_t>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<int16_t>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const int16_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<char *>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<char *>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<unsigned char *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const void *const *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<const uint64_t *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
#if defined(ANGLE_PLATFORM_WINDOWS)
|
||||
|
||||
template <>
|
||||
void PackParameter<EGLNativeDisplayType>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
#endif // defined(ANGLE_PLATFORM_WINDOWS)
|
||||
|
||||
#if defined(ANGLE_PLATFORM_WINDOWS) || defined(ANGLE_PLATFORM_ANDROID)
|
||||
template <>
|
||||
void PackParameter<EGLNativeWindowType>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<EGLNativePixmapType>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
#endif // defined(ANGLE_PLATFORM_WINDOWS) || defined(ANGLE_PLATFORM_ANDROID)
|
||||
|
||||
// On Apple platforms, std::is_same<uint64_t, long> is false despite being both 8 bits.
|
||||
@@ -231,21 +231,21 @@ void PackParameter<EGLNativePixmapType>(ParamBuffer ¶ms,
|
||||
template <>
|
||||
void PackParameter<const long *>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
template <>
|
||||
void PackParameter<long *>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<long *>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<long>(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders);
|
||||
void PackParameter<long>(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings);
|
||||
|
||||
template <>
|
||||
void PackParameter<unsigned long>(ParamBuffer ¶ms,
|
||||
const Token &token,
|
||||
const TraceShaderMap &shaders);
|
||||
const TraceStringMap &strings);
|
||||
#endif // defined(ANGLE_PLATFORM_APPLE) || !defined(ANGLE_IS_64_BIT_CPU)
|
||||
|
||||
template <typename T>
|
||||
void PackParameter(ParamBuffer ¶ms, const Token &token, const TraceShaderMap &shaders)
|
||||
void PackParameter(ParamBuffer ¶ms, const Token &token, const TraceStringMap &strings)
|
||||
{
|
||||
static_assert(AssertFalse<T>::value, "No specialization for type.");
|
||||
}
|
||||
@@ -256,35 +256,35 @@ struct ParameterPacker;
|
||||
template <typename Ret>
|
||||
struct ParameterPacker<Ret()>
|
||||
{
|
||||
static void Pack(ParamBuffer ¶ms, const Token *tokens, const TraceShaderMap &shaders) {}
|
||||
static void Pack(ParamBuffer ¶ms, const Token *tokens, const TraceStringMap &strings) {}
|
||||
};
|
||||
|
||||
template <typename Ret, typename Arg>
|
||||
struct ParameterPacker<Ret(Arg)>
|
||||
{
|
||||
static void Pack(ParamBuffer ¶ms, const Token *tokens, const TraceShaderMap &shaders)
|
||||
static void Pack(ParamBuffer ¶ms, const Token *tokens, const TraceStringMap &strings)
|
||||
{
|
||||
PackParameter<Arg>(params, tokens[0], shaders);
|
||||
PackParameter<Arg>(params, tokens[0], strings);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Ret, typename Arg, typename... Args>
|
||||
struct ParameterPacker<Ret(Arg, Args...)>
|
||||
{
|
||||
static void Pack(ParamBuffer ¶ms, const Token *tokens, const TraceShaderMap &shaders)
|
||||
static void Pack(ParamBuffer ¶ms, const Token *tokens, const TraceStringMap &strings)
|
||||
{
|
||||
PackParameter<Arg>(params, tokens[0], shaders);
|
||||
ParameterPacker<Ret(Args...)>::Pack(params, &tokens[1], shaders);
|
||||
PackParameter<Arg>(params, tokens[0], strings);
|
||||
ParameterPacker<Ret(Args...)>::Pack(params, &tokens[1], strings);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Ret, typename Arg, typename... Args>
|
||||
struct ParameterPacker<Ret (*)(Arg, Args...)>
|
||||
{
|
||||
static void Pack(ParamBuffer ¶ms, const Token *tokens, const TraceShaderMap &shaders)
|
||||
static void Pack(ParamBuffer ¶ms, const Token *tokens, const TraceStringMap &strings)
|
||||
{
|
||||
PackParameter<Arg>(params, tokens[0], shaders);
|
||||
ParameterPacker<Ret(Args...)>::Pack(params, &tokens[1], shaders);
|
||||
PackParameter<Arg>(params, tokens[0], strings);
|
||||
ParameterPacker<Ret(Args...)>::Pack(params, &tokens[1], strings);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -304,10 +304,10 @@ struct RemoveStdCall
|
||||
};
|
||||
|
||||
template <typename Func>
|
||||
ParamBuffer ParseParameters(const Token *paramTokens, const TraceShaderMap &shaders)
|
||||
ParamBuffer ParseParameters(const Token *paramTokens, const TraceStringMap &strings)
|
||||
{
|
||||
ParamBuffer params;
|
||||
ParameterPacker<typename RemoveStdCall<Func>::Type>::Pack(params, paramTokens, shaders);
|
||||
ParameterPacker<typename RemoveStdCall<Func>::Type>::Pack(params, paramTokens, strings);
|
||||
return params;
|
||||
}
|
||||
} // namespace angle
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user