mirror of
https://github.com/godotengine/godot-angle-static.git
synced 2026-01-06 02:09:55 +03:00
Vulkan: Add an end2end test to log GLES capabilities
Logs information listed at: https://opengles.gpuinfo.org/listcapabilities.php in CSV format The list from gpuinfo doesn't include capabilities introduced by extensions Test: angle_end2end_tests.exe --gtest_filter=*PrintGLESCapabilities* Bug: angleproject:4093 Change-Id: I59c82879ee2e3486269aa0cb40e2ee6c6e646ec5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1917443 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
This commit is contained in:
committed by
Commit Bot
parent
5530b3ff78
commit
b8e748be6b
@@ -157,6 +157,7 @@ Samsung Electronics, Inc.
|
||||
Hyunseok Ko
|
||||
Jaedon Lee
|
||||
Jeff Vigil
|
||||
Kevin Jung
|
||||
Kyeongmin Kim
|
||||
Minkyu Jeong
|
||||
Mohan Maiya
|
||||
|
||||
@@ -104,6 +104,238 @@ TEST_P(EGLPrintEGLinfoTest, PrintGLInfo)
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
#define QUERY_HELPER(enumValue, enumString, stream) \
|
||||
{ \
|
||||
GLint result; \
|
||||
glGetIntegerv(enumValue, &result); \
|
||||
ASSERT_GL_NO_ERROR(); \
|
||||
stream << enumString + std::string(",") + std::to_string(result) << std::endl; \
|
||||
}
|
||||
|
||||
#define QUERY_ARRAY_HELPER(enumValue, enumString, size, stream) \
|
||||
{ \
|
||||
GLint result[size]; \
|
||||
glGetIntegerv(enumValue, result); \
|
||||
ASSERT_GL_NO_ERROR(); \
|
||||
std::stringstream results; \
|
||||
for (int i = 0; i < size; i++) \
|
||||
results << result[i] << " "; \
|
||||
stream << enumString + std::string(",") + results.str() << std::endl; \
|
||||
}
|
||||
|
||||
#define QUERY_INDEXED_HELPER(enumValue, enumString, index, stream) \
|
||||
{ \
|
||||
GLint result; \
|
||||
glGetIntegeri_v(enumValue, index, &result); \
|
||||
ASSERT_GL_NO_ERROR(); \
|
||||
stream << enumString + std::string(",") + std::to_string(result) << std::endl; \
|
||||
}
|
||||
|
||||
#define QUERY_AND_LOG_CAPABILITY(enum, stream) QUERY_HELPER(enum, #enum, stream)
|
||||
|
||||
#define QUERY_AND_LOG_CAPABILITY_ARRAY(enum, size, stream) \
|
||||
QUERY_ARRAY_HELPER(enum, #enum, size, stream)
|
||||
|
||||
#define QUERY_AND_LOG_CAPABILITY_INDEXED(enum, index, stream) \
|
||||
QUERY_INDEXED_HELPER(enum, #enum "[" #index "]", index, stream)
|
||||
|
||||
static void LogGles2Capabilities(std::ostream &stream)
|
||||
{
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_CUBE_MAP_TEXTURE_SIZE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_UNIFORM_VECTORS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_RENDERBUFFER_SIZE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TEXTURE_IMAGE_UNITS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TEXTURE_SIZE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VARYING_VECTORS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATTRIBS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_UNIFORM_VECTORS, stream);
|
||||
constexpr int kMaxViewPortDimsReturnValuesSize = 2;
|
||||
QUERY_AND_LOG_CAPABILITY_ARRAY(GL_MAX_VIEWPORT_DIMS, kMaxViewPortDimsReturnValuesSize, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_NUM_COMPRESSED_TEXTURE_FORMATS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_NUM_PROGRAM_BINARY_FORMATS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_NUM_SHADER_BINARY_FORMATS, stream);
|
||||
}
|
||||
|
||||
static void LogGles3Capabilities(std::ostream &stream)
|
||||
{
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_3D_TEXTURE_SIZE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_ARRAY_TEXTURE_LAYERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COLOR_ATTACHMENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_UNIFORM_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_DRAW_BUFFERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_ELEMENT_INDEX, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_ELEMENTS_INDICES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_ELEMENTS_VERTICES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_INPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_UNIFORM_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_PROGRAM_TEXEL_OFFSET, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_SAMPLES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_SERVER_WAIT_TIMEOUT, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TEXTURE_LOD_BIAS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_UNIFORM_BLOCK_SIZE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_UNIFORM_BUFFER_BINDINGS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VARYING_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_OUTPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_UNIFORM_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MIN_PROGRAM_TEXEL_OFFSET, stream);
|
||||
|
||||
// GLES3 capabilities are a superset of GLES2
|
||||
LogGles2Capabilities(stream);
|
||||
}
|
||||
|
||||
static void LogGles31Capabilities(std::ostream &stream)
|
||||
{
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COLOR_TEXTURE_SAMPLES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_ATOMIC_COUNTERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_IMAGE_UNIFORMS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_ATOMIC_COUNTERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_IMAGE_UNIFORMS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_SHARED_MEMORY_SIZE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_UNIFORM_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 0, stream);
|
||||
QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 1, stream);
|
||||
QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 2, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 0, stream);
|
||||
QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 1, stream);
|
||||
QUERY_AND_LOG_CAPABILITY_INDEXED(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 2, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_DEPTH_TEXTURE_SAMPLES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_ATOMIC_COUNTERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_IMAGE_UNIFORMS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAMEBUFFER_HEIGHT, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAMEBUFFER_SAMPLES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAMEBUFFER_WIDTH, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_IMAGE_UNITS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_INTEGER_SAMPLES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_SAMPLE_MASK_WORDS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_UNIFORM_LOCATIONS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATOMIC_COUNTERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATTRIB_BINDINGS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_ATTRIB_STRIDE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_IMAGE_UNIFORMS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET, stream);
|
||||
|
||||
// GLES31 capabilities are a superset of GLES3
|
||||
LogGles3Capabilities(stream);
|
||||
}
|
||||
|
||||
static void LogGles32Capabilities(std::ostream &stream)
|
||||
{
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_DEBUG_GROUP_STACK_DEPTH, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_DEBUG_LOGGED_MESSAGES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_DEBUG_MESSAGE_LENGTH, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAGMENT_INTERPOLATION_OFFSET, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_FRAMEBUFFER_LAYERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_ATOMIC_COUNTERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_IMAGE_UNIFORMS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_INPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_OUTPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_OUTPUT_VERTICES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_SHADER_INVOCATIONS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_UNIFORM_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_GEOMETRY_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_LABEL_LENGTH, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_PATCH_VERTICES, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_INPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_GEN_LEVEL, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TESS_PATCH_COMPONENTS, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MAX_TEXTURE_BUFFER_SIZE, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MIN_FRAGMENT_INTERPOLATION_OFFSET, stream);
|
||||
QUERY_AND_LOG_CAPABILITY(GL_MIN_SAMPLE_SHADING_VALUE, stream);
|
||||
|
||||
// GLES32 capabilities are a superset of GLES31
|
||||
LogGles31Capabilities(stream);
|
||||
}
|
||||
|
||||
// Prints GLES Capabilities listed at
|
||||
// https://opengles.gpuinfo.org/listcapabilities.php
|
||||
// in CSV format
|
||||
TEST_P(EGLPrintEGLinfoTest, PrintGLESCapabilities)
|
||||
{
|
||||
std::cout << std::endl << "Capability name, value" << std::endl << std::endl;
|
||||
|
||||
std::ostream &stream = std::cout;
|
||||
|
||||
switch (getClientMajorVersion())
|
||||
{
|
||||
case 3:
|
||||
switch (getClientMinorVersion())
|
||||
{
|
||||
case 2:
|
||||
LogGles32Capabilities(stream);
|
||||
break;
|
||||
case 1:
|
||||
LogGles31Capabilities(stream);
|
||||
break;
|
||||
case 0:
|
||||
LogGles3Capabilities(stream);
|
||||
break;
|
||||
default:
|
||||
FAIL() << "unknown client minor version.";
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
LogGles2Capabilities(stream);
|
||||
break;
|
||||
default:
|
||||
FAIL() << "unknown client major version.";
|
||||
}
|
||||
|
||||
stream << std::endl;
|
||||
}
|
||||
|
||||
// Print the EGL configs with attributes
|
||||
TEST_P(EGLPrintEGLinfoTest, PrintConfigInfo)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user