Always rasterize lines as a rectangle
This is Vulkan 1.1's "preferred method of line rasterization, and must
be used when the implementation advertises the strictLines limit in
VkPhysicalDeviceLimits as VK_TRUE."
The 'Diamond test convention' code path, which implemented coverage
corresponding to the Bresenham algorithm (except for endpoints, see
b/80135519), is now inactive, but might become of use again for
implementing VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT so it is kept,
for now.
Bug: b/139755234
Tests: dEQP-VK.*line*
Change-Id: I0113c04e35c1aca8031194223e589962942e18fa
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/35308
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Device/Renderer.cpp b/src/Device/Renderer.cpp
index 5f9b8f0..b33ff0a 100644
--- a/src/Device/Renderer.cpp
+++ b/src/Device/Renderer.cpp
@@ -932,7 +932,6 @@
bool Renderer::setupLine(Primitive &primitive, Triangle &triangle, const DrawCall &draw)
{
const SetupProcessor::RoutinePointer &setupRoutine = draw.setupPointer;
- const SetupProcessor::State &state = draw.setupState;
const DrawData &data = *draw.data;
float lineWidth = data.lineWidth;
@@ -959,7 +958,7 @@
return false;
}
- if(state.multiSample > 1) // Rectangle
+ if(true) // Rectangle centered on the line segment
{
float4 P[4];
int C[4];
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index 2103634..601c403 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -246,8 +246,8 @@
{ 1.0, 1.0 }, // lineWidthRange[2] (unsupported)
0.0, // pointSizeGranularity (unsupported)
0.0, // lineWidthGranularity (unsupported)
- VK_FALSE, // strictLines
- VK_TRUE, // standardSampleLocations
+ VK_TRUE, // strictLines
+ VK_TRUE, // standardSampleLocations
64, // optimalBufferCopyOffsetAlignment
64, // optimalBufferCopyRowPitchAlignment
256, // nonCoherentAtomSize