Re: [Piglit] [PATCH] tests: add nvidia conservative rasterization tests

2018-03-30 Thread Dylan Baker
Quoting Rhys Perry (2018-03-22 06:43:25)
> Adds tests for GL_NV_conservative_raster, GL_NV_conservative_raster_dilate
> and GL_NV_conservative_raster_pre_snap_triangles.
> ---
>  tests/all.py   |  20 ++
>  tests/spec/CMakeLists.txt  |   3 +
>  .../spec/nv_conservative_raster/CMakeLists.gl.txt  |  13 +
>  .../nv_conservative_raster/CMakeLists.gles2.txt|   3 +
>  tests/spec/nv_conservative_raster/CMakeLists.txt   |   1 +
>  tests/spec/nv_conservative_raster/attrib.c |  69 +
>  tests/spec/nv_conservative_raster/dlist.c  |  75 ++
>  tests/spec/nv_conservative_raster/draw.c   | 288 
> +
>  .../CMakeLists.gl.txt  |  11 +
>  .../CMakeLists.gles2.txt   |   3 +
>  .../nv_conservative_raster_dilate/CMakeLists.txt   |   1 +
>  tests/spec/nv_conservative_raster_dilate/draw.c| 128 +
>  .../CMakeLists.gl.txt  |  11 +
>  .../CMakeLists.gles2.txt   |   3 +
>  .../CMakeLists.txt |   1 +
>  .../draw.c | 117 +
>  16 files changed, 747 insertions(+)
>  create mode 100644 tests/spec/nv_conservative_raster/CMakeLists.gl.txt
>  create mode 100644 tests/spec/nv_conservative_raster/CMakeLists.gles2.txt
>  create mode 100644 tests/spec/nv_conservative_raster/CMakeLists.txt
>  create mode 100644 tests/spec/nv_conservative_raster/attrib.c
>  create mode 100644 tests/spec/nv_conservative_raster/dlist.c
>  create mode 100644 tests/spec/nv_conservative_raster/draw.c
>  create mode 100644 tests/spec/nv_conservative_raster_dilate/CMakeLists.gl.txt
>  create mode 100644 
> tests/spec/nv_conservative_raster_dilate/CMakeLists.gles2.txt
>  create mode 100644 tests/spec/nv_conservative_raster_dilate/CMakeLists.txt
>  create mode 100644 tests/spec/nv_conservative_raster_dilate/draw.c
>  create mode 100644 
> tests/spec/nv_conservative_raster_pre_snap_triangles/CMakeLists.gl.txt
>  create mode 100644 
> tests/spec/nv_conservative_raster_pre_snap_triangles/CMakeLists.gles2.txt
>  create mode 100644 
> tests/spec/nv_conservative_raster_pre_snap_triangles/CMakeLists.txt
>  create mode 100644 
> tests/spec/nv_conservative_raster_pre_snap_triangles/draw.c
> 
> diff --git a/tests/all.py b/tests/all.py
> index 4cd911fab..a5da80f14 100644
> --- a/tests/all.py
> +++ b/tests/all.py
> @@ -4984,5 +4984,25 @@ with profile.test_list.group_manager(
>  g(['arb_bindless_texture-uint64_attribs'], 'uint64_attribs')
>  g(['arb_bindless_texture-uniform'], 'uniform')
>  
> +# Group NV_conservative_raster
> +with profile.test_list.group_manager(
> +   PiglitGLTest,
> +   grouptools.join('spec', 'NV_conservative_raster')) as g:
> +g(['nv_conservative_raster-draw'], 'draw')
> +g(['nv_conservative_raster-dlist'], 'dlist')
> +g(['nv_conservative_raster-attrib'], 'attrib')
> +
> +# Group NV_conservative_raster_dilate
> +with profile.test_list.group_manager(
> +   PiglitGLTest,
> +   grouptools.join('spec', 'NV_conservative_raster_dilate')) as g:
> +g(['nv_conservative_raster_dilate-draw'], 'draw')
> +
> +# Group NV_conservative_raster_pre_snap_triangles
> +with profile.test_list.group_manager(
> +   PiglitGLTest,
> +   grouptools.join('spec', 'NV_conservative_raster_pre_snap_triangles')) 
> as g:
> +g(['nv_conservative_raster_pre_snap_triangles-draw'], 'draw')

I'm asking because I don't know the answer, but are these three separate
extensions? Usually we don't create separate groups for the same extension. We
might have sub-groups like `spec, arb_ham_sandwhich, gluten_free`.

Dylan


signature.asc
Description: signature
___
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit


[Piglit] [PATCH v4] tests: add nvidia conservative rasterization tests

2018-03-30 Thread Rhys Perry
Adds tests for GL_NV_conservative_raster, GL_NV_conservative_raster_dilate
and GL_NV_conservative_raster_pre_snap_triangles.

Changes in v2:
- cleanup the tests
- fix some test failures
- remove the gles version of the dilation test as the extension is not
  exposed in gl.xml
Changes in v3:
- fix accidently luck-based pre-snap-triangles test
Changes in v4:
- apply formatting changes
- elaborate on various comments describing the test source code files

Signed-off-by: Rhys Perry 
---
I am new to this project and don't have commit access.

 tests/all.py   |  20 ++
 tests/spec/CMakeLists.txt  |   3 +
 .../spec/nv_conservative_raster/CMakeLists.gl.txt  |  13 +
 .../nv_conservative_raster/CMakeLists.gles2.txt|   3 +
 tests/spec/nv_conservative_raster/CMakeLists.txt   |   1 +
 tests/spec/nv_conservative_raster/attrib.c | 107 +++
 tests/spec/nv_conservative_raster/dlist.c  | 110 +++
 tests/spec/nv_conservative_raster/draw.c   | 338 +
 .../CMakeLists.gl.txt  |  11 +
 .../nv_conservative_raster_dilate/CMakeLists.txt   |   1 +
 tests/spec/nv_conservative_raster_dilate/draw.c| 151 +
 .../CMakeLists.gl.txt  |  11 +
 .../CMakeLists.gles2.txt   |   3 +
 .../CMakeLists.txt |   1 +
 .../draw.c | 148 +
 15 files changed, 921 insertions(+)
 create mode 100644 tests/spec/nv_conservative_raster/CMakeLists.gl.txt
 create mode 100644 tests/spec/nv_conservative_raster/CMakeLists.gles2.txt
 create mode 100644 tests/spec/nv_conservative_raster/CMakeLists.txt
 create mode 100644 tests/spec/nv_conservative_raster/attrib.c
 create mode 100644 tests/spec/nv_conservative_raster/dlist.c
 create mode 100644 tests/spec/nv_conservative_raster/draw.c
 create mode 100644 tests/spec/nv_conservative_raster_dilate/CMakeLists.gl.txt
 create mode 100644 tests/spec/nv_conservative_raster_dilate/CMakeLists.txt
 create mode 100644 tests/spec/nv_conservative_raster_dilate/draw.c
 create mode 100644 
tests/spec/nv_conservative_raster_pre_snap_triangles/CMakeLists.gl.txt
 create mode 100644 
tests/spec/nv_conservative_raster_pre_snap_triangles/CMakeLists.gles2.txt
 create mode 100644 
tests/spec/nv_conservative_raster_pre_snap_triangles/CMakeLists.txt
 create mode 100644 tests/spec/nv_conservative_raster_pre_snap_triangles/draw.c

diff --git a/tests/all.py b/tests/all.py
index 7c8580ef0..5fa219ca0 100644
--- a/tests/all.py
+++ b/tests/all.py
@@ -4995,5 +4995,25 @@ with profile.test_list.group_manager(
 g(['arb_bindless_texture-uint64_attribs'], 'uint64_attribs')
 g(['arb_bindless_texture-uniform'], 'uniform')
 
+# Group NV_conservative_raster
+with profile.test_list.group_manager(
+   PiglitGLTest,
+   grouptools.join('spec', 'NV_conservative_raster')) as g:
+g(['nv_conservative_raster-draw'], 'draw')
+g(['nv_conservative_raster-dlist'], 'dlist')
+g(['nv_conservative_raster-attrib'], 'attrib')
+
+# Group NV_conservative_raster_dilate
+with profile.test_list.group_manager(
+   PiglitGLTest,
+   grouptools.join('spec', 'NV_conservative_raster_dilate')) as g:
+g(['nv_conservative_raster_dilate-draw'], 'draw')
+
+# Group NV_conservative_raster_pre_snap_triangles
+with profile.test_list.group_manager(
+   PiglitGLTest,
+   grouptools.join('spec', 'NV_conservative_raster_pre_snap_triangles')) 
as g:
+g(['nv_conservative_raster_pre_snap_triangles-draw'], 'draw')
+
 if platform.system() is 'Windows':
 profile.filters.append(lambda p, _: not p.startswith('glx'))
diff --git a/tests/spec/CMakeLists.txt b/tests/spec/CMakeLists.txt
index dc14beb4e..a0bc845c5 100644
--- a/tests/spec/CMakeLists.txt
+++ b/tests/spec/CMakeLists.txt
@@ -101,6 +101,9 @@ add_subdirectory (ext_texture_swizzle)
 add_subdirectory (ext_timer_query)
 add_subdirectory (ext_transform_feedback)
 add_subdirectory (nv_conditional_render)
+add_subdirectory (nv_conservative_raster)
+add_subdirectory (nv_conservative_raster_dilate)
+add_subdirectory (nv_conservative_raster_pre_snap_triangles)
 add_subdirectory (nv_fill_rectangle)
 add_subdirectory (nv_image_formats)
 add_subdirectory (nv_texture_barrier)
diff --git a/tests/spec/nv_conservative_raster/CMakeLists.gl.txt 
b/tests/spec/nv_conservative_raster/CMakeLists.gl.txt
new file mode 100644
index 0..5f632c864
--- /dev/null
+++ b/tests/spec/nv_conservative_raster/CMakeLists.gl.txt
@@ -0,0 +1,13 @@
+include_directories(
+   ${GLEXT_INCLUDE_DIR}
+   ${OPENGL_INCLUDE_PATH}
+)
+
+link_libraries (
+   piglitutil_${piglit_target_api}
+   ${OPENGL_gl_LIBRARY}
+)
+
+piglit_add_executable (nv_conservative_raster-draw draw.c)
+piglit_add_executable (nv_conservative_raster-dlist dlist.c)
+piglit_add_executable (nv_conservative_raster-attrib attrib.c)
diff --git 

[Piglit] [PATCH 1/3] tex-srgb: Also test a cleared texture

2018-03-30 Thread Nanley Chery
Test sRGB texturing on a cleared texture. This case is of interest
to Intel GPUs, which will fast-clear the texture.
---
 tests/texturing/tex-srgb.c | 45 +
 1 file changed, 29 insertions(+), 16 deletions(-)

diff --git a/tests/texturing/tex-srgb.c b/tests/texturing/tex-srgb.c
index fa15ef665..96e92a1ff 100644
--- a/tests/texturing/tex-srgb.c
+++ b/tests/texturing/tex-srgb.c
@@ -68,27 +68,35 @@ nonlinear_to_linear(GLubyte cs8)
return table[cs8];
 }
 
-static void fill_level(int level, const GLfloat *color)
+static void fill_level(GLuint tex, int level, const GLfloat *color,
+  bool with_clear)
 {
 GLfloat *data;
 int size = SIZE / (1 << level);
 int i;
 
-/* Update a square inside the texture to red */
-data = malloc(size * size * 4 * sizeof(GLfloat));
-for (i = 0; i < 4 * size * size; i += 4) {
-data[i + 0] = color[0];
-data[i + 1] = color[1];
-data[i + 2] = color[2];
-data[i + 3] = color[3];
-}
-glTexImage2D(GL_TEXTURE_2D, level, GL_SRGB8_ALPHA8, size, size, 0,
- GL_RGBA, GL_FLOAT, data);
-free(data);
+   glBindTexture(GL_TEXTURE_2D, tex);
+   if (with_clear) {
+   glTexImage2D(GL_TEXTURE_2D, level, GL_SRGB8_ALPHA8, size, size,
+0, GL_RGBA, GL_FLOAT, NULL);
+   glClearTexImage(tex, level, GL_RGBA, GL_FLOAT, color);
+   } else {
+   /* Update a square inside the texture to red */
+   data = malloc(size * size * 4 * sizeof(GLfloat));
+   for (i = 0; i < 4 * size * size; i += 4) {
+   data[i + 0] = color[0];
+   data[i + 1] = color[1];
+   data[i + 2] = color[2];
+   data[i + 3] = color[3];
+   }
+   glTexImage2D(GL_TEXTURE_2D, level, GL_SRGB8_ALPHA8, size, size,
+0, GL_RGBA, GL_FLOAT, data);
+   free(data);
+   }
 }
 
 static GLboolean
-srgb_tex_test(int srgb_format)
+srgb_tex_test(bool with_clear)
 {
GLboolean pass = GL_TRUE;
float green[] = {0, 0.3, 0.0, 0};
@@ -101,9 +109,9 @@ srgb_tex_test(int srgb_format)
 
glGenTextures(1, );
 
-   glBindTexture(GL_TEXTURE_2D, tex);
+   fill_level(tex, 0, green, with_clear);
 
-   fill_level(0, green);
+   glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
@@ -154,7 +162,12 @@ piglit_display(void)
 {
GLboolean pass = GL_TRUE;
 
-   pass = srgb_tex_test(0);
+   pass = srgb_tex_test(false);
+
+   if (piglit_is_extension_supported("GL_ARB_clear_texture")) {
+   /* This case is of particular interest to Intel GPUs */
+   pass &= srgb_tex_test(true);
+   }
return pass ? PIGLIT_PASS : PIGLIT_FAIL;
 }
 
-- 
2.16.2

___
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit


[Piglit] [PATCH 3/3] arb_framebuffer_srgb/blit: Add source fill modes

2018-03-30 Thread Nanley Chery
Test how blits behave when the source is cleared. This case is of
interest to Intel GPUs, which will fast-clear the source.
---
 tests/all.py   | 12 +++-
 tests/spec/arb_framebuffer_srgb/blit.c | 35 +++---
 2 files changed, 35 insertions(+), 12 deletions(-)

diff --git a/tests/all.py b/tests/all.py
index 7c8580ef0..39ad46926 100644
--- a/tests/all.py
+++ b/tests/all.py
@@ -2026,11 +2026,13 @@ with profile.test_list.group_manager(
   'msaa', 'scaled'):
 for framebuffer_srgb_setting in ('enabled',
  'disabled'):
-g(['arb_framebuffer_srgb-blit', backing_type, srgb_types,
-blit_type, framebuffer_srgb_setting],
-  'blit {} {} {} {}'.format(
-  backing_type, srgb_types, blit_type,
-  framebuffer_srgb_setting))
+for src_fill_mode in ('clear', 'render'):
+g(['arb_framebuffer_srgb-blit', backing_type,
+srgb_types, blit_type, framebuffer_srgb_setting,
+src_fill_mode],
+  'blit {} {} {} {} {}'.format(
+  backing_type, srgb_types, blit_type,
+  framebuffer_srgb_setting, src_fill_mode))
 g(['framebuffer-srgb'], run_concurrent=False)
 g(['arb_framebuffer_srgb-clear'])
 g(['arb_framebuffer_srgb-pushpop'])
diff --git a/tests/spec/arb_framebuffer_srgb/blit.c 
b/tests/spec/arb_framebuffer_srgb/blit.c
index b5bd72b97..de218dbd0 100644
--- a/tests/spec/arb_framebuffer_srgb/blit.c
+++ b/tests/spec/arb_framebuffer_srgb/blit.c
@@ -177,6 +177,7 @@
 
 const int PATTERN_WIDTH = 256;
 const int PATTERN_HEIGHT = 64;
+const float src_clear_col = 128.0 / 255.0;
 
 PIGLIT_GL_TEST_CONFIG_BEGIN
 
@@ -195,6 +196,7 @@ static GLsizei src_samples;
 static GLsizei dst_samples;
 static bool scaled_blit;
 static bool enable_srgb_framebuffer;
+static bool src_fill_mode_clear;
 
 /* GL objects */
 static GLuint src_fbo;
@@ -258,6 +260,7 @@ print_usage_and_exit(char *prog_name)
 {
printf("Usage: %s   \n"
   "  \n"
+  "  \n"
   "  where  is one of:\n"
   "texture (ignored for multisampled framebuffers)\n"
   "renderbuffer\n"
@@ -274,7 +277,10 @@ print_usage_and_exit(char *prog_name)
   "scaled\n"
   "  where framebuffer_srgb_setting is one of:\n"
   "enabled\n"
-  "disabled\n",
+  "disabled\n"
+  "  where src_fill_mode is one of:\n"
+  "clear\n"
+  "render\n",
   prog_name);
piglit_report_result(PIGLIT_FAIL);
 }
@@ -284,7 +290,7 @@ piglit_init(int argc, char **argv)
 {
GLint max_samples;
 
-   if (argc != 5) {
+   if (argc != 6) {
print_usage_and_exit(argv[0]);
}
 
@@ -344,6 +350,14 @@ piglit_init(int argc, char **argv)
print_usage_and_exit(argv[0]);
}
 
+   if (strcmp(argv[5], "clear") == 0) {
+   src_fill_mode_clear = true;
+   } else if (strcmp(argv[5], "render") == 0) {
+   src_fill_mode_clear = false;
+   } else {
+   print_usage_and_exit(argv[0]);
+   }
+
piglit_require_gl_version(21);
piglit_require_extension("GL_ARB_framebuffer_object");
piglit_require_extension("GL_ARB_framebuffer_sRGB");
@@ -401,7 +415,8 @@ analyze_image(GLuint fbo)
for (y = 0; y < PATTERN_HEIGHT; ++y) {
for (x = 0; x < PATTERN_WIDTH; ++x) {
for (component = 0; component < 4; ++component) {
-   float val = x / 255.0;
+   float val = src_fill_mode_clear ?
+   src_clear_col : x / 255.0;
if (component < 3 && enable_srgb_framebuffer) {
if (src_format == GL_SRGB8_ALPHA8)
val = srgb_to_linear(val);
@@ -437,12 +452,18 @@ piglit_display()
}
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, dst_fbo);
glClear(GL_COLOR_BUFFER_BIT);
-   glBindFramebuffer(GL_DRAW_FRAMEBUFFER, src_fbo);
-   glClear(GL_COLOR_BUFFER_BIT);
 
/* Draw the source image */
-   glViewport(0, 0, PATTERN_WIDTH, PATTERN_HEIGHT);
-   piglit_draw_rect(-1, -1, 2, 2);
+   glBindFramebuffer(GL_DRAW_FRAMEBUFFER, src_fbo);
+   if (src_fill_mode_clear) {
+   /* This case is of particular interest to Intel GPUs. */
+   glClearColor(src_clear_col, src_clear_col,
+src_clear_col, src_clear_col);
+   glClear(GL_COLOR_BUFFER_BIT);
+   } else {
+ 

[Piglit] [PATCH 2/3] tex-srgb: Drop unused variables and a stale comment

2018-03-30 Thread Nanley Chery
---
 tests/texturing/tex-srgb.c | 21 -
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/tests/texturing/tex-srgb.c b/tests/texturing/tex-srgb.c
index 96e92a1ff..2fd8d6b96 100644
--- a/tests/texturing/tex-srgb.c
+++ b/tests/texturing/tex-srgb.c
@@ -68,28 +68,23 @@ nonlinear_to_linear(GLubyte cs8)
return table[cs8];
 }
 
-static void fill_level(GLuint tex, int level, const GLfloat *color,
-  bool with_clear)
+static void fill_level(GLuint tex, const GLfloat *color, bool with_clear)
 {
-GLfloat *data;
-int size = SIZE / (1 << level);
-int i;
-
glBindTexture(GL_TEXTURE_2D, tex);
if (with_clear) {
-   glTexImage2D(GL_TEXTURE_2D, level, GL_SRGB8_ALPHA8, size, size,
+   glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB8_ALPHA8, SIZE, SIZE,
 0, GL_RGBA, GL_FLOAT, NULL);
-   glClearTexImage(tex, level, GL_RGBA, GL_FLOAT, color);
+   glClearTexImage(tex, 0, GL_RGBA, GL_FLOAT, color);
} else {
-   /* Update a square inside the texture to red */
-   data = malloc(size * size * 4 * sizeof(GLfloat));
-   for (i = 0; i < 4 * size * size; i += 4) {
+   GLfloat *data = malloc(SIZE * SIZE * 4 * sizeof(GLfloat));
+   int i;
+   for (i = 0; i < 4 * SIZE * SIZE; i += 4) {
data[i + 0] = color[0];
data[i + 1] = color[1];
data[i + 2] = color[2];
data[i + 3] = color[3];
}
-   glTexImage2D(GL_TEXTURE_2D, level, GL_SRGB8_ALPHA8, size, size,
+   glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB8_ALPHA8, SIZE, SIZE,
 0, GL_RGBA, GL_FLOAT, data);
free(data);
}
@@ -109,7 +104,7 @@ srgb_tex_test(bool with_clear)
 
glGenTextures(1, );
 
-   fill_level(tex, 0, green, with_clear);
+   fill_level(tex, green, with_clear);
 
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
-- 
2.16.2

___
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit


Re: [Piglit] [PATCH v3] tests: add nvidia conservative rasterization tests

2018-03-30 Thread Brian Paul

The patch looks great overall.  Just minor nit-picks below.


On 03/28/2018 11:13 AM, Rhys Perry wrote:

Adds tests for GL_NV_conservative_raster, GL_NV_conservative_raster_dilate
and GL_NV_conservative_raster_pre_snap_triangles.

Changes in v2:
- cleanup the tests
- fix some test failures
- remove the gles version of the dilation test as the extension is not
   exposed in gl.xml
Changes in v3:
- fix accidently luck-based pre-snap-triangles test

Signed-off-by: Rhys Perry 
---
I am new to this project and don't have commit rights.

  tests/all.py   |  20 ++
  tests/spec/CMakeLists.txt  |   3 +
  .../spec/nv_conservative_raster/CMakeLists.gl.txt  |  13 +
  .../nv_conservative_raster/CMakeLists.gles2.txt|   3 +
  tests/spec/nv_conservative_raster/CMakeLists.txt   |   1 +
  tests/spec/nv_conservative_raster/attrib.c | 103 +++
  tests/spec/nv_conservative_raster/dlist.c  | 106 +++
  tests/spec/nv_conservative_raster/draw.c   | 323 +
  .../CMakeLists.gl.txt  |  11 +
  .../nv_conservative_raster_dilate/CMakeLists.txt   |   1 +
  tests/spec/nv_conservative_raster_dilate/draw.c| 143 +
  .../CMakeLists.gl.txt  |  11 +
  .../CMakeLists.gles2.txt   |   3 +
  .../CMakeLists.txt |   1 +
  .../draw.c | 140 +
  15 files changed, 882 insertions(+)
  create mode 100644 tests/spec/nv_conservative_raster/CMakeLists.gl.txt
  create mode 100644 tests/spec/nv_conservative_raster/CMakeLists.gles2.txt
  create mode 100644 tests/spec/nv_conservative_raster/CMakeLists.txt
  create mode 100644 tests/spec/nv_conservative_raster/attrib.c
  create mode 100644 tests/spec/nv_conservative_raster/dlist.c
  create mode 100644 tests/spec/nv_conservative_raster/draw.c
  create mode 100644 tests/spec/nv_conservative_raster_dilate/CMakeLists.gl.txt
  create mode 100644 tests/spec/nv_conservative_raster_dilate/CMakeLists.txt
  create mode 100644 tests/spec/nv_conservative_raster_dilate/draw.c
  create mode 100644 
tests/spec/nv_conservative_raster_pre_snap_triangles/CMakeLists.gl.txt
  create mode 100644 
tests/spec/nv_conservative_raster_pre_snap_triangles/CMakeLists.gles2.txt
  create mode 100644 
tests/spec/nv_conservative_raster_pre_snap_triangles/CMakeLists.txt
  create mode 100644 tests/spec/nv_conservative_raster_pre_snap_triangles/draw.c

diff --git a/tests/all.py b/tests/all.py
index 7c8580ef0..5fa219ca0 100644
--- a/tests/all.py
+++ b/tests/all.py
@@ -4995,5 +4995,25 @@ with profile.test_list.group_manager(
  g(['arb_bindless_texture-uint64_attribs'], 'uint64_attribs')
  g(['arb_bindless_texture-uniform'], 'uniform')
  
+# Group NV_conservative_raster

+with profile.test_list.group_manager(
+   PiglitGLTest,
+   grouptools.join('spec', 'NV_conservative_raster')) as g:
+g(['nv_conservative_raster-draw'], 'draw')
+g(['nv_conservative_raster-dlist'], 'dlist')
+g(['nv_conservative_raster-attrib'], 'attrib')
+
+# Group NV_conservative_raster_dilate
+with profile.test_list.group_manager(
+   PiglitGLTest,
+   grouptools.join('spec', 'NV_conservative_raster_dilate')) as g:
+g(['nv_conservative_raster_dilate-draw'], 'draw')
+
+# Group NV_conservative_raster_pre_snap_triangles
+with profile.test_list.group_manager(
+   PiglitGLTest,
+   grouptools.join('spec', 'NV_conservative_raster_pre_snap_triangles')) 
as g:
+g(['nv_conservative_raster_pre_snap_triangles-draw'], 'draw')
+
  if platform.system() is 'Windows':
  profile.filters.append(lambda p, _: not p.startswith('glx'))
diff --git a/tests/spec/CMakeLists.txt b/tests/spec/CMakeLists.txt
index dc14beb4e..a0bc845c5 100644
--- a/tests/spec/CMakeLists.txt
+++ b/tests/spec/CMakeLists.txt
@@ -101,6 +101,9 @@ add_subdirectory (ext_texture_swizzle)
  add_subdirectory (ext_timer_query)
  add_subdirectory (ext_transform_feedback)
  add_subdirectory (nv_conditional_render)
+add_subdirectory (nv_conservative_raster)
+add_subdirectory (nv_conservative_raster_dilate)
+add_subdirectory (nv_conservative_raster_pre_snap_triangles)
  add_subdirectory (nv_fill_rectangle)
  add_subdirectory (nv_image_formats)
  add_subdirectory (nv_texture_barrier)
diff --git a/tests/spec/nv_conservative_raster/CMakeLists.gl.txt 
b/tests/spec/nv_conservative_raster/CMakeLists.gl.txt
new file mode 100644
index 0..5f632c864
--- /dev/null
+++ b/tests/spec/nv_conservative_raster/CMakeLists.gl.txt
@@ -0,0 +1,13 @@
+include_directories(
+   ${GLEXT_INCLUDE_DIR}
+   ${OPENGL_INCLUDE_PATH}
+)
+
+link_libraries (
+   piglitutil_${piglit_target_api}
+   ${OPENGL_gl_LIBRARY}
+)
+
+piglit_add_executable (nv_conservative_raster-draw draw.c)
+piglit_add_executable (nv_conservative_raster-dlist dlist.c)
+piglit_add_executable