LibWeb/WebGL2: Implement MAX_SAMPLES parameter

This commit is contained in:
Luke Wilde 2024-12-13 17:59:20 +00:00 committed by Alexander Kalenik
commit ee500df7ec
Notes: github-actions[bot] 2024-12-14 08:09:59 +00:00

View file

@ -74,9 +74,10 @@ struct NameAndType {
StringView type; StringView type;
int element_count { 0 }; int element_count { 0 };
} return_type; } return_type;
Optional<int> webgl_version { OptionalNone {} };
}; };
static void generate_get_parameter(SourceGenerator& generator) static void generate_get_parameter(SourceGenerator& generator, int webgl_version)
{ {
Vector<NameAndType> const name_to_type = { Vector<NameAndType> const name_to_type = {
{ "ACTIVE_TEXTURE"sv, { "GLenum"sv } }, { "ACTIVE_TEXTURE"sv, { "GLenum"sv } },
@ -168,6 +169,7 @@ static void generate_get_parameter(SourceGenerator& generator)
{ "VENDOR"sv, { "DOMString"sv } }, { "VENDOR"sv, { "DOMString"sv } },
{ "VERSION"sv, { "DOMString"sv } }, { "VERSION"sv, { "DOMString"sv } },
{ "VIEWPORT"sv, { "Int32Array"sv, 4 } }, { "VIEWPORT"sv, { "Int32Array"sv, 4 } },
{ "MAX_SAMPLES"sv, { "GLint"sv }, 2 },
}; };
auto is_primitive_type = [](StringView type) { auto is_primitive_type = [](StringView type) {
@ -176,6 +178,9 @@ static void generate_get_parameter(SourceGenerator& generator)
generator.append(" switch (pname) {"); generator.append(" switch (pname) {");
for (auto const& name_and_type : name_to_type) { for (auto const& name_and_type : name_to_type) {
if (name_and_type.webgl_version.has_value() && name_and_type.webgl_version.value() != webgl_version)
continue;
auto const& parameter_name = name_and_type.name; auto const& parameter_name = name_and_type.name;
auto const& type_name = name_and_type.return_type.type; auto const& type_name = name_and_type.return_type.type;
@ -821,7 +826,7 @@ public:
} }
if (function.name == "getParameter"sv) { if (function.name == "getParameter"sv) {
generate_get_parameter(function_impl_generator); generate_get_parameter(function_impl_generator, webgl_version);
continue; continue;
} }