<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Oops sorry, I thought I did too...<br>
<br>
On 11/04/17 17:28, Manolova, Plamena wrote:<br>
</div>
<blockquote
cite="mid:CAFx6PhBDvg5LxWRBK6ozWop2ed8haoiRy8Ff-xzGevFk72ypQQ@mail.gmail.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div dir="ltr">Hi Ilia,
<div>This series got <span style="font-size:12.8px">Reviewed-by:
Lionel Landwerlin, but unfortunately I don't have write
access to the repo to merge them.</span></div>
<div><span style="font-size:12.8px">Lionel would you mind doing
that for me?</span></div>
<div><span style="font-size:12.8px"><br>
</span></div>
<div><span style="font-size:12.8px">Thank you,</span></div>
<div><span style="font-size:12.8px">Pam</span></div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, Apr 11, 2017 at 5:24 PM, Ilia
Mirkin <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:imirkin@alum.mit.edu" target="_blank">imirkin@alum.mit.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">What
happened to these?<br>
<div>
<div class="h5"><br>
On Thu, Feb 2, 2017 at 9:34 AM, Plamena Manolova<br>
<<a moz-do-not-send="true"
href="mailto:plamena.manolova@intel.com">plamena.manolova@intel.com</a>>
wrote:<br>
> A simple multisampling test to check whether the
values written<br>
> to gl_SampleMaskIn are still correct after enabling
the<br>
> ARB_post_depth_coverage extension.<br>
><br>
> Signed-off-by: Plamena Manolova <<a
moz-do-not-send="true"
href="mailto:plamena.manolova@intel.com">plamena.manolova@intel.com</a>><br>
> ---<br>
> tests/all.py
| 1 +<br>
> .../spec/arb_post_depth_<wbr>coverage/CMakeLists.gl.txt
| 1 +<br>
> tests/spec/arb_post_depth_<wbr>coverage/multisampling.c
| 311 +++++++++++++++++++++<br>
> 3 files changed, 313 insertions(+)<br>
> create mode 100644 tests/spec/arb_post_depth_<wbr>coverage/multisampling.c<br>
><br>
> diff --git a/tests/all.py b/tests/all.py<br>
> index cef4773..95aa952 100644<br>
> --- a/tests/all.py<br>
> +++ b/tests/all.py<br>
> @@ -4768,6 +4768,7 @@ with profile.test_list.group_<wbr>manager(<br>
> PiglitGLTest,<br>
> grouptools.join('spec',
'arb_post_depth_coverage')) as g:<br>
> g(['arb_post_depth_coverage-<wbr>basic'])<br>
> + g(['arb_post_depth_coverage-<wbr>multisampling'])<br>
><br>
> with profile.test_list.group_<wbr>manager(<br>
> PiglitGLTest,<br>
> diff --git a/tests/spec/arb_post_depth_<wbr>coverage/CMakeLists.gl.txt
b/tests/spec/arb_post_depth_<wbr>coverage/CMakeLists.gl.txt<br>
> index 1a71774..9c1e826 100644<br>
> --- a/tests/spec/arb_post_depth_<wbr>coverage/CMakeLists.gl.txt<br>
> +++ b/tests/spec/arb_post_depth_<wbr>coverage/CMakeLists.gl.txt<br>
> @@ -9,3 +9,4 @@ link_libraries (<br>
> )<br>
><br>
> piglit_add_executable
(arb_post_depth_coverage-basic basic.c)<br>
> +piglit_add_executable (arb_post_depth_coverage-<wbr>multisampling
multisampling.c)<br>
> diff --git a/tests/spec/arb_post_depth_<wbr>coverage/multisampling.c
b/tests/spec/arb_post_depth_<wbr>coverage/multisampling.c<br>
> new file mode 100644<br>
> index 0000000..0c867da<br>
> --- /dev/null<br>
> +++ b/tests/spec/arb_post_depth_<wbr>coverage/multisampling.c<br>
> @@ -0,0 +1,311 @@<br>
> +/*<br>
> + * Copyright (c) 2015 Intel Corporation.<br>
> + *<br>
> + * Permission is hereby granted, free of charge,
to any person obtaining a<br>
> + * copy of this software and associated
documentation files (the "Software"),<br>
> + * to deal in the Software without restriction,
including without limitation<br>
> + * the rights to use, copy, modify, merge,
publish, distribute, sublicense,<br>
> + * and/or sell copies of the Software, and to
permit persons to whom the<br>
> + * Software is furnished to do so, subject to the
following conditions:<br>
> + *<br>
> + * The above copyright notice and this permission
notice (including the next<br>
> + * paragraph) shall be included in all copies or
substantial portions of the<br>
> + * Software.<br>
> + *<br>
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT
WARRANTY OF ANY KIND, EXPRESS OR<br>
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY,<br>
> + * FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL<br>
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
ANY CLAIM, DAMAGES OR OTHER<br>
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING<br>
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER<br>
> + * DEALINGS IN THE SOFTWARE.<br>
> + */<br>
> +<br>
> +#include "piglit-util-gl.h"<br>
> +<br>
> +/*<br>
> + * A test to check whether the right values are
written to gl_SampleMaskIn<br>
> + * when ARB_post_depth_coverage and multisampling
are enabled. Tests at<br>
> + * 2, 4, 8, 16 sample rates.<br>
> + */<br>
> +<br>
> +PIGLIT_GL_TEST_CONFIG_BEGIN<br>
> + config.supports_gl_compat_<wbr>version =
43;<br>
> + config.supports_gl_core_<wbr>version = 43;<br>
> + config.window_width = 160;<br>
> + config.window_height = 160;<br>
> + config.window_visual = PIGLIT_GL_VISUAL_RGB
| PIGLIT_GL_VISUAL_DEPTH |<br>
> + PIGLIT_GL_VISUAL_DOUBLE;<br>
> +PIGLIT_GL_TEST_CONFIG_END<br>
> +<br>
> +static GLuint prog1, prog2, vao, ssbo, tex_color,
tex_depth, fbo;<br>
> +static GLint *sample_mask;<br>
> +<br>
> +static const char *vs_text =<br>
> + "#version 430\n"<br>
> + "in vec4 pos_in;\n"<br>
> + "void main()\n"<br>
> + "{\n"<br>
> + " gl_Position = pos_in;\n"<br>
> + "}\n";<br>
> +<br>
> +static const char *fs_text1 =<br>
> + "#version 430\n"<br>
> + "out vec4 color;\n"<br>
> + "void main()\n"<br>
> + "{\n"<br>
> + " gl_FragDepth = 0.5f;\n"<br>
> + " color = vec4(0.0, 1.0, 0.0,
1.0);\n"<br>
> + "}\n";<br>
> +<br>
> +static const char *fs_text2 =<br>
> + "#version 430\n"<br>
> + "#extension GL_ARB_post_depth_coverage:
enable\n"<br>
> + "out vec4 color;\n"<br>
> + "layout(early_fragment_tests) in;\n"<br>
> + "layout(post_depth_coverage) in;\n"<br>
> + "layout(std430, binding = 0) buffer
MaskOutput {\n"<br>
> + " int data[];\n"<br>
> + "} mask_output;\n"<br>
> + "layout(location = 1) uniform int width;\n"<br>
> + "layout(location = 2) uniform int
samples;\n"<br>
> + "void main()\n"<br>
> + "{\n"<br>
> + " int index = int(gl_FragCoord.y) *
width + int(gl_FragCoord.x);\n"<br>
> + " atomicAdd(mask_output.data[<wbr>index],
bitCount(gl_SampleMaskIn[0]));<wbr>\n"<br>
> + " color = vec4(1.0, 0.0, 0.0,
1.0);\n"<br>
> + "}\n";<br>
> +<br>
> +static GLuint<br>
> +make_shader_program1(void)<br>
> +{<br>
> + GLuint prog;<br>
> +<br>
> + prog = piglit_build_simple_program(<wbr>vs_text,
fs_text1);<br>
> + glUseProgram(prog);<br>
> +<br>
> + glBindAttribLocation(prog, 0, "pos_in");<br>
> +<br>
> + glLinkProgram(prog);<br>
> +<br>
> + if (!piglit_check_gl_error(GL_NO_<wbr>ERROR))
{<br>
> + piglit_report_result(PIGLIT_<wbr>FAIL);<br>
> + }<br>
> +<br>
> + return prog;<br>
> +}<br>
> +<br>
> +static GLuint<br>
> +make_shader_program2(void)<br>
> +{<br>
> + GLuint prog;<br>
> +<br>
> + prog = piglit_build_simple_program(<wbr>vs_text,
fs_text2);<br>
> + glUseProgram(prog);<br>
> +<br>
> + glBindAttribLocation(prog, 0, "pos_in");<br>
> +<br>
> + glLinkProgram(prog);<br>
> +<br>
> + if (!piglit_check_gl_error(GL_NO_<wbr>ERROR))
{<br>
> + piglit_report_result(PIGLIT_<wbr>FAIL);<br>
> + }<br>
> +<br>
> + return prog;<br>
> +}<br>
> +<br>
> +static GLuint<br>
> +make_ssbo(void)<br>
> +{<br>
> + GLuint ssbo;<br>
> + glGenBuffers(1, &ssbo);<br>
> + glBindBuffer(GL_SHADER_<wbr>STORAGE_BUFFER,
ssbo);<br>
> +<br>
> + if (!piglit_check_gl_error(GL_NO_<wbr>ERROR))
{<br>
> + piglit_report_result(PIGLIT_<wbr>FAIL);<br>
> + }<br>
> +<br>
> + return ssbo;<br>
> +}<br>
> +<br>
> +static GLuint<br>
> +make_fbo(void)<br>
> +{<br>
> + GLuint fbo;<br>
> + glGenFramebuffers(1, &fbo);<br>
> + glBindFramebuffer(GL_<wbr>FRAMEBUFFER, fbo
);<br>
> + glBindTexture(GL_TEXTURE_2D_<wbr>MULTISAMPLE,
tex_color);<br>
> + glFramebufferTexture2D(GL_<wbr>FRAMEBUFFER,
GL_COLOR_ATTACHMENT0,<br>
> + GL_TEXTURE_2D_MULTISAMPLE,
tex_color, 0);<br>
> + glBindTexture(GL_TEXTURE_2D_<wbr>MULTISAMPLE,
tex_depth);<br>
> + glFramebufferTexture2D(GL_<wbr>FRAMEBUFFER,
GL_DEPTH_STENCIL_ATTACHMENT,<br>
> + GL_TEXTURE_2D_MULTISAMPLE,
tex_depth, 0);<br>
> + glBindTexture(GL_TEXTURE_2D_<wbr>MULTISAMPLE,
0);<br>
> +<br>
> + return fbo;<br>
> +}<br>
> +<br>
> +static GLuint<br>
> +make_texture_color(void)<br>
> +{<br>
> + GLuint tex;<br>
> +<br>
> + glGenTextures(1, &tex);<br>
> + glBindTexture(GL_TEXTURE_2D_<wbr>MULTISAMPLE,
tex);<br>
> + glTexImage2DMultisample(GL_<wbr>TEXTURE_2D_MULTISAMPLE,
2,<br>
> + GL_RGBA32F, piglit_width,
piglit_height, false);<br>
> + glBindTexture(GL_TEXTURE_2D_<wbr>MULTISAMPLE,
0);<br>
> +<br>
> + return tex;<br>
> +}<br>
> +<br>
> +static GLuint<br>
> +make_texture_depth(void)<br>
> +{<br>
> + GLuint tex;<br>
> +<br>
> + glGenTextures(1, &tex);<br>
> + glBindTexture(GL_TEXTURE_2D_<wbr>MULTISAMPLE,
tex);<br>
> + glTexImage2DMultisample(GL_<wbr>TEXTURE_2D_MULTISAMPLE,
2,<br>
> + GL_DEPTH24_STENCIL8, piglit_width,
piglit_height, false);<br>
> + glBindTexture(GL_TEXTURE_2D_<wbr>MULTISAMPLE,
0);<br>
> +<br>
> + return tex;<br>
> +}<br>
> +<br>
> +static GLuint<br>
> +make_vao(void)<br>
> +{<br>
> + static const float pos_tc[12][2] = {<br>
> + { -1.0, -1.0 },<br>
> + { 0.0, -1.0 },<br>
> + { 0.0, 1.0 },<br>
> + { 0.0, 1.0 },<br>
> + { -1.0, 1.0 },<br>
> + { -1.0, -1.0 },<br>
> + { -1.0, -1.0 },<br>
> + { 1.0, -1.0 },<br>
> + { 1.0, 1.0 },<br>
> + { 1.0, 1.0 },<br>
> + { -1.0, 1.0 },<br>
> + { -1.0, -1.0 }<br>
> + };<br>
> + const int stride = sizeof(pos_tc[0]);<br>
> + GLuint vbo, vao;<br>
> +<br>
> + glGenVertexArrays(1, &vao);<br>
> + glBindVertexArray(vao);<br>
> +<br>
> + glGenBuffers(1, &vbo);<br>
> + glBindBuffer(GL_ARRAY_BUFFER, vbo);<br>
> + glBufferData(GL_ARRAY_BUFFER,
sizeof(pos_tc), pos_tc, GL_STATIC_DRAW);<br>
> + piglit_check_gl_error(GL_NO_<wbr>ERROR);<br>
> +<br>
> + glVertexAttribPointer(0, 2, GL_FLOAT,
GL_FALSE, stride, (void *) 0);<br>
> +<br>
> + glEnableVertexAttribArray(0);<br>
> +<br>
> + if (!piglit_check_gl_error(GL_NO_<wbr>ERROR))
{<br>
> + piglit_report_result(PIGLIT_<wbr>FAIL);<br>
> + }<br>
> +<br>
> + return vbo;<br>
> +}<br>
> +<br>
> +void<br>
> +piglit_init(int argc, char **argv)<br>
> +{<br>
> + piglit_require_extension("GL_<wbr>ARB_post_depth_coverage");<br>
> +<br>
> + glEnable(GL_DEPTH_TEST);<br>
> + glEnable(GL_STENCIL_TEST);<br>
> + glEnable(GL_MULTISAMPLE);<br>
> + glClearColor(0.0, 0.0, 0.0, 1.0);<br>
> +<br>
> + prog1 = make_shader_program1();<br>
> + prog2 = make_shader_program2();<br>
> + vao = make_vao();<br>
> + ssbo = make_ssbo();<br>
> + tex_color = make_texture_color();<br>
> + tex_depth = make_texture_depth();<br>
> + fbo = make_fbo();<br>
> +}<br>
> +<br>
> +<br>
> +enum piglit_result<br>
> +piglit_display(void)<br>
> +{<br>
> + int samples[4] = { 2, 4, 8, 16 };<br>
> + bool pass = true;<br>
> + int i, j, k;<br>
> +<br>
> + glViewport(0, 0, piglit_width,
piglit_height);<br>
> +<br>
> + for (j = 0; j < 4; j++) {<br>
> + sample_mask = (GLint*) calloc
(piglit_width * piglit_height,<br>
> + sizeof(GLint));<br>
> + glBufferData(GL_SHADER_<wbr>STORAGE_BUFFER,
sizeof(GLint) * piglit_width *<br>
> + piglit_height,
&sample_mask[0], GL_DYNAMIC_DRAW);<br>
> + glBindBufferBase(GL_SHADER_<wbr>STORAGE_BUFFER,
0, ssbo);<br>
> +<br>
> + glBindFramebuffer(GL_DRAW_<wbr>FRAMEBUFFER,
fbo);<br>
> + glBindTexture(GL_TEXTURE_2D_<wbr>MULTISAMPLE,
tex_color);<br>
> + glTexImage2DMultisample(GL_<wbr>TEXTURE_2D_MULTISAMPLE,
samples[j],<br>
> + GL_RGBA8, piglit_width,
piglit_height, false);<br>
> + glBindTexture(GL_TEXTURE_2D_<wbr>MULTISAMPLE,
tex_depth);<br>
> + glTexImage2DMultisample(GL_<wbr>TEXTURE_2D_MULTISAMPLE,
samples[j],<br>
> + GL_DEPTH24_STENCIL8,
piglit_width, piglit_height, false);<br>
> +<br>
> + glClear(GL_COLOR_BUFFER_BIT |
GL_DEPTH_BUFFER_BIT |<br>
> + GL_STENCIL_BUFFER_BIT);<br>
> +<br>
> + glUseProgram(prog1);<br>
> + glStencilFunc(GL_ALWAYS, 1, 0xFF);<br>
> + glStencilOp(GL_REPLACE, GL_REPLACE,
GL_REPLACE);<br>
> + glDrawArrays(GL_TRIANGLES, 0, 6);<br>
> +<br>
> + glUseProgram(prog2);<br>
> + glStencilFunc(GL_NOTEQUAL, 1,
0xFF);<br>
> + glStencilOp(GL_KEEP, GL_KEEP,
GL_KEEP);<br>
> + glUniform1i(1, piglit_width);<br>
> + glUniform1i(2, samples[j]);<br>
> + glDrawArrays(GL_TRIANGLES, 6, 6);<br>
> +<br>
> + glGetBufferSubData(GL_SHADER_<wbr>STORAGE_BUFFER,
0, sizeof(GLint) *<br>
> + piglit_width *
piglit_height, sample_mask);<br>
> +<br>
> + for (i = 0; i < piglit_width;
i++) {<br>
> + for (k = 0; k <
piglit_height; k++) {<br>
> + if (i >=
piglit_width / 2) {<br>
> + if
(sample_mask[piglit_width * k + i] != samples[j]) {<br>
> +
pass = false;<br>
> +
break;<br>
> + }<br>
> + } else {<br>
> + if
(sample_mask[piglit_width * k + i] != 0) {<br>
> +
pass = false;<br>
> +
break;<br>
> + }<br>
> + }<br>
> + }<br>
> +<br>
> + if (!pass)<br>
> + break;<br>
> + }<br>
> +<br>
> + glBindFramebuffer(GL_DRAW_<wbr>FRAMEBUFFER,
0);<br>
> + glBindFramebuffer(GL_READ_<wbr>FRAMEBUFFER,
fbo);<br>
> + glDrawBuffer(GL_BACK);<br>
> + glBlitFramebuffer(0, 0,
piglit_width, piglit_height, 0, 0, piglit_width,<br>
> + piglit_height,
GL_COLOR_BUFFER_BIT, GL_NEAREST);<br>
> +<br>
> + piglit_present_results();<br>
> + free(sample_mask);<br>
> + if (!pass)<br>
> + break;<br>
> + }<br>
> +<br>
> + pass = piglit_check_gl_error(GL_NO_<wbr>ERROR)
&& pass;<br>
> +<br>
> + return pass ? PIGLIT_PASS : PIGLIT_FAIL;<br>
> +}<br>
> --<br>
> 2.7.4<br>
><br>
</div>
</div>
> ______________________________<wbr>_________________<br>
> Piglit mailing list<br>
> <a moz-do-not-send="true"
href="mailto:Piglit@lists.freedesktop.org">Piglit@lists.freedesktop.org</a><br>
> <a moz-do-not-send="true"
href="https://lists.freedesktop.org/mailman/listinfo/piglit"
rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/piglit</a><br>
</blockquote>
</div>
<br>
</div>
</blockquote>
<p><br>
</p>
</body>
</html>