The vertex shader always gl_PerVertex, but the tesselation shaders only define the structure when the point size extension is enabled, otherwise gl_PointSize is passed as a generic varying and can not be written to. If one enables the extension based on whether the value gl_PointSize is actually accessed in the tess shaders then it might happend that tess_ctrl doesn't touch the value, and the extension isn't enabled, and tess_eval accesses it and the extension is enabled. In such a case gl_PointSize is passed as a generic to and from the tess_ctrl shader and linking of the shaders will fail because of different definitions of gl_PerVertex. Since in this case there is no indication in the tess_ctrl shader that point_size is accessed, and it is not known whether the shader will be linked with a tess_eval shader that uses gl_PointSize the workaround is to always enable the extension for all tesselation shaders. Fixes: dEQP-GLES31.functional.tessellation_geometry_interaction. point_size.evaluation_set point_size.vertex_set_control_set point_size.vertex_set_evaluation_set point_size.vertex_set_evaluation_set_geometry_default dEQP-GLES31.functional.primitive_bounding_box.wide_points. global_state.vertex_tessellation_fragment. default_framebuffer_bbox_equal default_framebuffer_bbox_larger default_framebuffer_bbox_smaller fbo_bbox_equal fbo_bbox_larger fbo_bbox_smaller dEQP-GLES31.functional.primitive_bounding_box.wide_points. tessellation_set_per_draw.vertex_tessellation_fragment. default_framebuffer_bbox_equal default_framebuffer_bbox_equal default_framebuffer_bbox_larger default_framebuffer_bbox_smaller fbo_bbox_equal fbo_bbox_larger fbo_bbox_smaller tessellation_set_per_primitive.vertex_tessellation_fragment. default_framebuffer fragment.fbo Signed-off-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Dave Airlie <airlied@redhat.com>macos/master
parent
ab34c9d782
commit
19cef6be4a
Loading…
Reference in new issue