Skip to content

Fix multisample interpolation

We currently only respect the TGSI_INTERPOLATE_LOC_CENTROID specifier for inputs, which leads to a bunch of dEQP failures. We need not only to add the "centroid"-keyword to the inputs, but also "sample" if the specifier is TGSI_INTERPOLATE_LOC_SAMPLE.

This is a bit trickier than other cases, due to the fact that "sample" requires GLSL 4.00 (or GL_ARB_gpu_shader5, which the rest of the shader generator uses instead) combined with our approach to patching up shader outputs in vertex, geometry or tesselation control shaders, to match the fragment shader.

This series reserves space for the extension-require in the shader-kinds that might need patching, so we can easily inject it later on.

This fixes the following tests:

dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_texture_1 dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_texture_2 dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_texture_4 dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_texture_8 dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_texture_16 dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_rbo_1 dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_rbo_2 dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_rbo_4 dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_rbo_8 dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier.multisample_rbo_16 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_texture_1 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_texture_2 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_texture_4 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_texture_8 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_texture_16 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_rbo_1 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_rbo_2 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_rbo_4 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_rbo_8 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id.multisample_rbo_16 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_texture_1 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_texture_2 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_texture_4 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_texture_8 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_texture_16 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_rbo_1 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_rbo_2 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_rbo_4 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_rbo_8 dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position.multisample_rbo_16

Merge request reports