zink: various fixes for custom sample locations

this is still not technically correct, as I'm seeing some weird fails
on ANV, at least, and also it maybe needs a pass to strip InterpolateAtSample
(related?), but it is now actually enabling custom sample locations

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37618>
This commit is contained in:
Mike Blumenkrantz
2025-09-29 08:29:03 -04:00
committed by Marge Bot
parent 911f033058
commit e12d019b9d
8 changed files with 56 additions and 270 deletions
@@ -639,12 +639,11 @@
},
"GL_ARB_sample_locations": {
"extensions": {
"VK_EXT_extended_dynamic_state": 1,
"VK_EXT_sample_locations": 1
},
"features": {
"VkPhysicalDeviceExtendedDynamicStateFeaturesEXT": {
"extendedDynamicState": true
"properties": {
"VkPhysicalDeviceSampleLocationsPropertiesEXT": {
"variableSampleLocations": true
}
}
},
@@ -45,231 +45,6 @@ spec@arb_framebuffer_object@execution@msaa-alpha-to-coverage_alpha-to-one_write-
spec@arb_gpu_shader_fp64@execution@arb_gpu_shader_fp64-tf-separate,Fail
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex,Fail
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2[1][0]' on GL_PROGRAM_INPUT,Fail
spec@arb_sample_locations@test,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 1- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 2- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 3- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 0- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 1- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 2- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 2- X: 3- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 0- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 1- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 2- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 4- X: 3- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 0- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 1- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 2- Y: 6- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 0- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 1- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 1- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 2- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 2- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 3- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 3- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 4- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 4- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 5- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 5- Grid: true,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 6- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 8- X: 3- Y: 6- Grid: true,Fail
spec@arb_sample_shading@samplemask 2,Fail
spec@arb_sample_shading@samplemask 2@0.250000 mask_in_one,Fail
spec@arb_sample_shading@samplemask 2@0.500000 mask_in_one,Fail
+24 -25
View File
@@ -2884,24 +2884,22 @@ zink_update_fbfetch(struct zink_context *ctx)
return ret;
}
void
static void
zink_update_vk_sample_locations(struct zink_context *ctx)
{
if (ctx->gfx_pipeline_state.sample_locations_enabled && ctx->sample_locations_changed) {
unsigned samples = ctx->gfx_pipeline_state.rast_samples + 1;
unsigned idx = util_logbase2_ceil(MAX2(samples, 1));
VkExtent2D grid_size = zink_screen(ctx->base.screen)->maxSampleLocationGridSize[idx];
for (unsigned pixel = 0; pixel < grid_size.width * grid_size.height; pixel++) {
for (unsigned sample = 0; sample < samples; sample++) {
unsigned pixel_x = pixel % grid_size.width;
unsigned pixel_y = pixel / grid_size.width;
unsigned wi = pixel * samples + sample;
unsigned ri = (pixel_y * grid_size.width + pixel_x % grid_size.width);
ri = ri * samples + sample;
ctx->vk_sample_locations[wi].x = (ctx->sample_locations[ri] & 0xf) / 16.0f;
ctx->vk_sample_locations[wi].y = (ctx->sample_locations[ri] >> 4) / 16.0f;
}
unsigned samples = ctx->gfx_pipeline_state.rast_samples + 1;
unsigned idx = util_logbase2_ceil(MAX2(samples, 1));
VkExtent2D grid_size = zink_screen(ctx->base.screen)->maxSampleLocationGridSize[idx];
for (unsigned pixel = 0; pixel < grid_size.width * grid_size.height; pixel++) {
for (unsigned sample = 0; sample < samples; sample++) {
unsigned pixel_x = pixel % grid_size.width;
unsigned pixel_y = pixel / grid_size.width;
unsigned wi = pixel * samples + sample;
unsigned ri = (pixel_y * grid_size.width + pixel_x % grid_size.width);
ri = ri * samples + sample;
ctx->vk_sample_locations[wi].x = (ctx->sample_locations[ri] & 0xf) / 16.0f;
ctx->vk_sample_locations[wi].y = (ctx->sample_locations[ri] >> 4) / 16.0f;
}
}
}
@@ -3042,7 +3040,8 @@ begin_rendering(struct zink_context *ctx, bool check_msaa_expand)
{
unsigned clear_buffers = 0;
struct zink_screen *screen = zink_screen(ctx->base.screen);
zink_update_vk_sample_locations(ctx);
if (ctx->gfx_pipeline_state.custom_sample_locations && ctx->sample_locations_changed)
zink_update_vk_sample_locations(ctx);
if (ctx->has_swapchain)
zink_render_fixup_swapchain(ctx);
bool has_depth = false;
@@ -3608,9 +3607,9 @@ zink_init_vk_sample_locations(struct zink_context *ctx, VkSampleLocationsInfoEXT
unsigned idx = util_logbase2_ceil(MAX2(ctx->gfx_pipeline_state.rast_samples + 1, 1));
loc->sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT;
loc->pNext = NULL;
loc->sampleLocationsPerPixel = 1 << idx;
loc->sampleLocationsCount = ctx->gfx_pipeline_state.rast_samples + 1;
loc->sampleLocationGridSize = screen->maxSampleLocationGridSize[idx];
loc->sampleLocationsPerPixel = ctx->gfx_pipeline_state.rast_samples + 1;
loc->sampleLocationsCount = loc->sampleLocationGridSize.width * loc->sampleLocationGridSize.height * loc->sampleLocationsPerPixel;
loc->pSampleLocations = ctx->vk_sample_locations;
}
@@ -3828,7 +3827,7 @@ flush_batch(struct zink_context *ctx, bool sync)
ctx->dd.bindless_bound = false;
ctx->di.bindless_refs_dirty = true;
ctx->index_buffer = NULL;
ctx->sample_locations_changed = ctx->gfx_pipeline_state.sample_locations_enabled;
ctx->sample_locations_changed = ctx->base.screen->caps.programmable_sample_locations;
if (zink_screen(ctx->base.screen)->info.dynamic_state2_feats.extendedDynamicState2PatchControlPoints) {
VKCTX(CmdSetPatchControlPointsEXT)(ctx->bs->cmdbuf, ctx->gfx_pipeline_state.dyn_state2.vertices_per_patch);
VKCTX(CmdSetPatchControlPointsEXT)(ctx->bs->reordered_cmdbuf, 1);
@@ -4123,10 +4122,9 @@ zink_set_framebuffer_state(struct pipe_context *pctx,
ctx->scissor_changed = true;
uint8_t rast_samples = ctx->fb_state.samples - 1;
if (rast_samples != ctx->gfx_pipeline_state.rast_samples)
if (rast_samples != ctx->gfx_pipeline_state.rast_samples) {
zink_update_fs_key_samples(ctx);
if (ctx->gfx_pipeline_state.rast_samples != rast_samples) {
ctx->sample_locations_changed |= ctx->gfx_pipeline_state.sample_locations_enabled;
ctx->sample_locations_changed |= ctx->gfx_pipeline_state.custom_sample_locations;
if (screen->have_full_ds3)
ctx->sample_mask_changed = true;
else
@@ -4179,8 +4177,8 @@ zink_set_sample_locations(struct pipe_context *pctx, size_t size, const uint8_t
{
struct zink_context *ctx = zink_context(pctx);
ctx->gfx_pipeline_state.sample_locations_enabled = size && locations;
ctx->sample_locations_changed = ctx->gfx_pipeline_state.sample_locations_enabled;
ctx->gfx_pipeline_state.custom_sample_locations = size && locations;
ctx->sample_locations_changed = true;
if (size > sizeof(ctx->sample_locations))
size = sizeof(ctx->sample_locations);
@@ -5547,6 +5545,7 @@ zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
ctx->compute_pipeline_state.dirty = true;
ctx->rp_changed = true;
ctx->sample_mask_changed = true;
ctx->sample_locations_changed = pscreen->caps.programmable_sample_locations;
ctx->gfx_pipeline_state.gfx_prim_mode = MESA_PRIM_COUNT;
ctx->gfx_pipeline_state.shader_rast_prim = MESA_PRIM_COUNT;
ctx->gfx_pipeline_state.rast_prim = MESA_PRIM_COUNT;
-3
View File
@@ -183,9 +183,6 @@ zink_batch_no_rp(struct zink_context *ctx);
void
zink_batch_no_rp_safe(struct zink_context *ctx);
void
zink_update_vk_sample_locations(struct zink_context *ctx);
static inline VkPipelineStageFlags
zink_pipeline_flags_from_pipe_stage(mesa_shader_stage pstage)
{
+4 -4
View File
@@ -298,7 +298,7 @@ update_gfx_pipeline(struct zink_context *ctx, struct zink_batch_state *bs, enum
}
VKCTX(CmdSetDepthBiasEnable)(bs->cmdbuf, VK_TRUE);
VKCTX(CmdSetTessellationDomainOriginEXT)(bs->cmdbuf, VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT);
VKCTX(CmdSetSampleLocationsEnableEXT)(bs->cmdbuf, ctx->gfx_pipeline_state.sample_locations_enabled);
VKCTX(CmdSetSampleLocationsEnableEXT)(bs->cmdbuf, ctx->gfx_pipeline_state.custom_sample_locations);
VKCTX(CmdSetRasterizationStreamEXT)(bs->cmdbuf, 0);
pipeline_changed = true;
}
@@ -450,8 +450,8 @@ emit_dynamic_state(struct zink_context *ctx, bool pipeline_changed, unsigned num
ctx->dsa_state_changed = false;
}
if (DYNAMIC_STATE != ZINK_NO_DYNAMIC_STATE) {
if (ctx->sample_locations_changed) {
if (ctx->sample_locations_changed) {
if (ctx->gfx_pipeline_state.custom_sample_locations) {
VkSampleLocationsInfoEXT loc;
zink_init_vk_sample_locations(ctx, &loc);
VKCTX(CmdSetSampleLocationsEXT)(bs->cmdbuf, &loc);
@@ -1007,7 +1007,7 @@ update_mesh_pipeline(struct zink_context *ctx, struct zink_batch_state *bs)
/* always rebind all stages */
VKCTX(CmdBindShadersEXT)(bs->cmdbuf, ZINK_GFX_SHADER_COUNT, stages, ctx->mesh_program->objects);
VKCTX(CmdBindShadersEXT)(bs->cmdbuf, 2, &stages[MESA_SHADER_TASK], &ctx->mesh_program->objects[MESA_SHADER_TASK]);
VKCTX(CmdSetSampleLocationsEnableEXT)(bs->cmdbuf, ctx->gfx_pipeline_state.sample_locations_enabled);
VKCTX(CmdSetSampleLocationsEnableEXT)(bs->cmdbuf, ctx->gfx_pipeline_state.custom_sample_locations);
VKCTX(CmdSetDepthBiasEnable)(bs->cmdbuf, VK_TRUE);
pipeline_changed = true;
}
+19 -5
View File
@@ -138,6 +138,12 @@ zink_create_gfx_pipeline(struct zink_screen *screen,
ms_state.sampleShadingEnable = VK_TRUE;
ms_state.minSampleShading = MIN2((float)(state->rast_samples + 1) / (state->min_samples + 1), 1.0f);
}
VkPipelineSampleLocationsStateCreateInfoEXT pslsci = {
VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
NULL,
VK_TRUE,
.sampleLocationsInfo.sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT
};
VkPipelineViewportStateCreateInfo viewport_state = {0};
VkPipelineViewportDepthClipControlCreateInfoEXT clip = {
@@ -208,6 +214,10 @@ zink_create_gfx_pipeline(struct zink_screen *screen,
VK_DYNAMIC_STATE_STENCIL_REFERENCE,
};
unsigned state_count = 4;
if (state->custom_sample_locations) {
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT;
ms_state.pNext = &pslsci;
}
if (screen->info.have_EXT_extended_dynamic_state) {
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT;
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT;
@@ -224,8 +234,6 @@ zink_create_gfx_pipeline(struct zink_screen *screen,
if (!is_mesh)
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY;
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_CULL_MODE;
if (state->sample_locations_enabled)
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT;
} else {
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_VIEWPORT;
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_SCISSOR;
@@ -521,14 +529,20 @@ zink_create_gfx_pipeline_output(struct zink_screen *screen, struct zink_gfx_pipe
ms_state.sampleShadingEnable = VK_TRUE;
ms_state.minSampleShading = MIN2((float)(state->rast_samples + 1) / (state->min_samples + 1), 1.0f);
}
VkPipelineSampleLocationsStateCreateInfoEXT pslsci = {
VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
NULL,
VK_TRUE,
.sampleLocationsInfo.sType = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT
};
VkDynamicState dynamicStateEnables[30] = {
VK_DYNAMIC_STATE_BLEND_CONSTANTS,
};
unsigned state_count = 1;
if (screen->info.have_EXT_extended_dynamic_state) {
if (state->sample_locations_enabled)
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT;
if (state->custom_sample_locations) {
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT;
ms_state.pNext = &pslsci;
}
if (screen->info.have_EXT_color_write_enable)
dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT;
+1 -1
View File
@@ -844,7 +844,7 @@ zink_init_screen_caps(struct zink_screen *screen)
caps->programmable_sample_locations =
screen->info.have_EXT_sample_locations &&
screen->info.have_EXT_extended_dynamic_state;
screen->info.sample_locations_props.variableSampleLocations;
caps->query_time_elapsed = screen->timestamp_valid_bits > 0;
+5 -3
View File
@@ -883,10 +883,11 @@ struct zink_gfx_pipeline_state {
/* order matches zink_gfx_output_key */
unsigned force_persample_interp:1;
uint32_t rast_samples:6;
uint32_t min_samples:6;
uint32_t min_samples:5;
uint32_t feedback_loop : 1;
uint32_t feedback_loop_zs : 1;
uint32_t rast_attachment_order : 1;
uint32_t custom_sample_locations : 1;
uint32_t rp_state : 16;
VkSampleMask sample_mask;
uint32_t blend_id;
@@ -930,7 +931,6 @@ struct zink_gfx_pipeline_state {
uint32_t vertex_strides[PIPE_MAX_ATTRIBS];
struct zink_vertex_elements_hw_state *element_state;
struct zink_zs_swizzle_key *shadow;
bool sample_locations_enabled;
enum mesa_prim shader_rast_prim, rast_prim; /* reduced type or max for unknown */
union {
struct {
@@ -1068,10 +1068,11 @@ struct zink_gfx_output_key {
struct {
unsigned force_persample_interp:1;
uint32_t rast_samples:6;
uint32_t min_samples:6;
uint32_t min_samples:5;
uint32_t feedback_loop : 1;
uint32_t feedback_loop_zs : 1;
uint32_t rast_attachment_order : 1;
uint32_t custom_sample_locations : 1;
uint32_t rp_state : 16;
};
uint32_t key;
@@ -1841,6 +1842,7 @@ struct zink_context {
bool sample_locations_changed;
VkSampleLocationEXT vk_sample_locations[PIPE_MAX_SAMPLE_LOCATION_GRID_SIZE * PIPE_MAX_SAMPLE_LOCATION_GRID_SIZE];
uint8_t sample_locations[2 * 4 * 8 * 16];
unsigned num_sample_locations;
struct pipe_stencil_ref stencil_ref;