radeonsi: enable tessellation, update GL3.txt & release notes
authorMarek Olšák <marek.olsak@amd.com>
Sun, 22 Feb 2015 17:46:53 +0000 (18:46 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 22 Jul 2015 22:59:33 +0000 (00:59 +0200)
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
docs/GL3.txt
docs/relnotes/10.7.0.html
src/gallium/drivers/radeonsi/si_pipe.c

index 214425713b85a72e3bb278d832fa3c3c7087d86f..197b676f64bfbbf415418d28291f2ef875eb695e 100644 (file)
@@ -112,7 +112,7 @@ GL 4.0, GLSL 4.00:
   GL_ARB_gpu_shader_fp64                               DONE (nvc0, radeonsi, llvmpipe, softpipe)
   GL_ARB_sample_shading                                DONE (i965, nv50, nvc0, r600, radeonsi)
   GL_ARB_shader_subroutine                             started (Dave)
-  GL_ARB_tessellation_shader                           started (Chris, Ilia)
+  GL_ARB_tessellation_shader                           DONE (radeonsi)
   GL_ARB_texture_buffer_object_rgb32                   DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe)
   GL_ARB_texture_cube_map_array                        DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
   GL_ARB_texture_gather                                DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
index 0d993313f3423940c0cda4f444d81734603922a3..c7d0d2480ff0116a1acfdea0e83462ca49b7fb52 100644 (file)
@@ -50,6 +50,7 @@ Note: some of the new features are only available with certain drivers.
 <li>GL_ARB_get_texture_sub_image for all drivers</li>
 <li>GL_ARB_gpu_shader_fp64 on llvmpipe, radeonsi</li>
 <li>GL_ARB_shader_stencil_export on llvmpipe</li>
+<li>GL_ARB_tessellation_shader on radeonsi</li>
 <li>GL_ARB_vertex_attrib_64bit on llvmpipe, radeonsi</li>
 <li>GL_ARB_viewport_array on radeonsi</li>
 <li>GLX_ARB_create_context_robustness on r600, radeonsi</li>
index b545a4f4a5f7cf601180e4312f4ab69684f40ff7..c2985b8d2246392cdb4d0572662503f822eeb75f 100644 (file)
@@ -293,9 +293,11 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
        case PIPE_CAP_CONDITIONAL_RENDER_INVERTED:
        case PIPE_CAP_SAMPLER_VIEW_TARGET:
        case PIPE_CAP_VERTEXID_NOBASE:
-       case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
                return 0;
 
+       case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
+               return 30;
+
        case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
                return PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_R600;
 
@@ -375,6 +377,13 @@ static int si_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enu
        case PIPE_SHADER_VERTEX:
        case PIPE_SHADER_GEOMETRY:
                break;
+       case PIPE_SHADER_TESS_CTRL:
+       case PIPE_SHADER_TESS_EVAL:
+               /* LLVM 3.6.2 is required for tessellation because of bug fixes there */
+               if (HAVE_LLVM < 0x0306 ||
+                   (HAVE_LLVM == 0x0306 && MESA_LLVM_VERSION_PATCH < 2))
+                       return 0;
+               break;
        case PIPE_SHADER_COMPUTE:
                switch (param) {
                case PIPE_SHADER_CAP_PREFERRED_IR:
@@ -401,7 +410,6 @@ static int si_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enu
                }
                break;
        default:
-               /* TODO: support tessellation */
                return 0;
        }
 
@@ -433,7 +441,7 @@ static int si_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enu
                /* Indirection of geometry shader input dimension is not
                 * handled yet
                 */
-               return shader < PIPE_SHADER_GEOMETRY;
+               return shader != PIPE_SHADER_GEOMETRY;
        case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
        case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
        case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: