diff --git a/src/gallium/drivers/zink/VP_ZINK_requirements.json b/src/gallium/drivers/zink/VP_ZINK_requirements.json index 39a034ab769..7a54ff9e3ea 100644 --- a/src/gallium/drivers/zink/VP_ZINK_requirements.json +++ b/src/gallium/drivers/zink/VP_ZINK_requirements.json @@ -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 } } }, diff --git a/src/gallium/drivers/zink/ci/zink-lavapipe-fails.txt b/src/gallium/drivers/zink/ci/zink-lavapipe-fails.txt index 5109eed9baf..355b62d4c54 100644 --- a/src/gallium/drivers/zink/ci/zink-lavapipe-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-lavapipe-fails.txt @@ -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 diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 1720a0739df..f6e2575c591 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -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; diff --git a/src/gallium/drivers/zink/zink_context.h b/src/gallium/drivers/zink/zink_context.h index dbd30e19fb7..814077e6144 100644 --- a/src/gallium/drivers/zink/zink_context.h +++ b/src/gallium/drivers/zink/zink_context.h @@ -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) { diff --git a/src/gallium/drivers/zink/zink_draw.cpp b/src/gallium/drivers/zink/zink_draw.cpp index a0e1db4f6d4..fcafbe02edc 100644 --- a/src/gallium/drivers/zink/zink_draw.cpp +++ b/src/gallium/drivers/zink/zink_draw.cpp @@ -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; } diff --git a/src/gallium/drivers/zink/zink_pipeline.c b/src/gallium/drivers/zink/zink_pipeline.c index aeed4601409..a5363a98481 100644 --- a/src/gallium/drivers/zink/zink_pipeline.c +++ b/src/gallium/drivers/zink/zink_pipeline.c @@ -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; diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 47e388f778b..68e82453b9f 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -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; diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index 7b3779731d5..c303bd17adb 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -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;