"dEQP-VK.image.load_store.with_format.*",
"dEQP-VK.pipeline.input_assembly.*",
"dEQP-VK.pipeline.sampler.view_type.*.format.r*.address_modes.all_mode_clamp_to_border*",
+ "dEQP-VK.rasterization.interpolation.*",
"dEQP-VK.spirv_assembly.instruction.compute.opquantize.*",
"dEQP-VK.spirv_assembly.instruction.compute.shader_default_output.*",
"dEQP-VK.spirv_assembly.instruction.compute.workgroup_memory.*",
varyings->varying[VARYING_SLOT_POS].offset;
}
- if (BITSET_TEST(varyings->active, VARYING_SLOT_PSIZ)) {
+ if (pipeline->ia.writes_point_size) {
draw->psiz = varyings->buf[varyings->varying[VARYING_SLOT_PSIZ].buf].address +
varyings->varying[VARYING_SLOT_POS].offset;
} else if (pipeline->ia.topology == MALI_DRAW_MODE_LINES ||
if (shader->has_img_access)
pipeline->img_access_mask |= BITFIELD_BIT(i);
- if (i == MESA_SHADER_VERTEX && shader->info.vs.writes_point_size)
- pipeline->ia.writes_point_size = true;
+ if (i == MESA_SHADER_VERTEX && shader->info.vs.writes_point_size) {
+ VkPrimitiveTopology topology =
+ builder->create_info.gfx->pInputAssemblyState->topology;
+ bool points = (topology == VK_PRIMITIVE_TOPOLOGY_POINT_LIST);
+
+ /* Even if the vertex shader writes point size, we only consider the
+ * pipeline to write point size when we're actually drawing points.
+ * Otherwise the point size write would conflict with wide lines.
+ */
+ pipeline->ia.writes_point_size = points;
+ }
mali_ptr shader_ptr = 0;