zink/lavapipe/?: remaining multisampled line fail
I'm vaguely sure this is an edge case lavapipe bug not tested by vk cts, but I'm leaving zink on just in case.
I've hooked up line rasterization ext stuff in zink(-wip) for GLES line handling. The gist of it is:
VkPipelineRasterizationLineStateCreateInfoEXT line_state;
if (screen->info.have_EXT_line_rasterization) {
memset(&line_state, 0, sizeof(line_state));
line_state.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT;
line_state.lineRasterizationMode = hw_rast_state->line_smooth ?
VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT :
VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT;
line_state.pNext = rast_state.pNext;
rast_state.pNext = &line_state;
}
This passes most tests. The problem comes with dEQP-GLES3.functional.multisample.fbo_4_samples.num_samples_line
: lavapipe currently disables multisampling for this case (as with all non-smooth line cases), but this breaks the test.
- If I force smooth lines in zink when multisampling is enabled, this test passes, but then a ton of other ones fail, and that seems wrong anyway
- If I try to add some handling for this case in lavapipe to enable multisampling like llvmpipe does, the test passes, but then
dEQP-VK.rasterization.primitives_multisample_4_bit.static_stipple.bresenham_line_strip
and others fail, which is ???
I don't know what the right answer is, but probably somebody who knows how multisampled lines are supposed to work should check it out at some point.