[Piglit] [PATCH] ext_disjoint_timer_query-simple: basic API test

Tapani Pälli tapani.palli at intel.com
Wed Nov 22 12:13:17 UTC 2017



On 11/21/2017 10:42 PM, Eric Anholt wrote:
> Tapani Pälli <tapani.palli at intel.com> writes:
> 
>> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
>> ---
>>   tests/spec/CMakeLists.txt                          |   1 +
>>   .../ext_disjoint_timer_query/CMakeLists.gles2.txt  |   7 ++
>>   tests/spec/ext_disjoint_timer_query/CMakeLists.txt |   1 +
>>   tests/spec/ext_disjoint_timer_query/simple-query.c | 135 +++++++++++++++++++++
> 
> Don't forget to update all.py, or nobody will run your new test :)

True, I always forget this, seems that I forgot it for 
ext_occlusion_query_boolean too.


>>   4 files changed, 144 insertions(+)
>>   create mode 100644 tests/spec/ext_disjoint_timer_query/CMakeLists.gles2.txt
>>   create mode 100644 tests/spec/ext_disjoint_timer_query/CMakeLists.txt
>>   create mode 100644 tests/spec/ext_disjoint_timer_query/simple-query.c
>>
>> diff --git a/tests/spec/CMakeLists.txt b/tests/spec/CMakeLists.txt
>> index 99fa95f5f..b53411954 100644
>> --- a/tests/spec/CMakeLists.txt
>> +++ b/tests/spec/CMakeLists.txt
>> @@ -169,3 +169,4 @@ add_subdirectory (intel_conservative_rasterization)
>>   add_subdirectory (arb_post_depth_coverage)
>>   add_subdirectory (arb_fragment_shader_interlock)
>>   add_subdirectory (ext_occlusion_query_boolean)
>> +add_subdirectory (ext_disjoint_timer_query)
>> diff --git a/tests/spec/ext_disjoint_timer_query/CMakeLists.gles2.txt b/tests/spec/ext_disjoint_timer_query/CMakeLists.gles2.txt
>> new file mode 100644
>> index 000000000..b8a07153e
>> --- /dev/null
>> +++ b/tests/spec/ext_disjoint_timer_query/CMakeLists.gles2.txt
>> @@ -0,0 +1,7 @@
>> +link_libraries (
>> +	piglitutil_${piglit_target_api}
>> +)
>> +
>> +piglit_add_executable (ext_disjoint_timer_query-simple simple-query.c)
>> +
>> +# vim: ft=cmake:
>> diff --git a/tests/spec/ext_disjoint_timer_query/CMakeLists.txt b/tests/spec/ext_disjoint_timer_query/CMakeLists.txt
>> new file mode 100644
>> index 000000000..144a306f4
>> --- /dev/null
>> +++ b/tests/spec/ext_disjoint_timer_query/CMakeLists.txt
>> @@ -0,0 +1 @@
>> +piglit_include_target_api()
>> diff --git a/tests/spec/ext_disjoint_timer_query/simple-query.c b/tests/spec/ext_disjoint_timer_query/simple-query.c
>> new file mode 100644
>> index 000000000..4f5e7392b
>> --- /dev/null
>> +++ b/tests/spec/ext_disjoint_timer_query/simple-query.c
>> @@ -0,0 +1,135 @@
>> +/*
>> + * Copyright © 2017 Intel Corporation
>> + *
>> + * Permission is hereby granted, free of charge, to any person obtaining a
>> + * copy of this software and associated documentation files (the "Software"),
>> + * to deal in the Software without restriction, including without limitation
>> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
>> + * and/or sell copies of the Software, and to permit persons to whom the
>> + * Software is furnished to do so, subject to the following conditions:
>> + *
>> + * The above copyright notice and this permission notice (including the next
>> + * paragraph) shall be included in all copies or substantial portions of the
>> + * Software.
>> + *
>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
>> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
>> + * IN THE SOFTWARE.
>> + */
>> +
>> +/**
>> + * @file
>> + * Tests GL_EXT_disjoint_timer_query extension. Test does not to cover
>> + * the whole API as that is tested throughly by existing query tests for
>> + * desktop GL. Main objective is to test that timer queries work on OpenGL
>> + * ES 2.0 and we can get GL_GPU_DISJOINT_EXT value from the driver.
>> + */
>> +
>> +#include "piglit-util-gl.h"
>> +
>> +PIGLIT_GL_TEST_CONFIG_BEGIN
>> +	config.supports_gl_es_version = 20;
>> +	config.window_visual = PIGLIT_GL_VISUAL_RGBA;
>> +PIGLIT_GL_TEST_CONFIG_END
>> +
>> +static const char vs_source[] =
>> +	"attribute vec2 piglit_vertex;\n"
>> +	"\n"
>> +	"void main()\n"
>> +	"{\n"
>> +	"	gl_Position = vec4(piglit_vertex, 0.0, 1.0);\n"
>> +	"}\n";
>> +
>> +static const char fs_source[] =
>> +	"void main()\n"
>> +	"{\n"
>> +	"	gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n"
>> +	"}\n";
>> +
>> +enum piglit_result
>> +piglit_display(void)
>> +{
>> +	GLuint query;
>> +	GLint current, disjoint;
>> +	GLuint64 time = 0;
>> +
>> +	glGenQueriesEXT(1, &query);
>> +
>> +	if (!piglit_check_gl_error(GL_NO_ERROR))
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +	/* Clear disjoint error state. */
>> +	glGetIntegerv(GL_GPU_DISJOINT_EXT, &disjoint);
>> +
>> +	if (!piglit_check_gl_error(GL_NO_ERROR))
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +	glBeginQueryEXT(GL_TIME_ELAPSED_EXT, query);
>> +
>> +	if (!piglit_check_gl_error(GL_NO_ERROR))
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +        /* "The error INVALID_OPERATION is generated if QueryCounterEXT is
>> +	 * called on a query object that is already in use inside a
>> +	 * BeginQueryEXT/EndQueryEXT."
>> +         */
> 
> Some spaces instead of tabs here

will fix

>> +	glQueryCounterEXT(query, GL_TIMESTAMP_EXT);
>> +
>> +	if (!piglit_check_gl_error(GL_INVALID_OPERATION))
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +	if (!glIsQueryEXT(query))
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +	glGetQueryivEXT(GL_TIME_ELAPSED_EXT, GL_CURRENT_QUERY_EXT,
>> +			&current);
>> +
>> +	if (current != query)
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +	GLint prog = piglit_build_simple_program(vs_source, fs_source);
>> +	glUseProgram(prog);
>> +
>> +	piglit_draw_rect(-1, -1, 2, 2);
>> +
>> +	glDeleteProgram(prog);
>> +
>> +	glEndQueryEXT(GL_TIME_ELAPSED_EXT);
>> +
>> +	if (!piglit_check_gl_error(GL_NO_ERROR))
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +	glGetQueryObjectui64vEXT(query, GL_QUERY_RESULT_EXT, &time);
>> +
>> +	if (!piglit_check_gl_error(GL_NO_ERROR))
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +	/* Check if if disjoint operation occured. */
>> +	glGetIntegerv(GL_GPU_DISJOINT_EXT, &disjoint);
>> +
>> +	if (!piglit_check_gl_error(GL_NO_ERROR))
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +	/* If no disjoint operation, then we should have a
>> +	 * 'sensible value' in time, expecting more than 0.
>> +	 */
>> +	if (disjoint == 0 && time <= 0)
>> +		piglit_report_result(PIGLIT_FAIL);
>> +
>> +	glDeleteQueriesEXT(1, &query);
>> +
>> +	if (!piglit_check_gl_error(GL_NO_ERROR))
>> +		piglit_report_result(PIGLIT_FAIL);
> 
> I'd drop all but the last of this piglit_check_gl_error(GL_NO_ERROR)
> check series.
> 

OK, that is fine for me.

// Tapani


More information about the Piglit mailing list