Fix Workaround (WA1) and properly encode/decode drmFormatModifierCount
The goal is to remove WA1 from the spec while asynchronously updating the driver/renderer to avoid any production breakage.
The steps are as follows (I'll update status/links as MRs for each step are created):
Step 1:
Simultaneously update generator and headers to encode/decode count for VkDrmFormatModifierPropertiesList2EXT:
-
venus-protocol: https://gitlab.freedesktop.org/olv/venus-protocol/-/merge_requests/59 -
virglrenderer: virglrenderer!1039 (merged) - Also redirect
VkDrmFormatModifierPropertiesList2EXT
to original variant when submitting to native driver.
- Also redirect
-
mesa: mesa/mesa!21323 (merged)
Step 2:
Update to redirect original variant to VkDrmFormatModifierPropertiesList2EXT
before encoding (to temp. disable encode of original variant).
-
mesa: mesa/mesa!21367 (merged)
Step 3: Update generator and renderer headers to properly decode count in original variant.
-
venus-protocol: https://gitlab.freedesktop.org/olv/venus-protocol/-/merge_requests/61 -
virglrenderer: virglrenderer!1041 (merged)
Step 3.5:
-
Update Mesa CI's pinned virglrenderer: mesa/mesa!21496 (merged) -
Update Virglrenderer CI's pinned mesa: virglrenderer!1044 (merged)
Step 4:
Remove the redirection from step 2, and additionally uprev the generated headers from the venus-protocol update in step 3.
-
mesa: mesa/mesa!21395 (merged)
Step 4.5:
-
Update Virglrenderer CI's pinned mesa: Already covered by virglrenderer!1052 (merged), which includes mesa/mesa!21395 (merged)
Step 5: Remove the redirection from step 1:
-
virglrenderer: virglrenderer!1042 (merged)
Step 5.5:
-
Update Mesa CI's pinned virglrenderer: mesa/mesa!21794 (merged)
Tests performed at each "step":
- crosvm+Linux VM: vkcube/Hollow Knight in Linux VM under Crosvm
- vtest: sample program that calls
vkGetPhysicalDeviceFormatProperties2()
with eitherVkDrmFormatPropertiesListEXT
orVkDrmFormatPropertiesList2EXT
(not both). Checked output. - crosvm+Linux VM:
dEQP-VK.drm_format_modifiers.*
compare with native results and vtest results before any changes.