mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 20:00:10 +01:00
zink: relax bresenhamLines requirement for non-strictLine drivers
non-strictLine Vulkan drivers use either parallelogram or bresenham rasterization for default line modes. This method of rasterisation produces close enough results that it in practice is GL/GLES spec compliant (at least cts wise). Don't emit a feature missing warning for this case. cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20985>
This commit is contained in:
parent
b4383821e7
commit
f7b2dbb2bd
2 changed files with 35 additions and 9 deletions
|
|
@ -33,12 +33,6 @@
|
||||||
},
|
},
|
||||||
"VkPhysicalDeviceLineRasterizationFeaturesEXT": {
|
"VkPhysicalDeviceLineRasterizationFeaturesEXT": {
|
||||||
"rectangularLines": true,
|
"rectangularLines": true,
|
||||||
"bresenhamLines": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"VkPhysicalDeviceProperties": {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -59,6 +53,22 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gl21_baseline_line_bresenham": {
|
||||||
|
"features": {
|
||||||
|
"VkPhysicalDeviceLineRasterizationFeaturesEXT": {
|
||||||
|
"bresenhamLines": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gl21_baseline_line_non_strict": {
|
||||||
|
"properties": {
|
||||||
|
"VkPhysicalDeviceProperties": {
|
||||||
|
"limits": {
|
||||||
|
"strictLines": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"gl21_optional": {
|
"gl21_optional": {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"VK_KHR_external_memory": 1
|
"VK_KHR_external_memory": 1
|
||||||
|
|
@ -580,7 +590,8 @@
|
||||||
"capabilities": [
|
"capabilities": [
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ]
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"VP_ZINK_gl30_baseline": {
|
"VP_ZINK_gl30_baseline": {
|
||||||
|
|
@ -592,6 +603,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline"
|
"gl30_baseline"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -604,6 +616,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline"
|
"gl31_baseline"
|
||||||
]
|
]
|
||||||
|
|
@ -617,6 +630,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline"
|
"gl32_baseline"
|
||||||
|
|
@ -631,6 +645,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline",
|
"gl32_baseline",
|
||||||
|
|
@ -646,6 +661,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline",
|
"gl32_baseline",
|
||||||
|
|
@ -662,6 +678,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline",
|
"gl32_baseline",
|
||||||
|
|
@ -679,6 +696,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline",
|
"gl32_baseline",
|
||||||
|
|
@ -698,6 +716,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline",
|
"gl32_baseline",
|
||||||
|
|
@ -719,6 +738,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline",
|
"gl32_baseline",
|
||||||
|
|
@ -741,6 +761,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline",
|
"gl32_baseline",
|
||||||
|
|
@ -764,6 +785,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline",
|
"gl32_baseline",
|
||||||
|
|
@ -788,6 +810,7 @@
|
||||||
"vulkan10requirements",
|
"vulkan10requirements",
|
||||||
"gl21_baseline",
|
"gl21_baseline",
|
||||||
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
[ "gl21_baseline_vk10", "gl21_baseline_vk12" ],
|
||||||
|
[ "gl21_baseline_line_bresenham", "gl21_baseline_line_non_strict" ],
|
||||||
"gl30_baseline",
|
"gl30_baseline",
|
||||||
"gl31_baseline",
|
"gl31_baseline",
|
||||||
"gl32_baseline",
|
"gl32_baseline",
|
||||||
|
|
|
||||||
|
|
@ -301,9 +301,12 @@ zink_create_gfx_pipeline(struct zink_screen *screen,
|
||||||
mode_idx -= hw_rast_state->line_stipple_enable * 3;
|
mode_idx -= hw_rast_state->line_stipple_enable * 3;
|
||||||
if (*(feat + mode_idx))
|
if (*(feat + mode_idx))
|
||||||
rast_line_state.lineRasterizationMode = hw_rast_state->line_mode;
|
rast_line_state.lineRasterizationMode = hw_rast_state->line_mode;
|
||||||
else
|
/* non-strictLine default lines are either parallelogram or bresenham which while not in GL spec,
|
||||||
|
* in practice end up being within the two-pixel exception in the GL spec.
|
||||||
|
*/
|
||||||
|
else if (mode_idx || screen->info.props.limits.strictLines)
|
||||||
warn_missing_feature(warned[mode_idx], features[hw_rast_state->line_mode][0]);
|
warn_missing_feature(warned[mode_idx], features[hw_rast_state->line_mode][0]);
|
||||||
} else
|
} else if (mode_idx || screen->info.props.limits.strictLines)
|
||||||
warn_missing_feature(warned[mode_idx], features[hw_rast_state->line_mode][hw_rast_state->line_stipple_enable]);
|
warn_missing_feature(warned[mode_idx], features[hw_rast_state->line_mode][hw_rast_state->line_stipple_enable]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue