From c8c90eb456aa46fe773e01e881c0b99f0e0264c7 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 25 Oct 2023 21:29:33 +0100 Subject: [PATCH 001/356] VERSION: bump for rc1 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 67ca207feec..5c34834d2af 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -23.3.0-devel +23.3.0-rc1 From 30a1ebe0344ae776db9d9c155498951cd8851fba Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Mon, 30 Oct 2023 15:46:58 +0000 Subject: [PATCH 002/356] .pick_status.json: Update to e64a97694ac9dc97f65e1a8e91a5c9789109fd2c --- .pick_status.json | 1822 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1822 insertions(+) create mode 100644 .pick_status.json diff --git a/.pick_status.json b/.pick_status.json new file mode 100644 index 00000000000..98933a5b14c --- /dev/null +++ b/.pick_status.json @@ -0,0 +1,1822 @@ +[ + { + "sha": "e64a97694ac9dc97f65e1a8e91a5c9789109fd2c", + "description": "anv: use anv_state_pool_state_address for blorp vertex buffer address", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8d813a90d62de6e2539d8ced9174480f95663328", + "description": "anv: fail pool allocation when over the maximal size", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8fc42d83bed381f9c3f0c87be6a2dc957c28f6cf", + "description": "anv: make sure pools can handle more than 2Gb", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cc67bd48d957a9402009049f31948dd71be99a92", + "description": "anv: add max_size argument for block & state pools", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b30428416ae5f50705c998693e4769ba5b4f0700", + "description": "anv: deal with state stream allocation failures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed83d1415c2bb04ef12aba882b704577b9df96be", + "description": "anv: rename internal heaps", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f9753488ecb7e60f8060db38ba4d4fcef9f42431", + "description": "blorp: handle binding table & surface state allocation failures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1cc26e8b6657b5097995470ced9ae9cc7b6f01b9", + "description": "rusticl: Show an error message if the build is attempted with an outdated bindgen version", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e350193eb56e5b6489199b005a54d2c5e48fb1cd", + "description": "util: remove unused lut", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2833d1ade1421cce52351fd5f2d6908cc4bc14e9", + "description": "intel/dev: fix intel_device_info_is_adln check", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "3cf71ddfac634d611ee6492a5fed15e2edadc3cc", + "notes": null + }, + { + "sha": "9bd47aabaf332ba08713c311c1fec4086e1639ae", + "description": "anv: Add more space for init_render_queue_state() batch (MTL regression)", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "7cdacaf49356fcd6da32469be96493923faa3533", + "notes": null + }, + { + "sha": "117f81585eaaaa7a7a76ecf1d267010980de3f43", + "description": "tu/a6xx: Exclude REG_A6XX_TPL1_UNKNOWN_B602 from reg stomping", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "069797c7083a51929cba2608e278873badd44e89", + "description": "tu/a7xx: Zero out A7XX_VPC_PRIMITIVE_CNTL_0 in 3d blits", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cdbb8b541266b1095c9565eef6d115adac73c1aa", + "description": "tu: Fix reading of stale (V)PC_PRIMITIVE_CNTL_0", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "7be8d0f7f490ea58c89798efca7e45b84dc395da", + "notes": null + }, + { + "sha": "0477346c0b0c2eabe99dd43e920baa607cedb272", + "description": "aco: remove dead code in nir_intrinsic_xfb_counter_{add,sub}_amd", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d390cd7c5d39ade3c48e35607617f73b3a0c3133", + "description": "ac/nir: remove dead code in nir_intrinsic_xfb_counter_{add,sub}_amd", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5176f75e0d2d43f7c432c110e1f450ec710ba10c", + "description": "radv: remove unnecessary VS_PARTIAL_FLUSH for NGG streamout", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "eb47e077826f99320c0ba98b694e003d3cc86a58", + "description": "radv: remove NGG streamout support for RDNA1-2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7beddd4f5c0022cee6c172afc4428d332ee6347d", + "description": "radv: use the GPUVM fault protection status helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e18c4bca31fd4af25bb32b2f772b069d3027c8e3", + "description": "ac/debug: add a helper to print GPUVM fault protection status", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bc09932ec3b7b0fe504a40df8b2f1164aded4001", + "description": "ac/registers: allow to parse GCVM_L2_PROTECTION_FAULT_STATUS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7d96fe853e1b007293054645caf54ade77a77c90", + "description": "radv: fix a synchronization issue with primitives generated query on RDNA1-2", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "82bef62c17c79b298601fd565ce558c5282a88b7", + "description": "v3d,v3dv: fix MMU error from hardware prefetch after ldunifa", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "830018abfa2c690f4b734351ab1e936efd4dd230", + "description": "driconf: add a workaround for Rainbow Six Siege", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "78edaa2a9a1f5114db9e61ce2ad558d3f2c1decd", + "description": "radeonsi: modify binning settings to improve performance", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4f892ecc1e143c42a41d32450262e799d4d152af", + "description": "zink: emit MemoryAccess flags for coherent global load/stores", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2f34a1db5883a2e5178371d8295f711bd754a1e1", + "description": "zink: deallocate global_bindings array", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "a6e9e0f0d771e5121ea477cbaabe65a38de0ce5d", + "notes": null + }, + { + "sha": "6afa1b3bade64e0676b349d7d57b3c89b5ec3e9e", + "description": "zink: handle denorm preserve execution modes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "049af04341031f56ad5b114db59ae7ba1df9e71a", + "description": "zink: validate pointer alignment in resource_from_user_memory", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5e3b7bef1e1efa47530c35e86731085ff98dc2ec", + "description": "rusticl: handle failed maps gracefully", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7f08036abc5dd361b2161660f2f7efce8df86056", + "description": "rusticl/mesa: pass PIPE_BIND_LINEAR in resource_create_texture_from_user", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "71a9af49107289439f281ab59b5f67f59064f0aa", + "notes": null + }, + { + "sha": "398fadf1cf33b9714924a372709623631c1064a3", + "description": "rusticl/device: restrict const max size to 1 << 26 bytes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "38deb97d101ef421a7a3e90798f2d6708e128dbf", + "description": "venus: use vk_device_memory tracked memory_type_index", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "99b716c64d970cbf003693fd9e7fac85ea39b54b", + "description": "venus: use vk_device_memory tracked size", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "73267e38c98f6e27e3cb584234f69e26565008d9", + "description": "venus: use vk_device_memory tracked export and import handle types", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a47992734ad5ba7c582d5f39d601c2b3c0fdd146", + "description": "venus: use common AHB management and export impl", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6418a9351053d49866ca7c6d9564b553d8259be3", + "description": "venus: use common vk_device_memory as vn_device_memory base", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "35a3a6338f11b82927d72c56a58360e19455ba59", + "description": "venus: use common vk_image as vn_image base", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a8b2cfe877929b2400d1b8a9231234e2c77144ad", + "description": "venus: avoid modifier prop query in vn_android_get_image_builder", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7b76e1f62cad88eec94a7cb4d3311fa5e03596f1", + "description": "venus: tiny refactor of device memory report interface", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bf0a5ebca8dee41b441ddbdf4d11a42ca448d2c5", + "description": "venus: use common vk_image_usage_to_ahb_usage helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1547cf137ed713b092c3937798753f4b311552cf", + "description": "venus: use common vk_image_format_to_ahb_format helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "276b9b13cf4d073c8a6faa18f41952d2f826679d", + "description": "radeonsi: initialize perfetto in the right place", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "a164e147e91e8c6090d4dceca59806e091244c50", + "notes": null + }, + { + "sha": "57decad9768a445de23d093cc8e004269a352b50", + "description": "intel/xehp: Enable TBIMR by default.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed9886321cec8cb077cd33543daa887bd49b296d", + "description": "intel/xehp+: Use TBIMR tile box check in order to avoid performance regressions.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f0d24b155b5c434b59e9431809633cee6e7e49de", + "description": "intel/xehp+: Adjust TBIMR batch size based on slice count.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7cdacaf49356fcd6da32469be96493923faa3533", + "description": "intel/xehp: Adjust TBIMR performance chicken bits.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "08fd259b5b79f09ba1db45c57fda983976bc722b", + "description": "anv/xehp+: Enable TBIMR in generated draw calls.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "65bbe58b2532f0b449eaec78b753563b5f1f1c33", + "description": "anv/xehp: Implement TBIMR tile pass setup and pipeline bandwidth estimation.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d13c81a2c3bfe9a81c6310d393add7fd0e53b11c", + "description": "iris/xehp: Implement TBIMR tile pass setup and pipeline bandwidth estimation.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "694d64188bae3634ea1162773679035874285392", + "description": "intel/xehp+: Define driconf option for selectively disabling TBIMR.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "da28582eec47c029e5251c437c84f6023a81777e", + "description": "intel/xehp+: Add dynamic state flags controlling whether TBIMR is enabled during 3D primitives.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "622c2498d422485221f6804fbfd6593ed005b372", + "description": "intel/xehp+: Import algorithm for TBIMR tiling parameter calculation.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cec5541b0245dd0a50b4e73f97d0ebd67fb14a57", + "description": "intel/xehp+: Add TBIMR-related genxml definitions.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3e3fd921acd77ca8fef1bec93de14b4ed06db18f", + "description": "intel/mtl: Import L3 cache configurations.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "468904e833f7598dab68c7b8ff6d751de0952516", + "description": "intel/dg2: Import L3 cache configurations.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "524996106ce11595e4a57885db677e937f60e15f", + "description": "intel/l3: Use devinfo->urb.size when cfg urb-size is 0.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed5ff8f297624924cf36aa126181166ed1e520d9", + "description": "intel/l3: Adjust URB weight calculation for gfx12.5+.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6b9583734b1f12db6ed1b44e7d8cb953f5439005", + "description": "intel/l3: Set up L3FullWayAllocationEnable config if ALL partition has over 126 ways.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f36027f389bfe089c2024ce9f8dfbb84e6157831", + "description": "intel/l3: Define helper for obtaining the size of an L3 partition in KB.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "19e62e8fbadfeacbafc9696ada7c210fb2a70efc", + "description": "intel/l3/gfx11+: Add tile cache partition to intel_l3_config struct.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9d73bfc9cdd127a52d07bf8b60e66c5a9495890e", + "description": "anv: Fix leak when compiling internal kernels", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "736577871b939573af400e4e64ebfe18863d49af", + "description": "zink: check for cbuf0 writes before setting A2C", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d2abb4f97543c8e8bbfa7a8a85e78eb04a028d4f", + "description": "zink: make (some) vk allocation commands more robust against vram depletion", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c4283e32e3e8d96987358620aa43483a79eea08b", + "description": "radv: correctly return oom from the device when failing to create a cs", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f8909e7d55e86c7db55f4b9482f94c993f5e2529", + "description": "zink: add more locking for compute pipelines", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9a3af6e1d8a88ff5c919d33966e97168fe780a86", + "description": "rusticl/queue: Only take a weak ref to the last Event", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "5b3ff7e3f3d0e35f7bc17d9f208a8aeee3062427", + "notes": null + }, + { + "sha": "7ec2544a9b8ee72ac384bb5a57326a4e386dab6f", + "description": "radv: dump the pipeline hash to the gpu hang report", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5cb00f7e77de97f7695791444f5dcf73e55f5b76", + "description": "broadcom/qpu: use back BITFIELD64_RANGE for ANYOPMASK", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1c619b668d69c66521d1da8edd97e518d6d61857", + "description": "radv: fix buffers in vkGetDescriptorEXT with size not aligned to 4", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "46e0c77582dd2cfbe77e78cf33399eb761ccb7b6", + "notes": null + }, + { + "sha": "01b6ccccc6af3111da4466d083335ed5f0646a5e", + "description": "zink: lower fisnormal as it requires the Kernel Cap", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "82eed326f47848fddef39b933a2ce9ab5492a4d8", + "notes": null + }, + { + "sha": "e3a0df646830916597466e66eafaa243214b873b", + "description": "zink: emit float controls", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "700a2dc648a5e73c20e456b5144418a8b405f985", + "description": "zink: alias nir scratch memory by lowering to common bit_size", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ab065d9daa0712b1417fe27deefe2e390807cc8c", + "description": "zink: support CLAMP_TO_BORDER with unnormalized coords", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "abd8ef84ff4034a8f159f4743dc025dbfde8b837", + "description": "rusticl/mem: properly set pipe_image_view::access", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "694001eef70e220c709523cd71aad4b7b7c6c8db", + "description": "rusticl/device: restrict param_max_size further", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9b6ac56d72d6d74cfe85ed9caff663f841dd6def", + "description": "rusticl/device: restrict image_buffer_size", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d6a48ff40278b674a855791284a753ecca3f7cf8", + "description": "vtn/opencl: always lower to libclc fmod", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7cff4cc9c893f897feb0a3c072878f446682f5ba", + "description": "intel/fs: Xe2 fix for ExBSO on UGM", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b6fbc4e4ddfd0e51348e4e972c76a0d82301e7dc", + "description": "v3d/ci: run V3D GL tests in 64-bits", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ce5475366e9f4dcbd24eed8af7fbcfe38427d242", + "description": "compiler,vulkan,drm-shim: Remove unused include directories from meson.build", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "73b639ec5ceb0696b8eb206322b4aca995bb34e1", + "description": "nir: #include \"util/macros.h\" for BITFIELD64_MASK in nir.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ee1039877c14b9671e08342585bd0e2f4a6decb6", + "description": "mesa/st/texture: match width+height for texture downloads of cube textures", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "df74ea771782966009def93339d0f4a1d94d12a1", + "description": "zink: unset explicit_xfb_buffer for non-xfb shaders", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "87e3720b66aeef08351dc578863360c587514d53", + "description": "aux/u_transfer_helper: set rendertarget bind for msaa staging resource", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "694ebe8c7228aa5a2c427cd33b0d6fdf3360174d", + "description": "zink: only emit xfb execution mode for last vertex stage", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e8b2680045b68334f3c82fada27a4edfe83bad22", + "description": "zink: clamp resolve extents to src/dst geometry", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "009d4a5fda58d5bb4c642fe711e19cb91c4bc1f4", + "description": "zink: always set VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT for usermem", + "nominated": true, + "nomination_type": 4, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7035b5a8e858ca4c4773baefdd62bf19e7e3ffe6", + "description": "zink: emit SpvCapabilitySampleRateShading with SampleId", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2fb2df6a38693777c0b9451a454d6fcb7490df3", + "description": "ci: bump VVL to 1.3.269", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "969ede45210ad9134236681a2965e28f51b83825", + "description": "ci/bin: Refactor create_job_needs_dag", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4e4743ec0a3768b76926cb65ea9ad3cde88b026a", + "description": "ci/bin: Do not forget to add early-stage dependencies", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c7b67d86191659c4c5b1adc0306e2a1381400178", + "description": "ci/bin: Use iid instead of SHA in gitlab_gql", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "49b3118302eb8eb7c1f3a6aa9fca41ca1ffaf7b8", + "description": "nir/lower_bit_size: Use b2b for boolean subgroup ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "501475913321a5f7efc25e881074bda14c6bb9e5", + "description": "nir: Return b2b ops from nir_type_conversion_op()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d5c310899a72bfa400750ae37169fc6bf3e4f83b", + "description": "nir: Split nir_lower_subgroup_options::lower_vote_eq into two bits", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f10d768a8861139ec4aa9940f6b5e6b687ff9d16", + "description": "nir/lower_bit_size: Use u_intN_min/max()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5465e5b157b95fd2578ac773a93f99dc60b1d500", + "description": "nir/lower_bit_size: Handle vote_feq/ieq separately", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5979e74177eb3013ca7e78867295e9a015e6c8ed", + "description": "nir/lower_bit_size: Fix subgroup lowering for floats", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "f95665cfebbd943ca3795c026e3dabf4af3f262c", + "notes": null + }, + { + "sha": "16664b74a2cc18c8e5cbed0ce9b0e39d803f2ace", + "description": "nir: Add a lower_read_first_invocation option to lower_subgroups", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3d027cca1e1e7e36a430b25f52fabbcbb7325bc7", + "description": "nir: Add a lower_first_invocation_to_ballot option to lower_subgroups", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d1d29d4f4068b84b8949d6b588950895070b86ff", + "description": "ci: skip zink vram test", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9a98d6714d1f287746a2dc4a61a9cb3868146fc4", + "description": "zink: enable unsynchronized texture uploads using staging buffers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "846a5ea2244ca365555a20cb8af8ccee850ba0b6", + "description": "zink: add locking for batch refs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cd08b070a39e55b94bf078677d6634e7da9c63f6", + "description": "zink: add flag to restrict unsynchronized texture access", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ee0d6dd711e639fc713a6f6b87d9879f1cf1599", + "description": "zink: add a third cmdbuf for unsynchronized (not reordered) ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8d0eaf97db626b7f593272368ba35f646af07668", + "description": "zink: rework cmdbuf submission to be more extensible", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7d0dbdeca29c955ca8bb220a02182ba75cbe0855", + "description": "zink: assert that transfer_dst is available before doing buf2img", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0b11b41fff6ab4c79180d06bd9dff454fc9228b0", + "description": "zink: barrier_cmdbuf -> reordered_cmdbuf", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "00206e01a47e2a3d4596f3b6b29da1a1c23b7237", + "description": "zink: handle unsynchronized image maps from tc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9cc06f817cffa71b4bbbe7b705dadf15605b611f", + "description": "tc: allow unsynchronized texture_subdata calls where possible", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "815ed12e3b4a19eb7a62c638ea5744991cb4ef24", + "description": "tc: use strong refs for fb attachment tracking", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b385fa85db020a73c58ad92db50444abcf436e60", + "description": "tc: add batch usage tagging to threaded_resource", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "39de1ce66082cb69957f1d77964ec1b6b73394aa", + "description": "tc: always track fb attachments", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6d236917a9ac315313e6d2976275d45031d96ed9", + "description": "tc: add non-definitive tracking for batch completion", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "782481c429100ebc8df68ca54e4f34722eced1c8", + "description": "zink: add copy box locking", + "nominated": true, + "nomination_type": 4, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "09a8cc0d6debfe72a9d83229752618d3e001704b", + "description": "radeonsi/vcn: vcn4 encoding interface dummy update", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ef4aa24a15a7a84b6deda058f710e5f4c52e3984", + "description": "meson: Add gallium-drivers=all option", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b70e948886976d2fb17b3191c9116c1babe25810", + "description": "meson: Add vulkan-drivers=all option", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2552ac360d25e6e5f52c0877228540aeb012c858", + "description": "crocus: Support building on non-Intel", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c8192c1c93ec4a988c14c038f7efcf2343c1f62a", + "description": "hasvk: Support builiding on non-Intel", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dfb95160266e1be49edc08863c4c760c3f774f9a", + "description": "d3d12: d3d12_video_buffer_create_impl - Fix resource importing", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "62fded5e4f8fce10abcb310b03a135ed794dff28", + "notes": null + }, + { + "sha": "18d8a96a00a1666fcf202ae89aee6344d295687e", + "description": "nir/split_vars: Don't split arrays of cooperative matrix types", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "2d0f4f2c17b79830e9780a68bc473718d4abd4ad", + "notes": null + }, + { + "sha": "24631d308c035f22697bcda33f6306fb10cc8c74", + "description": "anv: ensure we reapply always pipeline dynamic state in runtime state", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c580d604fb3632fd8eb7882fd83fcdbe7151f5ef", + "description": "ci/b2c: fix artifact collection", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ac16f00352a63d615759d3849b0fee35c7e05f2a", + "description": "docs: improve readability of c-signatures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bbd6ef4d34f0387087378b91b5056760f36b91b2", + "description": "docs: remove breathe/doxygen stuff", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ae74d486ad65d75d5a23ce478b04a4d5f20562e0", + "description": "docs/isl: use hawkmoth instead of doxygen", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "eabd93bba8e8bb2330412ae5997855e948b028a1", + "description": "docs/nir: use hawkmoth instead of doxygen", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "082e7d23e7b6aee41f87ce3ad806a71fc0ef8fdf", + "description": "docs/vulkan: use hawkmoth instead of doxygen", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "91587326ae1c7b2fae7c70c92436933d72969be0", + "description": "docs: Add docs/header-stubs/README.rst", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "67485efd654fd448c2adbb520a1fc1bca469c230", + "description": "docs: prepare for hawkmoth", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0ed5b8af01d787f06d5c1ed4df161777bc20d8da", + "description": "isl: drop **< style documentation comments", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d407cd821631fd5a9b3a3ae7f1e4cdeb7880429e", + "description": "nir: drop **< style documentation comments", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4024d0c196c1df2118e01ae29b3d1dc14aada145", + "description": "nir: add names to some typedef'd structs/enums", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2f7bc066435ecde336397a9748c9d997b2f480f8", + "description": "radeonsi: Fix clear-render-target shader for 1darrays in NIR", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "63923d5d4349f0be087f398cc845560a2c48d59c", + "description": "ci/rpi4: add spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_yvyu to the list of known failures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e6b4346eeeedcb03e225113d89ad0fbe58081729", + "description": "ci/rpi4: group all spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_* together", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e95c9b0515b85f65e00d47a152a881cc232a0d92", + "description": "mesa/bufferobj: ensure that very large width+offset are always rejected", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4f8a2253875fdb677beb85c91ecb033cbf231fc7", + "description": "ac/gpu_info: remove bogus assertion about number of COMPUTE/SDMA queues", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fb64f7c676e1e48a23603ff148e7ce4e7c7c6d6e", + "description": "radv: advertise VK_EXT_image_compression_control", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8a25a9f4dd51b0c4287fadeaf7b346b7ec386a4f", + "description": "radv: implement VK_EXT_image_compression_control", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ec0a4c89cf776fa2a20fd558837b6ca5700297a", + "description": "radv: move RADV_DEBUG_NO_HIZ check in radv_use_htile_for_image()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ce5472137fb57348da59c32944e4b126a8ae795c", + "description": "anv/meson: add missing dependency on the interface header", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "db335d9b7385e75442e6d5de70a1e9abf9165150", + "notes": null + }, + { + "sha": "c945e0777d4e0db54ab81adbb7d7ef41adee7432", + "description": "anv: add required PC for Wa_14014966230", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2254eaa3ae03e8616d0786eca4a0aa79edc4aa0d", + "description": "anv: add current_pipeline for batch_emit_pipe_control", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ffc4bd31cf8ccb3558a2b14bfac52e97f7b7d7c", + "description": "iris: add required PC for Wa_14014966230", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3cf71ddfac634d611ee6492a5fed15e2edadc3cc", + "description": "intel/dev: provide intel_device_info_is_adln helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ffa458ee8fa3ca15cbf23573a6cfe98ac96ac526", + "description": "nir: remove redundant include of gallium headers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "43715516fcbcc5155c3f270e50641857ae86403a", + "description": "treewide: Merge num_mesh_vertices_per_primitive and u_vertices_per_prim into mesa_vertices_per_prim", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "be431e0dc71f2da3b1cd5e552fa490617b851c5b", + "description": "compiler: Implement num_mesh_vertices_per_primitive to match u_vertices_per_prim", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d446ccfc81bc985e592949bc440fbd6709ecf737", + "description": "draw: fix uninit variable false positive", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0a564171f63eac6d81bbcb2aae72c788747c3c02", + "description": "meson: be able to build radeonsi without llvm", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bc59bbd43b916181e08084304ff2d695eda1784d", + "description": "radeonsi: selectively build llvm files", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cc8e4b321b054edd07535ec96efccf0da574f9cd", + "description": "radeonsi: change compiler name for aco", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9db67311cf483f7c204e2152ee05e4f14e4b2f8b", + "description": "radeonsi: does not call llvm init when no llvm available", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed2e2038de1e74f6caab347be8b072c256d2b946", + "description": "radeonsi: disk cache remove llvm dependancy when use aco", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bad8fbe7f81e0c0d3b752b180e1d381f06dbc973", + "description": "radeonsi: include ac_llvm_util.h when llvm available", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c2e2a78c72e786f603f8ead1c589d8e4cbbd77c7", + "description": "radeonsi: set use_aco when no llvm available", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "18e19a53e92382db195a6600f6efaa64e750e069", + "description": "radeonsi: selectively build llvm compile", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a5fc8804957b78679e6ae563bc31e9e15cff4ac5", + "description": "radeonsi: selectively build si llvm compiler create/destroy", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b511edc0d56125467e621ba31416c0ece2c3dc25", + "description": "radeonsi: move llvm internal header to si_shader_llvm.h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "032c592619bf1314a34219b11b85e45da9781bb9", + "description": "radeonsi: stop llvm context creation when use aco", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5bae345fb78dee8310f73b997b01bf80a140e853", + "description": "radeonsi: move llvm compiler alloc/free into create/destroy funcntion", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "79009811a2c0493532fc4ddbacf01cad221e7d20", + "description": "radeonsi: move use_aco to si_screen", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "18f79f46368e28ca46c33af9976e29040051f9ca", + "description": "radeonsi: enable aco compilation for merged shader parts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0f23af5c0ac42a1b37f22129f31ef3c92646e165", + "description": "radeonsi: fill aco shader info for part mode merged shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8cbd52f0015a13eefefd8e40b826485139c605fd", + "description": "radeonsi: add vs prolog args needed by aco ls vgpr fix", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "23cb6768cb8010bfa8b44c43fca87741d4751141", + "description": "aco: add aco_is_gpu_supported", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9c63138ae35ad1032cac4fd269fdf4d32a7ca164", + "description": "aco: stop emit s_endpgm for first stage of merged shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "14022a3a0eb42cee7c0ce9c5471c60b9a3663771", + "description": "aco: move end program handling to select_shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f3f2311d69b9d172b9ad7996e795e6d3492294f2", + "description": "aco: extend max operands in a instruction to 128", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e2af0b0b3f31b7e80f262305c6fade1f384e2fe1", + "description": "aco: add create_end_for_merged_shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "71fd3c2a35a223de4cf20ce8ea8302276d9b28f1", + "description": "aco: do not fix_exports when separately compiled ngg vs or es", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "895c85ca8feaad5bc4637e548d42fc38267c21d8", + "description": "vulkan/wsi: unify all the image usage flag caps", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ac6139ad73f55595cb089d848d080f8e84689c34", + "description": "zink: don't block large vram allocations", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8cfb46e27dfb12acdb1a00f7687a43899d770cca", + "description": "ntt: lower indirect tesslevels in ntt", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "84006587d7e5b87526a9b83135393251afeef777", + "notes": null + }, + { + "sha": "6505f5aadec7da0f762c0f50e3c5b0c07fae1539", + "description": "docs: update calendar for 23.3.0-rc1", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a65bb292d0d81144f334f6f848667ac6cb6ac8c", + "description": "zink/ci: drop the concurrency of the zink-radv-vangogh-valve job", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "439b0e86884eba55a4c25add9fe2763af1782b9f", + "description": "intel/fs: fix dynamic interpolation mode selection", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "68027bd38e134f45d1fe8612c0c31e5379ed7435", + "notes": null + }, + { + "sha": "0757ac65273f3418ee724773fea99a480d4151c9", + "description": "docs: reset new_features.txt", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed8abf1e2deacef1c61223ab3072fc9b041845bd", + "description": "VERSION: bump to 24.0", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + } +] \ No newline at end of file From a0690566bdf282accedc98b1af8ee2beaf5432d7 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Mon, 23 Oct 2023 17:42:35 +0300 Subject: [PATCH 003/356] intel/fs: fix dynamic interpolation mode selection We can end up in situation where we are dispatched with a multisample framebuffer but not at per-sample. In this case we would request the at_sample value with the wrong message configuration. Relying on the BRW_WM_MSAA_FLAG_MULTISAMPLE_FBO flag superseeds BRW_WM_MSAA_FLAG_PERSAMPLE_DISPATCH. Fixes piglit tests : spec@arb_gpu_shader5@arb_gpu_shader5-interpolateatsample* With Zink on Anv Signed-off-by: Lionel Landwerlin Fixes: 68027bd38e ("intel/fs: implement dynamic interpolation mode for dynamic persample shaders") Reviewed-by: Emma Anholt Part-of: (cherry picked from commit 439b0e86884eba55a4c25add9fe2763af1782b9f) --- .pick_status.json | 2 +- src/intel/compiler/brw_lower_logical_sends.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 98933a5b14c..e50dc6ffda0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1794,7 +1794,7 @@ "description": "intel/fs: fix dynamic interpolation mode selection", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "68027bd38e134f45d1fe8612c0c31e5379ed7435", "notes": null diff --git a/src/intel/compiler/brw_lower_logical_sends.cpp b/src/intel/compiler/brw_lower_logical_sends.cpp index c055da7e8bc..1e7d7668f98 100644 --- a/src/intel/compiler/brw_lower_logical_sends.cpp +++ b/src/intel/compiler/brw_lower_logical_sends.cpp @@ -2715,6 +2715,7 @@ lower_math_logical_send(const fs_builder &bld, fs_inst *inst) static void lower_interpolator_logical_send(const fs_builder &bld, fs_inst *inst, + const struct brw_wm_prog_key *wm_prog_key, const struct brw_wm_prog_data *wm_prog_data) { const intel_device_info *devinfo = bld.shader->devinfo; @@ -2747,7 +2748,7 @@ lower_interpolator_logical_send(const fs_builder &bld, fs_inst *inst, const bool dynamic_mode = inst->opcode == FS_OPCODE_INTERPOLATE_AT_SAMPLE && - wm_prog_data->persample_dispatch == BRW_SOMETIMES; + wm_prog_key->multisample_fbo == BRW_SOMETIMES; fs_reg desc = inst->src[1]; uint32_t desc_imm = @@ -2799,7 +2800,7 @@ lower_interpolator_logical_send(const fs_builder &bld, fs_inst *inst, desc = ubld.vgrf(BRW_REGISTER_TYPE_UD); check_dynamic_msaa_flag(ubld, wm_prog_data, - BRW_WM_MSAA_FLAG_PERSAMPLE_DISPATCH); + BRW_WM_MSAA_FLAG_MULTISAMPLE_FBO); if (orig_desc.file == IMM) { /* Not using SEL here because we would generate an instruction with 2 * immediate sources which is not supported by HW. @@ -3185,6 +3186,7 @@ fs_visitor::lower_logical_sends() case FS_OPCODE_INTERPOLATE_AT_SHARED_OFFSET: case FS_OPCODE_INTERPOLATE_AT_PER_SLOT_OFFSET: lower_interpolator_logical_send(ibld, inst, + (const brw_wm_prog_key *)key, brw_wm_prog_data(prog_data)); break; From e886ef760ca0764fd004a989d97f4cb0bbe6bedb Mon Sep 17 00:00:00 2001 From: Neha Bhende Date: Tue, 17 Oct 2023 15:58:23 -0700 Subject: [PATCH 004/356] ntt: lower indirect tesslevels in ntt Tessellation shader which are using indirect addressing for tesslevels e.g gl_TessLevelOuter[gl_InvocationID] = tessLevelOuter; are crashing because gl_TessLevelOuter is now a compact array variable and nir expects a constant array index into the compact array variable. This patch handles such cases. This fixes MR 21940 Fixes: 84006587d7e5 ("glsl: Delete the lower_tess_level pass.") Tested with glretrace Reviewed-by: Charmaine Lee Reviewed-by: Emma Anholt Part-of: (cherry picked from commit 8cfb46e27dfb12acdb1a00f7687a43899d770cca) --- .pick_status.json | 2 +- src/gallium/auxiliary/nir/nir_to_tgsi.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index e50dc6ffda0..b26e0f5ef42 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1764,7 +1764,7 @@ "description": "ntt: lower indirect tesslevels in ntt", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "84006587d7e5b87526a9b83135393251afeef777", "notes": null diff --git a/src/gallium/auxiliary/nir/nir_to_tgsi.c b/src/gallium/auxiliary/nir/nir_to_tgsi.c index 521a643d0fb..4cf7fbc20c4 100644 --- a/src/gallium/auxiliary/nir/nir_to_tgsi.c +++ b/src/gallium/auxiliary/nir/nir_to_tgsi.c @@ -3898,6 +3898,15 @@ const void *nir_to_tgsi_options(struct nir_shader *s, NIR_PASS_V(s, nir_remove_dead_variables, nir_var_shader_in, NULL); } + /* Lower tesslevel indirect derefs for tessellation shader. + * tesslevels are now a compact array variable and nir expects a constant + * array index into the compact array variable. + */ + if (s->info.stage == MESA_SHADER_TESS_CTRL || + s->info.stage == MESA_SHADER_TESS_EVAL) { + NIR_PASS_V(s, nir_lower_indirect_derefs, 0 , UINT32_MAX); + } + NIR_PASS_V(s, nir_lower_io, nir_var_shader_in | nir_var_shader_out, type_size, (nir_lower_io_options)0); From aac2d7f100a7e659a3b3ff6803c5607b73ef7109 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 25 Oct 2023 13:32:22 -0400 Subject: [PATCH 005/356] zink: don't block large vram allocations I think this was masking some other problem that has long since been fixed cc: mesa-stable Part-of: (cherry picked from commit ac6139ad73f55595cb089d848d080f8e84689c34) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_bo.c | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index b26e0f5ef42..987d80bf1c1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1754,7 +1754,7 @@ "description": "zink: don't block large vram allocations", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/zink/zink_bo.c b/src/gallium/drivers/zink/zink_bo.c index 14aaca63759..7fd2bd4fe43 100644 --- a/src/gallium/drivers/zink/zink_bo.c +++ b/src/gallium/drivers/zink/zink_bo.c @@ -256,10 +256,6 @@ bo_create_internal(struct zink_screen *screen, struct zink_bo *bo = NULL; bool init_pb_cache; - /* too big for vk alloc */ - if (size > UINT32_MAX) - return NULL; - alignment = get_optimal_alignment(screen, size, alignment); VkMemoryAllocateFlagsInfo ai; From e0b436252f4b74117008e6f0b491c09559a5b116 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 26 Oct 2023 12:07:00 +0300 Subject: [PATCH 006/356] anv/meson: add missing dependency on the interface header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lionel Landwerlin Fixes: db335d9b73 ("anv: factor out host/gpu internal shaders interfaces") Reviewed-by: Tapani Pälli Part-of: (cherry picked from commit ce5472137fb57348da59c32944e4b126a8ae795c) --- .pick_status.json | 2 +- src/intel/vulkan/shaders/meson.build | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 987d80bf1c1..6b23863492e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1434,7 +1434,7 @@ "description": "anv/meson: add missing dependency on the interface header", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "db335d9b7385e75442e6d5de70a1e9abf9165150", "notes": null diff --git a/src/intel/vulkan/shaders/meson.build b/src/intel/vulkan/shaders/meson.build index 7586babf5f2..12f99c510ac 100644 --- a/src/intel/vulkan/shaders/meson.build +++ b/src/intel/vulkan/shaders/meson.build @@ -48,7 +48,8 @@ foreach item : anv_internal_shaders anv_internal_spvs += custom_target( spv_filename, input : [glsl2spirv, f, files('common_generated_draws.glsl', - 'common_query_copy.glsl')], + 'common_query_copy.glsl', + 'interface.h')], output : spv_filename, command : [ prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@', From e3bef4dfa371dad053311687a13497df92451971 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 25 Oct 2023 10:22:46 +0200 Subject: [PATCH 007/356] ac/gpu_info: remove bogus assertion about number of COMPUTE/SDMA queues For example, my polaris10 GPU now returns 3 compute queues. Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit 4f8a2253875fdb677beb85c91ecb033cbf231fc7) --- .pick_status.json | 2 +- src/amd/common/ac_gpu_info.c | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 6b23863492e..89ac320bd81 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1394,7 +1394,7 @@ "description": "ac/gpu_info: remove bogus assertion about number of COMPUTE/SDMA queues", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c index 418a1989344..16634762cbc 100644 --- a/src/amd/common/ac_gpu_info.c +++ b/src/amd/common/ac_gpu_info.c @@ -705,9 +705,6 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info, return false; } - assert(util_is_power_of_two_or_zero(info->ip[AMD_IP_COMPUTE].num_queues)); - assert(util_is_power_of_two_or_zero(info->ip[AMD_IP_SDMA].num_queues)); - r = amdgpu_query_firmware_version(dev, AMDGPU_INFO_FW_GFX_ME, 0, 0, &info->me_fw_version, &info->me_fw_feature); if (r) { From c9040f482e5ce3f57c344b193f3279db05b7a8a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20No=C3=ABl?= Date: Thu, 26 Oct 2023 12:11:16 +0200 Subject: [PATCH 008/356] mesa/bufferobj: ensure that very large width+offset are always rejected MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the case width+offset is triggering an integer overflow, the checks in place are not working as the comparison will fail. Cc: mesa-stable Reviewed-by: Marek Olšák Signed-off-by: Corentin Noël Part-of: (cherry picked from commit e95c9b0515b85f65e00d47a152a881cc232a0d92) --- .pick_status.json | 2 +- src/mesa/main/bufferobj.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 89ac320bd81..17675369b10 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1384,7 +1384,7 @@ "description": "mesa/bufferobj: ensure that very large width+offset are always rejected", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 64ed8024554..0e6e4760658 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -3373,14 +3373,14 @@ copy_buffer_sub_data(struct gl_context *ctx, struct gl_buffer_object *src, return; } - if (readOffset + size > src->Size) { + if (size > src->Size || readOffset > src->Size - size) { _mesa_error(ctx, GL_INVALID_VALUE, "%s(readOffset %d + size %d > src_buffer_size %d)", func, (int) readOffset, (int) size, (int) src->Size); return; } - if (writeOffset + size > dst->Size) { + if (size > dst->Size || writeOffset > dst->Size - size) { _mesa_error(ctx, GL_INVALID_VALUE, "%s(writeOffset %d + size %d > dst_buffer_size %d)", func, (int) writeOffset, (int) size, (int) dst->Size); From c23ba4e83a2108e9cc7700b1fb710f9d598c7e58 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 24 Oct 2023 13:09:13 -0700 Subject: [PATCH 009/356] nir/split_vars: Don't split arrays of cooperative matrix types glsl_type_is_vector_or_scalar would more accruately be called "can be an r-value that isn't an array, structure, or matrix. This optimization pass really shouldn't do anything to cooperative matrices. These matrices will eventually be lowered to something else (dependent on the backend), and that thing may (or may not) be handled by this or another pass. Fixes: 2d0f4f2c17b ("compiler/types: Add support for Cooperative Matrix types") Reviewed-by: Caio Oliveira Part-of: (cherry picked from commit 18d8a96a00a1666fcf202ae89aee6344d295687e) --- .pick_status.json | 2 +- src/compiler/nir/nir_split_vars.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 17675369b10..f1dcd6f3f05 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1224,7 +1224,7 @@ "description": "nir/split_vars: Don't split arrays of cooperative matrix types", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "2d0f4f2c17b79830e9780a68bc473718d4abd4ad", "notes": null diff --git a/src/compiler/nir/nir_split_vars.c b/src/compiler/nir/nir_split_vars.c index 165750cd2e2..7cbd6d6a638 100644 --- a/src/compiler/nir/nir_split_vars.c +++ b/src/compiler/nir/nir_split_vars.c @@ -87,7 +87,15 @@ num_array_levels_in_array_of_vector_type(const struct glsl_type *type) if (glsl_type_is_array_or_matrix(type)) { num_levels++; type = glsl_get_array_element(type); - } else if (glsl_type_is_vector_or_scalar(type)) { + } else if (glsl_type_is_vector_or_scalar(type) && + !glsl_type_is_cmat(type)) { + /* glsl_type_is_vector_or_scalar would more accruately be called "can + * be an r-value that isn't an array, structure, or matrix. This + * optimization pass really shouldn't do anything to cooperative + * matrices. These matrices will eventually be lowered to something + * else (dependent on the backend), and that thing may (or may not) + * be handled by this or another pass. + */ return num_levels; } else { /* Not an array of vectors */ From 4a30434a0cb8e0e071feddf6fba4dede31d5695f Mon Sep 17 00:00:00 2001 From: Sil Vilerino Date: Thu, 26 Oct 2023 08:24:53 -0400 Subject: [PATCH 010/356] d3d12: d3d12_video_buffer_create_impl - Fix resource importing Only align resource dimensions on creation, not when importing existing D3D resource object. Otherwise importing the resource fails since the resource descriptor does not match the aligned dimensions passed in the template. Fixes: 62fded5e4f8 ("d3d12: Allocate d3d12_video_buffer with higher alignment for compatibility") Part-of: (cherry picked from commit dfb95160266e1be49edc08863c4c760c3f774f9a) --- .pick_status.json | 2 +- .../drivers/d3d12/d3d12_video_buffer.cpp | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index f1dcd6f3f05..5585c9ec812 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1214,7 +1214,7 @@ "description": "d3d12: d3d12_video_buffer_create_impl - Fix resource importing", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "62fded5e4f8fce10abcb310b03a135ed794dff28", "notes": null diff --git a/src/gallium/drivers/d3d12/d3d12_video_buffer.cpp b/src/gallium/drivers/d3d12/d3d12_video_buffer.cpp index a801ce11c0f..14dc1a6156d 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_buffer.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_buffer.cpp @@ -73,10 +73,20 @@ d3d12_video_buffer_create_impl(struct pipe_context *pipe, templ.target = PIPE_TEXTURE_2D; templ.bind = pD3D12VideoBuffer->base.bind; templ.format = pD3D12VideoBuffer->base.buffer_format; - // YUV 4:2:0 formats in D3D12 need to at least be multiple of 2 dimensions - // However, we allocate with a higher alignment to maximize HW compatibility - templ.width0 = align(pD3D12VideoBuffer->base.width, 2); - templ.height0 = align(pD3D12VideoBuffer->base.height, 16); + if (handle) + { + // YUV 4:2:0 formats in D3D12 always require multiple of 2 dimensions + // We must respect the input dimensions of the imported resource handle (e.g no extra aligning) + templ.width0 = align(pD3D12VideoBuffer->base.width, 2); + templ.height0 = align(pD3D12VideoBuffer->base.height, 2); + } + else + { + // When creating (e.g not importing) resources we allocate + // with a higher alignment to maximize HW compatibility + templ.width0 = align(pD3D12VideoBuffer->base.width, 2); + templ.height0 = align(pD3D12VideoBuffer->base.height, 16); + } templ.depth0 = 1; templ.array_size = 1; templ.flags = 0; From eb6e3a2a89ac4a209de8583e0ba9752fba960417 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 25 Oct 2023 08:37:32 -0400 Subject: [PATCH 011/356] hasvk: Support builiding on non-Intel Should help Eric build test releases on their MacBook :-) Signed-off-by: Alyssa Rosenzweig Cc: mesa-stable Reviewed-by: Eric Engestrom Part-of: (cherry picked from commit c8192c1c93ec4a988c14c038f7efcf2343c1f62a) --- .pick_status.json | 2 +- meson.build | 4 ---- src/intel/vulkan_hasvk/anv_batch_chain.c | 6 ++++++ src/intel/vulkan_hasvk/anv_device.c | 10 ++++++++++ src/intel/vulkan_hasvk/anv_private.h | 4 +++- src/intel/vulkan_hasvk/anv_wsi.c | 2 ++ 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5585c9ec812..c982fa1d2b8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1204,7 +1204,7 @@ "description": "hasvk: Support builiding on non-Intel", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/meson.build b/meson.build index 722469fbe37..b3f0f7325d0 100644 --- a/meson.build +++ b/meson.build @@ -1459,7 +1459,6 @@ elif with_intel_vk or with_intel_hasvk error('Intel "Anvil" Vulkan driver requires the dl_iterate_phdr function') endif -# only used in Iris and ANV if with_any_intel and ['x86', 'x86_64'].contains(host_machine.cpu_family()) pre_args += '-DSUPPORT_INTEL_INTEGRATED_GPUS' endif @@ -1468,9 +1467,6 @@ if get_option('intel-xe-kmd').enabled() pre_args += '-DINTEL_XE_KMD_SUPPORTED' endif -if with_intel_hasvk and host_machine.cpu_family().startswith('x86') == false - error('Intel "hasvk" Vulkan driver requires x86 or x86_64 CPU family') -endif if with_gallium_crocus and host_machine.cpu_family().startswith('x86') == false error('Intel "crocus" Gallium driver requires x86 or x86_64 CPU family') diff --git a/src/intel/vulkan_hasvk/anv_batch_chain.c b/src/intel/vulkan_hasvk/anv_batch_chain.c index 4dd013c485d..ec775611765 100644 --- a/src/intel/vulkan_hasvk/anv_batch_chain.c +++ b/src/intel/vulkan_hasvk/anv_batch_chain.c @@ -1899,6 +1899,7 @@ setup_execbuf_for_cmd_buffers(struct anv_execbuf *execbuf, anv_cmd_buffer_process_relocs(cmd_buffers[0], &cmd_buffers[0]->surface_relocs); } +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS if (device->physical->memory.need_flush) { __builtin_ia32_mfence(); for (uint32_t i = 0; i < num_cmd_buffers; i++) { @@ -1908,6 +1909,7 @@ setup_execbuf_for_cmd_buffers(struct anv_execbuf *execbuf, } __builtin_ia32_mfence(); } +#endif struct anv_batch *batch = &cmd_buffers[0]->batch; execbuf->execbuf = (struct drm_i915_gem_execbuffer2) { @@ -1986,8 +1988,10 @@ setup_utrace_execbuf(struct anv_execbuf *execbuf, struct anv_queue *queue, flush->batch_bo->exec_obj_index = last_idx; } +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS if (device->physical->memory.need_flush) intel_flush_range(flush->batch_bo->map, flush->batch_bo->size); +#endif execbuf->execbuf = (struct drm_i915_gem_execbuffer2) { .buffers_ptr = (uintptr_t) execbuf->objects, @@ -2421,8 +2425,10 @@ anv_queue_submit_simple_batch(struct anv_queue *queue, return result; memcpy(batch_bo->map, batch->start, batch_size); +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS if (device->physical->memory.need_flush) intel_flush_range(batch_bo->map, batch_size); +#endif struct anv_execbuf execbuf = { .alloc = &queue->device->vk.alloc, diff --git a/src/intel/vulkan_hasvk/anv_device.c b/src/intel/vulkan_hasvk/anv_device.c index 6798f607b29..caa57a7f106 100644 --- a/src/intel/vulkan_hasvk/anv_device.c +++ b/src/intel/vulkan_hasvk/anv_device.c @@ -2333,8 +2333,10 @@ anv_device_init_trivial_batch(struct anv_device *device) anv_batch_emit(&batch, GFX7_MI_BATCH_BUFFER_END, bbe); anv_batch_emit(&batch, GFX7_MI_NOOP, noop); +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS if (device->physical->memory.need_flush) intel_flush_range(batch.start, batch.next - batch.start); +#endif return VK_SUCCESS; } @@ -3480,8 +3482,10 @@ VkResult anv_FlushMappedMemoryRanges( if (!device->physical->memory.need_flush) return VK_SUCCESS; +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS /* Make sure the writes we're flushing have landed. */ __builtin_ia32_mfence(); +#endif for (uint32_t i = 0; i < memoryRangeCount; i++) { ANV_FROM_HANDLE(anv_device_memory, mem, pMemoryRanges[i].memory); @@ -3492,9 +3496,11 @@ VkResult anv_FlushMappedMemoryRanges( if (map_offset >= mem->map_size) continue; +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS intel_flush_range(mem->map + map_offset, MIN2(pMemoryRanges[i].size, mem->map_size - map_offset)); +#endif } return VK_SUCCESS; @@ -3519,13 +3525,17 @@ VkResult anv_InvalidateMappedMemoryRanges( if (map_offset >= mem->map_size) continue; +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS intel_invalidate_range(mem->map + map_offset, MIN2(pMemoryRanges[i].size, mem->map_size - map_offset)); +#endif } +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS /* Make sure no reads get moved up above the invalidate. */ __builtin_ia32_mfence(); +#endif return VK_SUCCESS; } diff --git a/src/intel/vulkan_hasvk/anv_private.h b/src/intel/vulkan_hasvk/anv_private.h index 663f3ccc9a0..aec64f5cecc 100644 --- a/src/intel/vulkan_hasvk/anv_private.h +++ b/src/intel/vulkan_hasvk/anv_private.h @@ -1416,7 +1416,7 @@ anv_batch_emit_reloc(struct anv_batch *batch, static inline void write_reloc(const struct anv_device *device, void *p, uint64_t v, bool flush) { - unsigned reloc_size = 0; + UNUSED unsigned reloc_size = 0; if (device->info->ver >= 8) { reloc_size = sizeof(uint64_t); *(uint64_t *)p = intel_canonical_address(v); @@ -1425,8 +1425,10 @@ write_reloc(const struct anv_device *device, void *p, uint64_t v, bool flush) *(uint32_t *)p = v; } +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS if (flush && device->physical->memory.need_flush) intel_flush_range(p, reloc_size); +#endif } static inline uint64_t diff --git a/src/intel/vulkan_hasvk/anv_wsi.c b/src/intel/vulkan_hasvk/anv_wsi.c index 0c807371316..93b7539fe23 100644 --- a/src/intel/vulkan_hasvk/anv_wsi.c +++ b/src/intel/vulkan_hasvk/anv_wsi.c @@ -97,10 +97,12 @@ VkResult anv_QueuePresentKHR( if (device->debug_frame_desc) { device->debug_frame_desc->frame_id++; +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS if (device->physical->memory.need_flush) { intel_flush_range(device->debug_frame_desc, sizeof(*device->debug_frame_desc)); } +#endif } result = vk_queue_wait_before_present(&queue->vk, pPresentInfo); From b42d824822350bf5b1e7b169bdf2a470c9c5b831 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 25 Oct 2023 08:38:10 -0400 Subject: [PATCH 012/356] crocus: Support building on non-Intel Ditto. Signed-off-by: Alyssa Rosenzweig Cc: mesa-stable Reviewed-by: Eric Engestrom Part-of: (cherry picked from commit 2552ac360d25e6e5f52c0877228540aeb012c858) --- .pick_status.json | 2 +- meson.build | 4 ---- src/gallium/drivers/crocus/crocus_bufmgr.c | 2 ++ 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index c982fa1d2b8..75c0d2551a8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1194,7 +1194,7 @@ "description": "crocus: Support building on non-Intel", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/meson.build b/meson.build index b3f0f7325d0..19ec5c022ac 100644 --- a/meson.build +++ b/meson.build @@ -1468,10 +1468,6 @@ if get_option('intel-xe-kmd').enabled() endif -if with_gallium_crocus and host_machine.cpu_family().startswith('x86') == false - error('Intel "crocus" Gallium driver requires x86 or x86_64 CPU family') -endif - if with_gallium_i915 and host_machine.cpu_family().startswith('x86') == false error('Intel "i915" Gallium driver requires x86 or x86_64 CPU family') endif diff --git a/src/gallium/drivers/crocus/crocus_bufmgr.c b/src/gallium/drivers/crocus/crocus_bufmgr.c index 62333703996..e8b4220be3f 100644 --- a/src/gallium/drivers/crocus/crocus_bufmgr.c +++ b/src/gallium/drivers/crocus/crocus_bufmgr.c @@ -895,7 +895,9 @@ crocus_bo_map_cpu(struct util_debug_callback *dbg, * LLC entirely requiring us to keep dirty pixels for the scanout * out of any cache.) */ +#ifdef SUPPORT_INTEL_INTEGRATED_GPUS intel_invalidate_range(bo->map_cpu, bo->size); +#endif } return bo->map_cpu; From 048a358bf54f2cd7a19252dea9cef0d5ba3105bd Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 25 Oct 2023 08:41:55 -0400 Subject: [PATCH 013/356] meson: Add vulkan-drivers=all option To build-test everything, helpful to check common code changes before pounding CI. Signed-off-by: Alyssa Rosenzweig Cc: mesa-stable Reviewed-by: Eric Engestrom Part-of: (cherry picked from commit b70e948886976d2fb17b3191c9116c1babe25810) --- .pick_status.json | 2 +- meson.build | 6 ++++++ meson_options.txt | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 75c0d2551a8..cebeecfa62b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1184,7 +1184,7 @@ "description": "meson: Add vulkan-drivers=all option", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/meson.build b/meson.build index 19ec5c022ac..d1dc4e2ea01 100644 --- a/meson.build +++ b/meson.build @@ -213,6 +213,12 @@ if _vulkan_drivers.contains('auto') error('Unknown OS @0@. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.'.format( host_machine.system())) endif +elif _vulkan_drivers.contains('all') + # Build every vulkan driver regardless of architecture. + _vulkan_drivers = ['amd', 'intel', 'intel_hasvk', 'swrast', + 'freedreno', 'panfrost', 'virtio', 'broadcom', + 'imagination-experimental', 'microsoft-experimental', + 'nouveau-experimental'] endif with_intel_vk = _vulkan_drivers.contains('intel') diff --git a/meson_options.txt b/meson_options.txt index 8130c3e9321..a9f9ab1658f 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -211,7 +211,7 @@ option( value : ['auto'], choices : ['auto', 'amd', 'broadcom', 'freedreno', 'intel', 'intel_hasvk', 'panfrost', 'swrast', 'virtio', 'imagination-experimental', - 'microsoft-experimental', 'nouveau-experimental'], + 'microsoft-experimental', 'nouveau-experimental', 'all'], description : 'List of vulkan drivers to build. If this is set to auto ' + 'all drivers applicable to the target OS/architecture ' + 'will be built' From a5bcd8b84ff5b25ec9825762a3355a8865dd519b Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 25 Oct 2023 08:46:30 -0400 Subject: [PATCH 014/356] meson: Add gallium-drivers=all option Again, useful to lint common code changes and for our macbook-wielding rel manager <3 Omits i915g due to dependency hell, everything else builds on fedora asahi. Signed-off-by: Alyssa Rosenzweig Cc: mesa-stable Reviewed-by: Eric Engestrom Part-of: (cherry picked from commit ef4aa24a15a7a84b6deda058f710e5f4c52e3984) --- .pick_status.json | 2 +- meson.build | 9 +++++++++ meson_options.txt | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index cebeecfa62b..fb68dca8504 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1174,7 +1174,7 @@ "description": "meson: Add gallium-drivers=all option", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/meson.build b/meson.build index d1dc4e2ea01..fbb0b29322d 100644 --- a/meson.build +++ b/meson.build @@ -155,7 +155,16 @@ if gallium_drivers.contains('auto') error('Unknown OS @0@. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.'.format( host_machine.system())) endif +elif gallium_drivers.contains('all') + # Build-test everything except for i915, which depends on libdrm-intel which + # is not available on non-Intel distros. + gallium_drivers = [ + 'r300', 'r600', 'radeonsi', 'crocus', 'v3d', 'vc4', 'freedreno', 'etnaviv', + 'nouveau', 'svga', 'tegra', 'virgl', 'lima', 'panfrost', 'swrast', 'iris', + 'zink', 'd3d12', 'asahi' + ] endif + with_gallium_radeonsi = gallium_drivers.contains('radeonsi') with_gallium_r300 = gallium_drivers.contains('r300') with_gallium_r600 = gallium_drivers.contains('r600') diff --git a/meson_options.txt b/meson_options.txt index a9f9ab1658f..e885ba61a8a 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -73,7 +73,7 @@ option( choices : [ 'auto', 'kmsro', 'radeonsi', 'r300', 'r600', 'nouveau', 'freedreno', 'swrast', 'v3d', 'vc4', 'etnaviv', 'tegra', 'i915', 'svga', 'virgl', - 'panfrost', 'iris', 'lima', 'zink', 'd3d12', 'asahi', 'crocus' + 'panfrost', 'iris', 'lima', 'zink', 'd3d12', 'asahi', 'crocus', 'all', ], description : 'List of gallium drivers to build. If this is set to auto ' + 'all drivers applicable to the target OS/architecture ' + From 0144e4d0b3f069d883e4771847f1bb990a2ea675 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 13:15:57 -0400 Subject: [PATCH 015/356] zink: add copy box locking this can technically be accessed by multiple threads, so ensure access is serialized backport-to: 23.3 Part-of: (cherry picked from commit 782481c429100ebc8df68ca54e4f34722eced1c8) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_resource.c | 65 ++++++++++++++---------- src/gallium/drivers/zink/zink_types.h | 1 + 3 files changed, 40 insertions(+), 28 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index fb68dca8504..d2d18bc7421 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1154,7 +1154,7 @@ "description": "zink: add copy box locking", "nominated": true, "nomination_type": 4, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index b1442eabfa7..02ed8b86a5d 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -776,6 +776,7 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t return NULL; simple_mtx_init(&obj->view_lock, mtx_plain); util_dynarray_init(&obj->views, NULL); + u_rwlock_init(&obj->copy_lock); obj->unordered_read = true; obj->unordered_write = true; obj->last_dt_idx = obj->dt_idx = UINT32_MAX; //TODO: unionize @@ -2560,6 +2561,7 @@ zink_resource_copy_box_intersects(struct zink_resource *res, unsigned level, con /* untracked huge miplevel */ if (level >= ARRAY_SIZE(res->obj->copies)) return true; + u_rwlock_rdlock(&res->obj->copy_lock); struct pipe_box *b = res->obj->copies[level].data; unsigned num_boxes = util_dynarray_num_elements(&res->obj->copies[level], struct pipe_box); bool (*intersect)(const struct pipe_box *, const struct pipe_box *); @@ -2580,18 +2582,23 @@ zink_resource_copy_box_intersects(struct zink_resource *res, unsigned level, con break; } /* if any of the tracked boxes intersect with this one, a barrier is needed */ + bool ret = false; for (unsigned i = 0; i < num_boxes; i++) { - if (intersect(box, b + i)) - return true; + if (intersect(box, b + i)) { + ret = true; + break; + } } + u_rwlock_rdunlock(&res->obj->copy_lock); /* no intersection = no barrier */ - return false; + return ret; } /* track a new region for TRANSFER_DST barrier emission */ void zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, unsigned level, const struct pipe_box *box) { + u_rwlock_wrlock(&res->obj->copy_lock); if (res->obj->copies_valid) { struct pipe_box *b = res->obj->copies[level].data; unsigned num_boxes = util_dynarray_num_elements(&res->obj->copies[level], struct pipe_box); @@ -2601,23 +2608,23 @@ zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, case PIPE_TEXTURE_1D: /* no-op included region */ if (b[i].x <= box->x && b[i].x + b[i].width >= box->x + box->width) - return; + goto out; /* try to merge adjacent regions */ if (b[i].x == box->x + box->width) { b[i].x -= box->width; b[i].width += box->width; - return; + goto out; } if (b[i].x + b[i].width == box->x) { b[i].width += box->width; - return; + goto out; } /* try to merge into region */ if (box->x <= b[i].x && box->x + box->width >= b[i].x + b[i].width) { *b = *box; - return; + goto out; } break; @@ -2626,28 +2633,28 @@ zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, /* no-op included region */ if (b[i].x <= box->x && b[i].x + b[i].width >= box->x + box->width && b[i].y <= box->y && b[i].y + b[i].height >= box->y + box->height) - return; + goto out; /* try to merge adjacent regions */ if (b[i].y == box->y && b[i].height == box->height) { if (b[i].x == box->x + box->width) { b[i].x -= box->width; b[i].width += box->width; - return; + goto out; } if (b[i].x + b[i].width == box->x) { b[i].width += box->width; - return; + goto out; } } else if (b[i].x == box->x && b[i].width == box->width) { if (b[i].y == box->y + box->height) { b[i].y -= box->height; b[i].height += box->height; - return; + goto out; } if (b[i].y + b[i].height == box->y) { b[i].height += box->height; - return; + goto out; } } @@ -2655,7 +2662,7 @@ zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, if (box->x <= b[i].x && box->x + box->width >= b[i].x + b[i].width && box->y <= b[i].y && box->y + box->height >= b[i].y + b[i].height) { *b = *box; - return; + goto out; } break; @@ -2664,7 +2671,7 @@ zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, if (b[i].x <= box->x && b[i].x + b[i].width >= box->x + box->width && b[i].y <= box->y && b[i].y + b[i].height >= box->y + box->height && b[i].z <= box->z && b[i].z + b[i].depth >= box->z + box->depth) - return; + goto out; /* try to merge adjacent regions */ if (b[i].z == box->z && b[i].depth == box->depth) { @@ -2672,21 +2679,21 @@ zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, if (b[i].x == box->x + box->width) { b[i].x -= box->width; b[i].width += box->width; - return; + goto out; } if (b[i].x + b[i].width == box->x) { b[i].width += box->width; - return; + goto out; } } else if (b[i].x == box->x && b[i].width == box->width) { if (b[i].y == box->y + box->height) { b[i].y -= box->height; b[i].height += box->height; - return; + goto out; } if (b[i].y + b[i].height == box->y) { b[i].height += box->height; - return; + goto out; } } } else if (b[i].x == box->x && b[i].width == box->width) { @@ -2694,21 +2701,21 @@ zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, if (b[i].z == box->z + box->depth) { b[i].z -= box->depth; b[i].depth += box->depth; - return; + goto out; } if (b[i].z + b[i].depth == box->z) { b[i].depth += box->depth; - return; + goto out; } } else if (b[i].z == box->z && b[i].depth == box->depth) { if (b[i].y == box->y + box->height) { b[i].y -= box->height; b[i].height += box->height; - return; + goto out; } if (b[i].y + b[i].height == box->y) { b[i].height += box->height; - return; + goto out; } } } else if (b[i].y == box->y && b[i].height == box->height) { @@ -2716,21 +2723,21 @@ zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, if (b[i].x == box->x + box->width) { b[i].x -= box->width; b[i].width += box->width; - return; + goto out; } if (b[i].x + b[i].width == box->x) { b[i].width += box->width; - return; + goto out; } } else if (b[i].x == box->x && b[i].width == box->width) { if (b[i].z == box->z + box->depth) { b[i].z -= box->depth; b[i].depth += box->depth; - return; + goto out; } if (b[i].z + b[i].depth == box->z) { b[i].depth += box->depth; - return; + goto out; } } } @@ -2739,7 +2746,7 @@ zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, if (box->x <= b[i].x && box->x + box->width >= b[i].x + b[i].width && box->y <= b[i].y && box->y + box->height >= b[i].y + b[i].height && box->z <= b[i].z && box->z + box->depth >= b[i].z + b[i].depth) - return; + goto out; break; } @@ -2752,6 +2759,8 @@ zink_resource_copy_box_add(struct zink_context *ctx, struct zink_resource *res, res->copies_warned = true; } res->obj->copies_valid = true; +out: + u_rwlock_wrunlock(&res->obj->copy_lock); } void @@ -2759,6 +2768,7 @@ zink_resource_copies_reset(struct zink_resource *res) { if (!res->obj->copies_valid) return; + u_rwlock_wrlock(&res->obj->copy_lock); unsigned max_level = res->base.b.target == PIPE_BUFFER ? 1 : (res->base.b.last_level + 1); if (res->base.b.target == PIPE_BUFFER) { /* flush transfer regions back to valid range on reset */ @@ -2771,6 +2781,7 @@ zink_resource_copies_reset(struct zink_resource *res) util_dynarray_clear(&res->obj->copies[i]); res->obj->copies_valid = false; res->obj->copies_need_reset = false; + u_rwlock_wrunlock(&res->obj->copy_lock); } static void diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index 05d3633869e..29d921f3f4f 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -1231,6 +1231,7 @@ struct zink_resource_object { bool copies_valid; bool copies_need_reset; //for use with batch state resets + struct u_rwlock copy_lock; struct util_dynarray copies[16]; //regions being copied to; for barrier omission VkBuffer storage_buffer; From 8a7498e13f081c054ebe7f14994ccca89677557e Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Thu, 26 Oct 2023 08:01:15 -0500 Subject: [PATCH 016/356] nir/lower_bit_size: Fix subgroup lowering for floats MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using u2u is always correct for integers, including signed integers, because we're doing a down-cast. It's wrong for floats, though. Fixes: f95665cfebbd ("nir/lower_bit_size: Add support for lowering subgroup ops") Reviewed-by: Daniel Schürmann Reviewed-by: Timur Kristóf Part-of: (cherry picked from commit 5979e74177eb3013ca7e78867295e9a015e6c8ed) --- .pick_status.json | 2 +- src/compiler/nir/nir_lower_bit_size.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index d2d18bc7421..8247aa12bca 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -984,7 +984,7 @@ "description": "nir/lower_bit_size: Fix subgroup lowering for floats", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "f95665cfebbd943ca3795c026e3dabf4af3f262c", "notes": null diff --git a/src/compiler/nir/nir_lower_bit_size.c b/src/compiler/nir/nir_lower_bit_size.c index 37889a39faf..35097b85d83 100644 --- a/src/compiler/nir/nir_lower_bit_size.c +++ b/src/compiler/nir/nir_lower_bit_size.c @@ -203,7 +203,7 @@ lower_intrinsic_instr(nir_builder *b, nir_intrinsic_instr *intrin, if (intrin->intrinsic != nir_intrinsic_vote_feq && intrin->intrinsic != nir_intrinsic_vote_ieq) - res = nir_u2uN(b, res, old_bit_size); + res = nir_convert_to_bit_size(b, res, type, old_bit_size); nir_def_rewrite_uses(&intrin->def, res); break; From da8fcbaef533c52323ba2318e6088ab0b72cd7ab Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 11:00:41 -0400 Subject: [PATCH 017/356] zink: emit SpvCapabilitySampleRateShading with SampleId required by spec cc: mesa-stable Part-of: (cherry picked from commit 7035b5a8e858ca4c4773baefdd62bf19e7e3ffe6) --- .pick_status.json | 2 +- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 8247aa12bca..34ccc2a8e14 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -884,7 +884,7 @@ "description": "zink: emit SpvCapabilitySampleRateShading with SampleId", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index b9d0398d1b7..5c7a6a8baa0 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -3295,6 +3295,7 @@ emit_intrinsic(struct ntv_context *ctx, nir_intrinsic_instr *intr) break; case nir_intrinsic_load_sample_id: + spirv_builder_emit_cap(&ctx->builder, SpvCapabilitySampleRateShading); emit_load_uint_input(ctx, intr, &ctx->sample_id_var, "gl_SampleId", SpvBuiltInSampleId); break; From dea50199a152a144c4da46b63dc3d3d18a5b9cfd Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 11:00:57 -0400 Subject: [PATCH 018/356] zink: always set VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT for usermem required by spec backport-to: 23.3 Part-of: (cherry picked from commit 009d4a5fda58d5bb4c642fe711e19cb91c4bc1f4) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_resource.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 34ccc2a8e14..f92b55bea20 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -874,7 +874,7 @@ "description": "zink: always set VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT for usermem", "nominated": true, "nomination_type": 4, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 02ed8b86a5d..40a1b15ec04 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -847,6 +847,14 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t return obj; } else if (templ->target == PIPE_BUFFER) { VkBufferCreateInfo bci = create_bci(screen, templ, templ->bind); + VkExternalMemoryBufferCreateInfo embci; + + if (user_mem) { + embci.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO; + embci.pNext = bci.pNext; + embci.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT; + bci.pNext = &embci; + } if (VKSCR(CreateBuffer)(screen->dev, &bci, NULL, &obj->buffer) != VK_SUCCESS) { mesa_loge("ZINK: vkCreateBuffer failed"); @@ -983,6 +991,11 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t } else if (ici.tiling == VK_IMAGE_TILING_OPTIMAL) { shared = false; } + } else if (user_mem) { + emici.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO; + emici.pNext = ici.pNext; + emici.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT; + ici.pNext = &emici; } if (linear) From c7822e2b6fd9e6280a02dcbb678728521c23d31f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 11:32:11 -0400 Subject: [PATCH 019/356] zink: clamp resolve extents to src/dst geometry exceeding src/dst extents is illegal cc: mesa-stable Part-of: (cherry picked from commit e8b2680045b68334f3c82fada27a4edfe83bad22) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_blit.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index f92b55bea20..9c0d3d7e433 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -864,7 +864,7 @@ "description": "zink: clamp resolve extents to src/dst geometry", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/zink/zink_blit.c b/src/gallium/drivers/zink/zink_blit.c index 1fe9a27459f..7b711905814 100644 --- a/src/gallium/drivers/zink/zink_blit.c +++ b/src/gallium/drivers/zink/zink_blit.c @@ -122,6 +122,18 @@ blit_resolve(struct zink_context *ctx, const struct pipe_blit_info *info, bool * region.extent.width = info->dst.box.width; region.extent.height = info->dst.box.height; region.extent.depth = info->dst.box.depth; + if (region.srcOffset.x + region.extent.width >= u_minify(src->base.b.width0, region.srcSubresource.mipLevel)) + region.extent.width = u_minify(src->base.b.width0, region.srcSubresource.mipLevel) - region.srcOffset.x; + if (region.dstOffset.x + region.extent.width >= u_minify(dst->base.b.width0, region.dstSubresource.mipLevel)) + region.extent.width = u_minify(dst->base.b.width0, region.dstSubresource.mipLevel) - region.dstOffset.x; + if (region.srcOffset.y + region.extent.height >= u_minify(src->base.b.height0, region.srcSubresource.mipLevel)) + region.extent.height = u_minify(src->base.b.height0, region.srcSubresource.mipLevel) - region.srcOffset.y; + if (region.dstOffset.y + region.extent.height >= u_minify(dst->base.b.height0, region.dstSubresource.mipLevel)) + region.extent.height = u_minify(dst->base.b.height0, region.dstSubresource.mipLevel) - region.dstOffset.y; + if (region.srcOffset.z + region.extent.depth >= u_minify(src->base.b.depth0, region.srcSubresource.mipLevel)) + region.extent.depth = u_minify(src->base.b.depth0, region.srcSubresource.mipLevel) - region.srcOffset.z; + if (region.dstOffset.z + region.extent.depth >= u_minify(dst->base.b.depth0, region.dstSubresource.mipLevel)) + region.extent.depth = u_minify(dst->base.b.depth0, region.dstSubresource.mipLevel) - region.dstOffset.z; VKCTX(CmdResolveImage)(cmdbuf, use_src->obj->image, src->layout, dst->obj->image, dst->layout, 1, ®ion); From 1e7a25df6bd32521d54618c8ada15bebd33c310d Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 11:33:47 -0400 Subject: [PATCH 020/356] zink: only emit xfb execution mode for last vertex stage this is otherwise illegal cc: mesa-stable Part-of: (cherry picked from commit 694ebe8c7228aa5a2c427cd33b0d6fdf3360174d) --- .pick_status.json | 2 +- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 2 +- src/gallium/drivers/zink/zink_compiler.c | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 9c0d3d7e433..ee8eba4b9b2 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -854,7 +854,7 @@ "description": "zink: only emit xfb execution mode for last vertex stage", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 5c7a6a8baa0..ce7efafe128 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -4664,7 +4664,7 @@ nir_to_spirv(struct nir_shader *s, const struct zink_shader_info *sinfo, uint32_ spirv_builder_emit_cap(&ctx.builder, SpvCapabilitySubgroupBallotKHR); spirv_builder_emit_extension(&ctx.builder, "SPV_KHR_shader_ballot"); } - if (s->info.has_transform_feedback_varyings) { + if (s->info.has_transform_feedback_varyings && s->info.stage != MESA_SHADER_FRAGMENT) { spirv_builder_emit_cap(&ctx.builder, SpvCapabilityTransformFeedback); spirv_builder_emit_exec_mode(&ctx.builder, entry_point, SpvExecutionModeXfb); diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 014b6cccdd7..7ed959deae9 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -2776,6 +2776,8 @@ zink_compiler_assign_io(struct zink_screen *screen, nir_shader *producer, nir_sh optimize_nir(producer, NULL, true); } } + if (consumer->info.stage != MESA_SHADER_FRAGMENT) + producer->info.has_transform_feedback_varyings = false; if (producer->info.stage == MESA_SHADER_TESS_CTRL) { /* never assign from tcs -> tes, always invert */ nir_foreach_variable_with_modes(var, consumer, nir_var_shader_in) From 08ad7e3e0f829128fa3bef9b729ae6b072c3c247 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 11:54:40 -0400 Subject: [PATCH 021/356] aux/u_transfer_helper: set rendertarget bind for msaa staging resource this matches other resources created with staging blit-like mechanics cc: mesa-stable Part-of: (cherry picked from commit 87e3720b66aeef08351dc578863360c587514d53) --- .pick_status.json | 2 +- src/gallium/auxiliary/util/u_transfer_helper.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index ee8eba4b9b2..bf5040780ff 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -844,7 +844,7 @@ "description": "aux/u_transfer_helper: set rendertarget bind for msaa staging resource", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/auxiliary/util/u_transfer_helper.c b/src/gallium/auxiliary/util/u_transfer_helper.c index ec38b8d6706..9d5b7c4b1df 100644 --- a/src/gallium/auxiliary/util/u_transfer_helper.c +++ b/src/gallium/auxiliary/util/u_transfer_helper.c @@ -208,6 +208,10 @@ transfer_map_msaa(struct pipe_context *pctx, .depth0 = 1, .array_size = 1, }; + if (util_format_is_depth_or_stencil(tmpl.format)) + tmpl.bind |= PIPE_BIND_DEPTH_STENCIL; + else + tmpl.bind |= PIPE_BIND_RENDER_TARGET; trans->ss = pscreen->resource_create(pscreen, &tmpl); if (!trans->ss) { free(trans); From 199f9783a043c590f47ac3a0b5ca102032d135c3 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 12:05:16 -0400 Subject: [PATCH 022/356] zink: unset explicit_xfb_buffer for non-xfb shaders this catches duplicated xfb when generated geometry shaders are used cc: mesa-stable Part-of: (cherry picked from commit df74ea771782966009def93339d0f4a1d94d12a1) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_compiler.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index bf5040780ff..77d93d2b1f4 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -834,7 +834,7 @@ "description": "zink: unset explicit_xfb_buffer for non-xfb shaders", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 7ed959deae9..95fe41ff4f9 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -2776,8 +2776,11 @@ zink_compiler_assign_io(struct zink_screen *screen, nir_shader *producer, nir_sh optimize_nir(producer, NULL, true); } } - if (consumer->info.stage != MESA_SHADER_FRAGMENT) + if (consumer->info.stage != MESA_SHADER_FRAGMENT) { producer->info.has_transform_feedback_varyings = false; + nir_foreach_shader_out_variable(var, producer) + var->data.explicit_xfb_buffer = false; + } if (producer->info.stage == MESA_SHADER_TESS_CTRL) { /* never assign from tcs -> tes, always invert */ nir_foreach_variable_with_modes(var, consumer, nir_var_shader_in) From 7b731ab6e81e4a6ae6ae61a02f99985e0bc2ed75 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 12:36:14 -0400 Subject: [PATCH 023/356] mesa/st/texture: match width+height for texture downloads of cube textures some drivers require this cc: mesa-stable Part-of: (cherry picked from commit ee1039877c14b9671e08342585bd0e2f4a6decb6) --- .pick_status.json | 2 +- src/mesa/state_tracker/st_cb_texture.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 77d93d2b1f4..99605bdd595 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -824,7 +824,7 @@ "description": "mesa/st/texture: match width+height for texture downloads of cube textures", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index f0d0b576152..3b75d012301 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -169,6 +169,11 @@ create_dst_texture(struct gl_context *ctx, struct pipe_screen *screen = st->screen; struct pipe_resource dst_templ; + if (pipe_target == PIPE_TEXTURE_CUBE || pipe_target == PIPE_TEXTURE_CUBE_ARRAY) { + width = MAX2(width, height); + height = MAX2(width, height); + } + /* create the destination texture of size (width X height X depth) */ memset(&dst_templ, 0, sizeof(dst_templ)); dst_templ.target = pipe_target; From 336e6df3ef959fe9a968c48b56e8bda7e96573c2 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Sun, 22 Oct 2023 16:53:54 +0200 Subject: [PATCH 024/356] rusticl/device: restrict image_buffer_size It's pointless to advertise more than CL_DEVICE_MAX_MEM_ALLOC_SIZE and also the CTS tests against this. Cc: mesa-stable Signed-off-by: Karol Herbst Part-of: (cherry picked from commit 9b6ac56d72d6d74cfe85ed9caff663f841dd6def) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/core/device.rs | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 99605bdd595..39c4d0675f8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -764,7 +764,7 @@ "description": "rusticl/device: restrict image_buffer_size", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/frontends/rusticl/core/device.rs b/src/gallium/frontends/rusticl/core/device.rs index 2565598edac..8058f5cbb79 100644 --- a/src/gallium/frontends/rusticl/core/device.rs +++ b/src/gallium/frontends/rusticl/core/device.rs @@ -750,8 +750,12 @@ impl Device { } pub fn image_buffer_size(&self) -> usize { - self.screen - .param(pipe_cap::PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT) as usize + min( + // the CTS requires it to not exceed `CL_MAX_MEM_ALLOC_SIZE` + self.max_mem_alloc(), + self.screen + .param(pipe_cap::PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT) as cl_ulong, + ) as usize } pub fn image_read_count(&self) -> cl_uint { From bcfdd7476fad4cd0d3c7adffca7bb2646a2ae908 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Tue, 24 Oct 2023 21:28:02 +0200 Subject: [PATCH 025/356] rusticl/device: restrict param_max_size further It's kinda pointless to have it too big, it also causes weird shaders to be generated and causes stack overflows in `nir_opt_gcm`. Nothing needs big values here anyway. Cc: mesa-stable Signed-off-by: Karol Herbst Part-of: (cherry picked from commit 694001eef70e220c709523cd71aad4b7b7c6c8db) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/core/device.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 39c4d0675f8..28636b62eab 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -754,7 +754,7 @@ "description": "rusticl/device: restrict param_max_size further", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/frontends/rusticl/core/device.rs b/src/gallium/frontends/rusticl/core/device.rs index 8058f5cbb79..0a5e07ffb5a 100644 --- a/src/gallium/frontends/rusticl/core/device.rs +++ b/src/gallium/frontends/rusticl/core/device.rs @@ -856,7 +856,7 @@ impl Device { pub fn param_max_size(&self) -> usize { min( self.shader_param(pipe_shader_cap::PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE) as u32, - 32 * 1024, + 4 * 1024, ) as usize } From 65bd87bd35789e4062766097745f894e6b7c1984 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Mon, 23 Oct 2023 19:17:16 +0200 Subject: [PATCH 026/356] rusticl/mem: properly set pipe_image_view::access Cc: mesa-stable Signed-off-by: Karol Herbst Part-of: (cherry picked from commit abd8ef84ff4034a8f159f4743dc025dbfde8b837) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/core/kernel.rs | 14 ++++++++++++-- src/gallium/frontends/rusticl/core/memory.rs | 13 +++++++++++++ .../frontends/rusticl/mesa/pipe/resource.rs | 3 ++- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 28636b62eab..06ede166fbc 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -744,7 +744,7 @@ "description": "rusticl/mem: properly set pipe_image_view::access", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/frontends/rusticl/core/kernel.rs b/src/gallium/frontends/rusticl/core/kernel.rs index 09ab0bd4b29..21a604c7192 100644 --- a/src/gallium/frontends/rusticl/core/kernel.rs +++ b/src/gallium/frontends/rusticl/core/kernel.rs @@ -919,10 +919,20 @@ impl Kernel { } else { let format = mem.pipe_format; let (formats, orders) = if arg.kind == KernelArgType::Image { - iviews.push(res.pipe_image_view(format, false, app_img_info.as_ref())); + iviews.push(res.pipe_image_view( + format, + false, + mem.pipe_image_host_access(), + app_img_info.as_ref(), + )); (&mut img_formats, &mut img_orders) } else if arg.kind == KernelArgType::RWImage { - iviews.push(res.pipe_image_view(format, true, app_img_info.as_ref())); + iviews.push(res.pipe_image_view( + format, + true, + mem.pipe_image_host_access(), + app_img_info.as_ref(), + )); (&mut img_formats, &mut img_orders) } else { sviews.push((res.clone(), format, app_img_info)); diff --git a/src/gallium/frontends/rusticl/core/memory.rs b/src/gallium/frontends/rusticl/core/memory.rs index c7f3c3b888f..55cf3747f4a 100644 --- a/src/gallium/frontends/rusticl/core/memory.rs +++ b/src/gallium/frontends/rusticl/core/memory.rs @@ -1231,6 +1231,19 @@ impl Mem { Ok(()) } + + pub fn pipe_image_host_access(&self) -> u16 { + // those flags are all mutually exclusive + (if bit_check(self.flags, CL_MEM_HOST_READ_ONLY) { + PIPE_IMAGE_ACCESS_READ + } else if bit_check(self.flags, CL_MEM_HOST_WRITE_ONLY) { + PIPE_IMAGE_ACCESS_WRITE + } else if bit_check(self.flags, CL_MEM_HOST_NO_ACCESS) { + 0 + } else { + PIPE_IMAGE_ACCESS_READ_WRITE + }) as u16 + } } impl Drop for Mem { diff --git a/src/gallium/frontends/rusticl/mesa/pipe/resource.rs b/src/gallium/frontends/rusticl/mesa/pipe/resource.rs index 521b8c5f908..3b8075610ca 100644 --- a/src/gallium/frontends/rusticl/mesa/pipe/resource.rs +++ b/src/gallium/frontends/rusticl/mesa/pipe/resource.rs @@ -82,6 +82,7 @@ impl PipeResource { &self, format: pipe_format, read_write: bool, + host_access: u16, app_img_info: Option<&AppImgInfo>, ) -> pipe_image_view { let u = if let Some(app_img_info) = app_img_info { @@ -130,7 +131,7 @@ impl PipeResource { pipe_image_view { resource: self.pipe(), format: format, - access: access, + access: access | host_access, shader_access: shader_access, u: u, } From f9337e1c78af4967043ace2f1fdd8f1db9548250 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Sun, 22 Oct 2023 16:49:42 +0200 Subject: [PATCH 027/356] zink: lower fisnormal as it requires the Kernel Cap I didn't check if it's a valid vulkan SPIR-V opcode and turns out it isn't Fixes: 82eed326f47 ("zink: support more nir opcodes") Signed-off-by: Karol Herbst Acked-by: Mike Blumenkrantz Part-of: (cherry picked from commit 01b6ccccc6af3111da4466d083335ed5f0646a5e) --- .pick_status.json | 2 +- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 1 - src/gallium/drivers/zink/zink_compiler.c | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 06ede166fbc..a7a21845bdc 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -704,7 +704,7 @@ "description": "zink: lower fisnormal as it requires the Kernel Cap", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "82eed326f47848fddef39b933a2ce9ab5492a4d8", "notes": null diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index ce7efafe128..dc964b85024 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -1853,7 +1853,6 @@ emit_alu(struct ntv_context *ctx, nir_alu_instr *alu) UNOP(nir_op_f2f64, SpvOpFConvert) UNOP(nir_op_bitfield_reverse, SpvOpBitReverse) UNOP(nir_op_bit_count, SpvOpBitCount) - UNOP(nir_op_fisnormal, SpvOpIsNormal) #undef UNOP case nir_op_f2f16_rtz: diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 95fe41ff4f9..4400d686a0c 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -1212,6 +1212,7 @@ zink_screen_init_compiler(struct zink_screen *screen) .lower_fsat = true, .lower_hadd = true, .lower_iadd_sat = true, + .lower_fisnormal = true, .lower_extract_byte = true, .lower_extract_word = true, .lower_insert_byte = true, From 77eb71a612b47ad55d8dde2b0dbc0f935ad5bea6 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Sun, 22 Oct 2023 21:50:35 +0200 Subject: [PATCH 028/356] radv: fix buffers in vkGetDescriptorEXT with size not aligned to 4 The range alignment didn't happen through GetDescriptorEXT as it called write_buffer_descriptor directly. So simply move the align from write_buffer_descriptor_impl into write_buffer_descriptor. Fixes: 46e0c77582d ("radv: implement VK_EXT_descriptor_buffer") Signed-off-by: Karol Herbst Reviewed-by: Georg Lehmann Reviewed-by: Samuel Pitoiset Part-of: (cherry picked from commit 1c619b668d69c66521d1da8edd97e518d6d61857) --- .pick_status.json | 2 +- src/amd/vulkan/radv_descriptor_set.c | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index a7a21845bdc..e129ea3e151 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -694,7 +694,7 @@ "description": "radv: fix buffers in vkGetDescriptorEXT with size not aligned to 4", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "46e0c77582dd2cfbe77e78cf33399eb761ccb7b6", "notes": null diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c index 979ea00ab69..a0aa0673fe5 100644 --- a/src/amd/vulkan/radv_descriptor_set.c +++ b/src/amd/vulkan/radv_descriptor_set.c @@ -1095,7 +1095,11 @@ write_buffer_descriptor(struct radv_device *device, unsigned *dst, uint64_t va, dst[0] = va; dst[1] = S_008F04_BASE_ADDRESS_HI(va >> 32); - dst[2] = range; + /* robustBufferAccess is relaxed enough to allow this (in combination with the alignment/size + * we return from vkGetBufferMemoryRequirements) and this allows the shader compiler to create + * more efficient 8/16-bit buffer accesses. + */ + dst[2] = align(range, 4); dst[3] = rsrc_word3; } @@ -1111,12 +1115,6 @@ write_buffer_descriptor_impl(struct radv_device *device, struct radv_cmd_buffer range = vk_buffer_range(&buffer->vk, buffer_info->offset, buffer_info->range); assert(buffer->vk.size > 0 && range > 0); - - /* robustBufferAccess is relaxed enough to allow this (in combination with the alignment/size - * we return from vkGetBufferMemoryRequirements) and this allows the shader compiler to create - * more efficient 8/16-bit buffer accesses. - */ - range = align(range, 4); } write_buffer_descriptor(device, dst, va, range); From 423202cae44eb2c12ad3a28bd4e9b9eb91447ccf Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Thu, 26 Oct 2023 18:50:37 +0200 Subject: [PATCH 029/356] rusticl/queue: Only take a weak ref to the last Event This resolves a memory leak when the application drops its last reference to the queue, but never waits explicitly. The problem was, that the queue was refed by QueueState::last and that ref only gets dropped on a blocking wait. This is problematic as non user Event objects also hold a ref on the Queue they are created on, therefore causing a cyclic ref relation. In order to resolve it, just use a weak reference. A failure of upgrading the Weak ref is not an issue as in this case we'd only wait on an already destroyed or processed event. The worker thread already makes sure everything stays in sync. Fixes: 5b3ff7e3f3d ("rusticl/queue: overhaul of the queue+event handling") Signed-off-by: Karol Herbst Reviewed-by: @LingMan <18294-LingMan@users.noreply.gitlab.freedesktop.org> Part-of: (cherry picked from commit 9a3af6e1d8a88ff5c919d33966e97168fe780a86) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/core/queue.rs | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index e129ea3e151..55fc119d5a8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -664,7 +664,7 @@ "description": "rusticl/queue: Only take a weak ref to the last Event", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "5b3ff7e3f3d0e35f7bc17d9f208a8aeee3062427", "notes": null diff --git a/src/gallium/frontends/rusticl/core/queue.rs b/src/gallium/frontends/rusticl/core/queue.rs index 364b4272487..4a4cb223949 100644 --- a/src/gallium/frontends/rusticl/core/queue.rs +++ b/src/gallium/frontends/rusticl/core/queue.rs @@ -13,12 +13,13 @@ use std::collections::HashSet; use std::sync::mpsc; use std::sync::Arc; use std::sync::Mutex; +use std::sync::Weak; use std::thread; use std::thread::JoinHandle; struct QueueState { pending: Vec>, - last: Option>, + last: Weak, // `Sync` on `Sender` was stabilized in 1.72, until then, put it into our Mutex. // see https://github.com/rust-lang/rust/commit/5f56956b3c7edb9801585850d1f41b0aeb1888ff chan_in: mpsc::Sender>>, @@ -62,7 +63,7 @@ impl Queue { props_v2: props_v2, state: Mutex::new(QueueState { pending: Vec::new(), - last: None, + last: Weak::new(), chan_in: tx_q, }), _thrd: thread::Builder::new() @@ -134,7 +135,7 @@ impl Queue { // Update last if and only if we get new events, this prevents breaking application code // doing things like `clFlush(q); clFinish(q);` if let Some(last) = state.pending.last() { - state.last = Some(last.clone()); + state.last = Arc::downgrade(last); } let events = state.pending.drain(0..).collect(); @@ -144,9 +145,10 @@ impl Queue { .send(events) .map_err(|_| CL_OUT_OF_HOST_MEMORY)?; if wait { - // Waiting on the last event is good enough here as the queue will process it in order, - // also take the value so we can release the event once we are done - state.last.take().map(|e| e.wait()); + // Waiting on the last event is good enough here as the queue will process it in order + // It's not a problem if the weak ref is invalid as that means the work is already done + // and waiting isn't necessary anymore. + state.last.upgrade().map(|e| e.wait()); } Ok(()) } From e8e6ad5692e1a1fa5194e8f45f7122f69caa650b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 16:22:27 -0400 Subject: [PATCH 030/356] zink: add more locking for compute pipelines if multiple contexts are accessing this all at once then this needs more locking to avoid unsynchronized cache access cc: mesa-stable Part-of: (cherry picked from commit f8909e7d55e86c7db55f4b9482f94c993f5e2529) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_program.c | 22 ++++++++++++++++++---- src/gallium/drivers/zink/zink_types.h | 2 ++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 55fc119d5a8..4557a56782f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -654,7 +654,7 @@ "description": "zink: add more locking for compute pipelines", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 796cc258a4f..024e19088e8 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -1367,6 +1367,7 @@ create_compute_program(struct zink_context *ctx, nir_shader *nir) struct zink_compute_program *comp = create_program(ctx, true); if (!comp) return NULL; + simple_mtx_init(&comp->cache_lock, mtx_plain); comp->scratch_size = nir->scratch_size; comp->nir = nir; comp->num_inlinable_uniforms = nir->info.num_inlinable_uniforms; @@ -1595,6 +1596,7 @@ zink_get_compute_pipeline(struct zink_screen *screen, struct zink_compute_pipeline_state *state) { struct hash_entry *entry = NULL; + struct compute_pipeline_cache_entry *cache_entry; if (!state->dirty && !state->module_changed) return state->pipeline; @@ -1617,30 +1619,42 @@ zink_get_compute_pipeline(struct zink_screen *screen, entry = _mesa_hash_table_search_pre_hashed(&comp->pipelines, state->final_hash, state); if (!entry) { + simple_mtx_lock(&comp->cache_lock); + entry = _mesa_hash_table_search_pre_hashed(&comp->pipelines, state->final_hash, state); + if (entry) { + simple_mtx_unlock(&comp->cache_lock); + goto out; + } VkPipeline pipeline = zink_create_compute_pipeline(screen, comp, state); - if (pipeline == VK_NULL_HANDLE) + if (pipeline == VK_NULL_HANDLE) { + simple_mtx_unlock(&comp->cache_lock); return VK_NULL_HANDLE; + } zink_screen_update_pipeline_cache(screen, &comp->base, false); if (compute_can_shortcut(comp)) { + simple_mtx_unlock(&comp->cache_lock); /* don't add base pipeline to cache */ state->pipeline = comp->base_pipeline = pipeline; return state->pipeline; } struct compute_pipeline_cache_entry *pc_entry = CALLOC_STRUCT(compute_pipeline_cache_entry); - if (!pc_entry) + if (!pc_entry) { + simple_mtx_unlock(&comp->cache_lock); return VK_NULL_HANDLE; + } memcpy(&pc_entry->state, state, sizeof(*state)); pc_entry->pipeline = pipeline; entry = _mesa_hash_table_insert_pre_hashed(&comp->pipelines, state->final_hash, pc_entry, pc_entry); assert(entry); + simple_mtx_unlock(&comp->cache_lock); } - - struct compute_pipeline_cache_entry *cache_entry = entry->data; +out: + cache_entry = entry->data; state->pipeline = cache_entry->pipeline; return state->pipeline; } diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index 29d921f3f4f..6aa00b86c2b 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -1148,6 +1148,8 @@ struct zink_compute_program { struct zink_shader *shader; struct hash_table pipelines; + simple_mtx_t cache_lock; //extra lock because threads are insane and sand was not meant to think + VkPipeline base_pipeline; }; From 2ee4ef998a378d025267d820b1c4fe9d79b58daa Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 15:50:06 -0400 Subject: [PATCH 031/356] radv: correctly return oom from the device when failing to create a cs cc: mesa-stable Part-of: (cherry picked from commit c4283e32e3e8d96987358620aa43483a79eea08b) --- .pick_status.json | 2 +- src/amd/vulkan/radv_cmd_buffer.c | 4 ++-- src/amd/vulkan/radv_cp_reg_shadowing.c | 4 ++-- src/amd/vulkan/radv_queue.c | 6 ++++-- src/amd/vulkan/radv_shader.c | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 4557a56782f..4c4f9698675 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -644,7 +644,7 @@ "description": "radv: correctly return oom from the device when failing to create a cs", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 7315cf12eb9..d8a0ab5caf3 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -355,7 +355,7 @@ radv_create_cmd_buffer(struct vk_command_pool *pool, struct vk_command_buffer ** cmd_buffer->cs = device->ws->cs_create(device->ws, ring, cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_SECONDARY); if (!cmd_buffer->cs) { radv_destroy_cmd_buffer(&cmd_buffer->vk); - return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); + return vk_error(device, VK_ERROR_OUT_OF_DEVICE_MEMORY); } vk_object_base_init(&device->vk, &cmd_buffer->meta_push_descriptors.base, VK_OBJECT_TYPE_DESCRIPTOR_SET); @@ -698,7 +698,7 @@ radv_gang_init(struct radv_cmd_buffer *cmd_buffer) device->ws->cs_create(device->ws, AMD_IP_COMPUTE, cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_SECONDARY); if (!ace_cs) { - vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); + vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_DEVICE_MEMORY); return false; } diff --git a/src/amd/vulkan/radv_cp_reg_shadowing.c b/src/amd/vulkan/radv_cp_reg_shadowing.c index 9f19c68fec9..f846bf51b33 100644 --- a/src/amd/vulkan/radv_cp_reg_shadowing.c +++ b/src/amd/vulkan/radv_cp_reg_shadowing.c @@ -44,7 +44,7 @@ radv_create_shadow_regs_preamble(const struct radv_device *device, struct radv_q struct radeon_cmdbuf *cs = ws->cs_create(ws, AMD_IP_GFX, false); if (!cs) - return VK_ERROR_OUT_OF_HOST_MEMORY; + return VK_ERROR_OUT_OF_DEVICE_MEMORY; radeon_check_space(ws, cs, 256); @@ -131,7 +131,7 @@ radv_init_shadowed_regs_buffer_state(const struct radv_device *device, struct ra cs = ws->cs_create(ws, AMD_IP_GFX, false); if (!cs) - return VK_ERROR_OUT_OF_HOST_MEMORY; + return VK_ERROR_OUT_OF_DEVICE_MEMORY; radeon_check_space(ws, cs, 768); diff --git a/src/amd/vulkan/radv_queue.c b/src/amd/vulkan/radv_queue.c index 3160824d461..abdfae500fe 100644 --- a/src/amd/vulkan/radv_queue.c +++ b/src/amd/vulkan/radv_queue.c @@ -996,7 +996,7 @@ radv_update_preamble_cs(struct radv_queue_state *queue, struct radv_device *devi struct radeon_cmdbuf *cs = NULL; cs = ws->cs_create(ws, radv_queue_family_to_ring(device->physical_device, queue->qf), false); if (!cs) { - result = VK_ERROR_OUT_OF_HOST_MEMORY; + result = VK_ERROR_OUT_OF_DEVICE_MEMORY; goto fail; } @@ -1263,8 +1263,10 @@ radv_create_gang_wait_preambles_postambles(struct radv_queue *queue) struct radeon_cmdbuf *ace_pre_cs = ws->cs_create(ws, AMD_IP_COMPUTE, false); struct radeon_cmdbuf *ace_post_cs = ws->cs_create(ws, AMD_IP_COMPUTE, false); - if (!leader_pre_cs || !leader_post_cs || !ace_pre_cs || !ace_post_cs) + if (!leader_pre_cs || !leader_post_cs || !ace_pre_cs || !ace_post_cs) { + r = VK_ERROR_OUT_OF_DEVICE_MEMORY; goto fail; + } radeon_check_space(ws, leader_pre_cs, 256); radeon_check_space(ws, leader_post_cs, 256); diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 62625274578..84f33eeea15 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -1404,7 +1404,7 @@ radv_init_shader_upload_queue(struct radv_device *device) struct radv_shader_dma_submission *submission = calloc(1, sizeof(struct radv_shader_dma_submission)); submission->cs = ws->cs_create(ws, AMD_IP_SDMA, false); if (!submission->cs) - return VK_ERROR_OUT_OF_HOST_MEMORY; + return VK_ERROR_OUT_OF_DEVICE_MEMORY; list_addtail(&submission->list, &device->shader_dma_submissions); } From ede1cdbcaf42a4d26cdf0034b23ab35a0f41b60d Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 26 Oct 2023 11:34:26 -0400 Subject: [PATCH 032/356] zink: check for cbuf0 writes before setting A2C VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08919 requires a cbuf0 write for A2C to be active cc: mesa-stable Part-of: (cherry picked from commit 736577871b939573af400e4e64ebfe18863d49af) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_draw.cpp | 3 ++- src/gallium/drivers/zink/zink_program.c | 6 ++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 4c4f9698675..8cc6b5ab060 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -624,7 +624,7 @@ "description": "zink: check for cbuf0 writes before setting A2C", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/zink/zink_draw.cpp b/src/gallium/drivers/zink/zink_draw.cpp index 11e7295fe82..0eee77f1d72 100644 --- a/src/gallium/drivers/zink/zink_draw.cpp +++ b/src/gallium/drivers/zink/zink_draw.cpp @@ -819,7 +819,8 @@ zink_draw(struct pipe_context *pctx, if ((BATCH_CHANGED || ctx->blend_state_changed)) { if (ctx->gfx_pipeline_state.blend_state) { if (ctx->ds3_states & BITFIELD_BIT(ZINK_DS3_BLEND_A2C)) - VKCTX(CmdSetAlphaToCoverageEnableEXT)(batch->state->cmdbuf, ctx->gfx_pipeline_state.blend_state->alpha_to_coverage); + VKCTX(CmdSetAlphaToCoverageEnableEXT)(batch->state->cmdbuf, ctx->gfx_pipeline_state.blend_state->alpha_to_coverage && + ctx->gfx_stages[MESA_SHADER_FRAGMENT]->info.outputs_written & BITFIELD_BIT(FRAG_RESULT_DATA0)); if (ctx->ds3_states & BITFIELD_BIT(ZINK_DS3_BLEND_A21)) VKCTX(CmdSetAlphaToOneEnableEXT)(batch->state->cmdbuf, ctx->gfx_pipeline_state.blend_state->alpha_to_one); if (ctx->fb_state.nr_cbufs) { diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 024e19088e8..c82607272d5 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -1864,11 +1864,17 @@ zink_bind_fs_state(struct pipe_context *pctx, zink_set_null_fs(ctx); return; } + bool writes_cbuf0 = ctx->gfx_stages[MESA_SHADER_FRAGMENT] ? (ctx->gfx_stages[MESA_SHADER_FRAGMENT]->info.outputs_written & BITFIELD_BIT(FRAG_RESULT_DATA0)) > 0 : true; unsigned shadow_mask = ctx->gfx_stages[MESA_SHADER_FRAGMENT] ? ctx->gfx_stages[MESA_SHADER_FRAGMENT]->fs.legacy_shadow_mask : 0; bind_gfx_stage(ctx, MESA_SHADER_FRAGMENT, cso); ctx->fbfetch_outputs = 0; if (cso) { shader_info *info = &ctx->gfx_stages[MESA_SHADER_FRAGMENT]->info; + bool new_writes_cbuf0 = (info->outputs_written & BITFIELD_BIT(FRAG_RESULT_DATA0)) > 0; + if (ctx->gfx_pipeline_state.blend_state && ctx->gfx_pipeline_state.blend_state->alpha_to_coverage && writes_cbuf0 != new_writes_cbuf0) { + ctx->blend_state_changed = true; + ctx->ds3_states |= BITFIELD_BIT(ZINK_DS3_BLEND_A2C); + } if (info->fs.uses_fbfetch_output) { if (info->outputs_read & (BITFIELD_BIT(FRAG_RESULT_DEPTH) | BITFIELD_BIT(FRAG_RESULT_STENCIL))) ctx->fbfetch_outputs |= BITFIELD_BIT(PIPE_MAX_COLOR_BUFS); From 39f9dc50f5890eac5d3dbeed093f1f839f82ffc4 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Thu, 26 Oct 2023 15:10:36 -0700 Subject: [PATCH 033/356] anv: Fix leak when compiling internal kernels Cc: mesa-stable Reviewed-by: Paulo Zanoni Reviewed-by: Lionel Landwerlin Tested-by: Paulo Zanoni Part-of: (cherry picked from commit 9d73bfc9cdd127a52d07bf8b60e66c5a9495890e) --- .pick_status.json | 2 +- src/intel/vulkan/anv_internal_kernels.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 8cc6b5ab060..0e9594c7cf9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -614,7 +614,7 @@ "description": "anv: Fix leak when compiling internal kernels", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/intel/vulkan/anv_internal_kernels.c b/src/intel/vulkan/anv_internal_kernels.c index 184d757fb36..077d7ebe177 100644 --- a/src/intel/vulkan/anv_internal_kernels.c +++ b/src/intel/vulkan/anv_internal_kernels.c @@ -245,6 +245,8 @@ compile_upload_spirv(struct anv_device *device, brw_nir_analyze_ubo_ranges(compiler, nir, NULL, prog_data.base.ubo_ranges); + void *temp_ctx = ralloc_context(NULL); + const unsigned *program; if (stage == MESA_SHADER_FRAGMENT) { struct brw_compile_stats stats[3]; @@ -254,6 +256,7 @@ compile_upload_spirv(struct anv_device *device, .log_data = device, .debug_flag = DEBUG_WM, .stats = stats, + .mem_ctx = temp_ctx, }, .key = &key.wm, .prog_data = &prog_data.wm, @@ -287,6 +290,7 @@ compile_upload_spirv(struct anv_device *device, .stats = &stats, .log_data = device, .debug_flag = DEBUG_CS, + .mem_ctx = temp_ctx, }, .key = &key.cs, .prog_data = &prog_data.cs, @@ -314,6 +318,7 @@ compile_upload_spirv(struct anv_device *device, &push_desc_info, 0 /* dynamic_push_values */); + ralloc_free(temp_ctx); ralloc_free(nir); return kernel; From 62c4a2273e41e5f857e962f6716637c08c6b8f8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 20 Oct 2023 17:54:34 -0400 Subject: [PATCH 034/356] radeonsi: initialize perfetto in the right place Compute contexts don't execute the second half of the function. Fixes: a164e147e91 - radeonsi: Add perfetto support in radeonsi Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10043 Tested-by: Mike Lothian Tested-by: Karol Herbst Part-of: (cherry picked from commit 276b9b13cf4d073c8a6faa18f41952d2f826679d) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/si_gfx_cs.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 0e9594c7cf9..7e861568aaf 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -424,7 +424,7 @@ "description": "radeonsi: initialize perfetto in the right place", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a164e147e91e8c6090d4dceca59806e091244c50", "notes": null diff --git a/src/gallium/drivers/radeonsi/si_gfx_cs.c b/src/gallium/drivers/radeonsi/si_gfx_cs.c index 567b8d1f2c8..9478e58035e 100644 --- a/src/gallium/drivers/radeonsi/si_gfx_cs.c +++ b/src/gallium/drivers/radeonsi/si_gfx_cs.c @@ -369,6 +369,8 @@ void si_begin_new_gfx_cs(struct si_context *ctx, bool first_cs) if (!first_cs) u_trace_fini(&ctx->trace); + u_trace_init(&ctx->trace, &ctx->ds.trace_context); + if (unlikely(radeon_uses_secure_bos(ctx->ws))) { is_secure = ctx->ws->cs_is_secure(&ctx->gfx_cs); @@ -583,7 +585,6 @@ void si_begin_new_gfx_cs(struct si_context *ctx, bool first_cs) assert(!ctx->gfx_cs.prev_dw); ctx->initial_gfx_cs_size = ctx->gfx_cs.current.cdw; - u_trace_init(&ctx->trace, &ctx->ds.trace_context); /* All buffer references are removed on a flush, so si_check_needs_implicit_sync * cannot determine if si_make_CB_shader_coherent() needs to be called. * ctx->force_cb_shader_coherent will be cleared by the first call to From 5e690f4097615667a8f67c8efe645bb14958f30b Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Wed, 25 Oct 2023 23:17:22 +0200 Subject: [PATCH 035/356] rusticl/mesa: pass PIPE_BIND_LINEAR in resource_create_texture_from_user Host pointer allocations are all linear laid out, so just tell the drivers in case they don't assume this implicitly. Fixes: 71a9af49107 ("rusticl/mem: support read/write/copy ops for images") Signed-off-by: Karol Herbst Part-of: (cherry picked from commit 7f08036abc5dd361b2161660f2f7efce8df86056) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/mesa/pipe/screen.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 7e861568aaf..9540226d76b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -304,7 +304,7 @@ "description": "rusticl/mesa: pass PIPE_BIND_LINEAR in resource_create_texture_from_user", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "71a9af49107289439f281ab59b5f67f59064f0aa", "notes": null diff --git a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs index 9428bc0b98d..cb89345afb5 100644 --- a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs +++ b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs @@ -216,7 +216,7 @@ impl PipeScreen { tmpl.height0 = height; tmpl.depth0 = depth; tmpl.array_size = array_size; - tmpl.bind = PIPE_BIND_SAMPLER_VIEW; + tmpl.bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_LINEAR; if support_image { tmpl.bind |= PIPE_BIND_SHADER_IMAGE; From 8986b7f9aec39313016c5b8d876bb01b8f3315dc Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Fri, 27 Oct 2023 15:53:19 +0200 Subject: [PATCH 036/356] zink: deallocate global_bindings array Fixes: a6e9e0f0d77 ("zink: add set_global_binding") Signed-off-by: Karol Herbst Acked-by: Mike Blumenkrantz Part-of: (cherry picked from commit 2f34a1db5883a2e5178371d8295f711bd754a1e1) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_context.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 9540226d76b..81fcd593d0a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -264,7 +264,7 @@ "description": "zink: deallocate global_bindings array", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a6e9e0f0d771e5121ea477cbaabe65a38de0ce5d", "notes": null diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index f8e742fc9cf..39494ad1a14 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -231,6 +231,11 @@ zink_context_destroy(struct pipe_context *pctx) if (!(ctx->flags & ZINK_CONTEXT_COPY_ONLY)) p_atomic_dec(&screen->base.num_contexts); + util_dynarray_foreach(&ctx->di.global_bindings, struct pipe_resource *, res) { + pipe_resource_reference(res, NULL); + } + util_dynarray_fini(&ctx->di.global_bindings); + ralloc_free(ctx); } From 8a50c841cf1d05f2d954ae4cbee402ebfd690148 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 16 Oct 2023 16:38:31 +0200 Subject: [PATCH 037/356] v3d,v3dv: fix MMU error from hardware prefetch after ldunifa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ldunifa works exactly the same as ldunif: the hw will prefetch the next 4 bytes after a read, so if a buffer is exactly a multiple of a page size and a shader uses ldunifa to read exactly the last 4 bytes the prefetch will read out of bounds and spam the error on the kernel log. Avoid that by allocating extra bytes in this scenario. Reviewed-by: Alejandro Piñeiro Cc: mesa-stable Part-of: (cherry picked from commit 82bef62c17c79b298601fd565ce558c5282a88b7) --- .pick_status.json | 2 +- src/broadcom/vulkan/v3dv_device.c | 12 ++++++++++++ src/gallium/drivers/v3d/v3d_resource.c | 12 +++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 81fcd593d0a..edf59ed67a6 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -224,7 +224,7 @@ "description": "v3d,v3dv: fix MMU error from hardware prefetch after ldunifa", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 48aa967e56f..60c55120fe6 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -2766,6 +2766,18 @@ get_buffer_memory_requirements(struct v3dv_buffer *buffer, .size = align64(buffer->size, buffer->alignment), }; + /* UBO and SSBO may be read using ldunifa, which prefetches the next + * 4 bytes after a read. If the buffer's size is exactly a multiple + * of a page size and the shader reads the last 4 bytes with ldunifa + * the prefetching would read out of bounds and cause an MMU error, + * so we allocate extra space to avoid kernel error spamming. + */ + bool can_ldunifa = buffer->usage & + (VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT); + if (can_ldunifa && (buffer->size % 4096 == 0)) + pMemoryRequirements->memoryRequirements.size += buffer->alignment; + vk_foreach_struct(ext, pMemoryRequirements->pNext) { switch (ext->sType) { case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: { diff --git a/src/gallium/drivers/v3d/v3d_resource.c b/src/gallium/drivers/v3d/v3d_resource.c index a0a210ccad5..d9a79614dd1 100644 --- a/src/gallium/drivers/v3d/v3d_resource.c +++ b/src/gallium/drivers/v3d/v3d_resource.c @@ -99,7 +99,17 @@ v3d_resource_bo_alloc(struct v3d_resource *rsc) struct pipe_screen *pscreen = prsc->screen; struct v3d_bo *bo; - bo = v3d_bo_alloc(v3d_screen(pscreen), rsc->size, "resource"); + /* Buffers may be read using ldunifa, which prefetches the next + * 4 bytes after a read. If the buffer's size is exactly a multiple + * of a page size and the shader reads the last 4 bytes with ldunifa + * the prefetching would read out of bounds and cause an MMU error, + * so we allocate extra space to avoid kernel error spamming. + */ + uint32_t size = rsc->size; + if (rsc->base.target == PIPE_BUFFER && (size % 4096 == 0)) + size += 4; + + bo = v3d_bo_alloc(v3d_screen(pscreen), size, "resource"); if (bo) { v3d_bo_unreference(&rsc->bo); rsc->bo = bo; From c03932b6e68958565d96a6117e2f1fc996fcbbff Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 3 Oct 2023 17:34:06 +0200 Subject: [PATCH 038/356] radv: fix a synchronization issue with primitives generated query on RDNA1-2 Only RDNA1-2 are affected because RADV needs to handle the legacy vs NGG path for this query, and the NGG results are stored with 2 extra 64-bit values. Fixes flakes with dEQP-VK.transform_feedback.primitives_generated_query.* since VKCTS 1.3.7.0. Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit 7d96fe853e1b007293054645caf54ade77a77c90) --- .pick_status.json | 2 +- src/amd/ci/radv-navi21-aco-flakes.txt | 3 -- src/amd/vulkan/radv_query.c | 48 +++++++++++++++++++-------- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index edf59ed67a6..12f4eed2be9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -214,7 +214,7 @@ "description": "radv: fix a synchronization issue with primitives generated query on RDNA1-2", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/ci/radv-navi21-aco-flakes.txt b/src/amd/ci/radv-navi21-aco-flakes.txt index 663dfca4d0b..b6e62fed8ad 100644 --- a/src/amd/ci/radv-navi21-aco-flakes.txt +++ b/src/amd/ci/radv-navi21-aco-flakes.txt @@ -19,6 +19,3 @@ dEQP-VK.ray_tracing_pipeline.pipeline_library.configurations.multithreaded_compi dEQP-VK.ray_tracing_pipeline.pipeline_library.configurations.multithreaded_compilation.*_check_capture_replay_handles dEQP-VK.ray_tracing_pipeline.pipeline_library.configurations.singlethreaded_compilation.*_check_all_handles dEQP-VK.ray_tracing_pipeline.pipeline_library.configurations.singlethreaded_compilation.*_check_capture_replay_handles - -# New CTS flakes in 1.3.7.0 -dEQP-VK.transform_feedback.primitives_generated_query.get.* diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index 6596e93199b..7e43604c8bc 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -584,7 +584,7 @@ build_timestamp_query_shader(struct radv_device *device) } #define RADV_PGQ_STRIDE 32 -#define RADV_PGQ_STRIDE_GDS (RADV_PGQ_STRIDE + 4 * 2) +#define RADV_PGQ_STRIDE_GDS (RADV_PGQ_STRIDE + 8 * 2) static nir_shader * build_pg_query_shader(struct radv_device *device) @@ -663,11 +663,21 @@ build_pg_query_shader(struct radv_device *device) nir_def *avails[2]; avails[0] = nir_channel(&b, load1, 1); avails[1] = nir_channel(&b, load2, 1); - nir_def *result_is_available = - nir_i2b(&b, nir_iand(&b, nir_iand(&b, avails[0], avails[1]), nir_imm_int(&b, 0x80000000))); + nir_store_var(&b, available, nir_i2b(&b, nir_iand_imm(&b, nir_iand(&b, avails[0], avails[1]), 0x80000000)), 0x1); + + nir_push_if(&b, uses_gds); + { + nir_def *gds_avail_start = nir_load_ssbo(&b, 1, 32, src_buf, nir_iadd_imm(&b, input_base, 36), .align_mul = 4); + nir_def *gds_avail_end = nir_load_ssbo(&b, 1, 32, src_buf, nir_iadd_imm(&b, input_base, 44), .align_mul = 4); + nir_def *gds_result_available = + nir_i2b(&b, nir_iand_imm(&b, nir_iand(&b, gds_avail_start, gds_avail_end), 0x80000000)); + + nir_store_var(&b, available, nir_iand(&b, nir_load_var(&b, available), gds_result_available), 0x1); + } + nir_pop_if(&b, NULL); /* Only compute result if available. */ - nir_push_if(&b, result_is_available); + nir_push_if(&b, nir_load_var(&b, available)); /* Pack values. */ nir_def *packed64[2]; @@ -684,7 +694,7 @@ build_pg_query_shader(struct radv_device *device) nir_def *gds_start = nir_load_ssbo(&b, 1, 32, src_buf, nir_iadd(&b, input_base, nir_imm_int(&b, 32)), .align_mul = 4); nir_def *gds_end = - nir_load_ssbo(&b, 1, 32, src_buf, nir_iadd(&b, input_base, nir_imm_int(&b, 36)), .align_mul = 4); + nir_load_ssbo(&b, 1, 32, src_buf, nir_iadd(&b, input_base, nir_imm_int(&b, 40)), .align_mul = 4); nir_def *ngg_gds_result = nir_isub(&b, gds_end, gds_start); @@ -692,8 +702,6 @@ build_pg_query_shader(struct radv_device *device) } nir_pop_if(&b, NULL); - nir_store_var(&b, available, nir_imm_true(&b), 0x1); - nir_pop_if(&b, NULL); /* Determine if result is 64 or 32 bit. */ @@ -1087,7 +1095,7 @@ radv_create_query_pool(struct radv_device *device, const VkQueryPoolCreateInfo * case VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT: if (pool->uses_gds && device->physical_device->rad_info.gfx_level < GFX11) { /* When the hardware can use both the legacy and the NGG paths in the same begin/end pair, - * allocate 2x32-bit values for the GDS counters. + * allocate 2x64-bit values for the GDS counters. */ pool->stride = RADV_PGQ_STRIDE_GDS; } else { @@ -1318,6 +1326,7 @@ radv_GetQueryPoolResults(VkDevice _device, VkQueryPool queryPool, uint32_t first break; } case VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT: { + const bool uses_gds_query = pool->uses_gds && device->physical_device->rad_info.gfx_level < GFX11; p_atomic_uint64_t const *src64 = (p_atomic_uint64_t const *)src; uint64_t primitive_storage_needed; @@ -1333,6 +1342,10 @@ radv_GetQueryPoolResults(VkDevice _device, VkQueryPool queryPool, uint32_t first !(p_atomic_read(src64 + 2) & 0x8000000000000000UL)) { available = 0; } + if (uses_gds_query && (!(p_atomic_read(src64 + 4) & 0x8000000000000000UL) || + !(p_atomic_read(src64 + 5) & 0x8000000000000000UL))) { + available = 0; + } } while (!available && (flags & VK_QUERY_RESULT_WAIT_BIT)); if (!available && !(flags & VK_QUERY_RESULT_PARTIAL_BIT)) @@ -1340,11 +1353,9 @@ radv_GetQueryPoolResults(VkDevice _device, VkQueryPool queryPool, uint32_t first primitive_storage_needed = src64[2] - src64[0]; - if (pool->uses_gds && device->physical_device->rad_info.gfx_level < GFX11) { - uint32_t const *src32 = (uint32_t const *)src; - + if (uses_gds_query) { /* Accumulate the result that was copied from GDS in case NGG shader has been used. */ - primitive_storage_needed += src32[9] - src32[8]; + primitive_storage_needed += src64[5] - src64[4]; } if (flags & VK_QUERY_RESULT_64_BIT) { @@ -1539,15 +1550,22 @@ radv_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPoo break; case VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT: if (flags & VK_QUERY_RESULT_WAIT_BIT) { + const bool uses_gds_query = pool->uses_gds && cmd_buffer->device->physical_device->rad_info.gfx_level < GFX11; + for (unsigned i = 0; i < queryCount; i++) { unsigned query = firstQuery + i; uint64_t src_va = va + query * pool->stride; - radeon_check_space(cmd_buffer->device->ws, cs, 7 * 2); + radeon_check_space(cmd_buffer->device->ws, cs, 7 * 4); /* Wait on the upper word of the PrimitiveStorageNeeded result. */ radv_cp_wait_mem(cs, cmd_buffer->qf, WAIT_REG_MEM_GREATER_OR_EQUAL, src_va + 4, 0x80000000, 0xffffffff); radv_cp_wait_mem(cs, cmd_buffer->qf, WAIT_REG_MEM_GREATER_OR_EQUAL, src_va + 20, 0x80000000, 0xffffffff); + + if (uses_gds_query) { + radv_cp_wait_mem(cs, cmd_buffer->qf, WAIT_REG_MEM_GREATER_OR_EQUAL, src_va + 36, 0x80000000, 0xffffffff); + radv_cp_wait_mem(cs, cmd_buffer->qf, WAIT_REG_MEM_GREATER_OR_EQUAL, src_va + 44, 0x80000000, 0xffffffff); + } } } @@ -1829,6 +1847,7 @@ emit_begin_query(struct radv_cmd_buffer *cmd_buffer, struct radv_query_pool *poo if (pool->uses_gds) { /* generated prim counter */ gfx10_copy_gds_query(cmd_buffer, RADV_SHADER_QUERY_PRIM_GEN_OFFSET(index), va + 32); + radv_cs_write_data_imm(cs, V_370_ME, va + 36, 0x80000000); /* Record that the command buffer needs GDS. */ cmd_buffer->gds_needed = true; @@ -1983,7 +2002,8 @@ emit_end_query(struct radv_cmd_buffer *cmd_buffer, struct radv_query_pool *pool, if (pool->uses_gds) { /* generated prim counter */ - gfx10_copy_gds_query(cmd_buffer, RADV_SHADER_QUERY_PRIM_GEN_OFFSET(index), va + 36); + gfx10_copy_gds_query(cmd_buffer, RADV_SHADER_QUERY_PRIM_GEN_OFFSET(index), va + 40); + radv_cs_write_data_imm(cs, V_370_ME, va + 44, 0x80000000); cmd_buffer->state.active_prims_gen_gds_queries--; From 21798650dea34426abef01697698166e37ab6ca4 Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Thu, 26 Oct 2023 17:11:30 +0200 Subject: [PATCH 039/356] tu: Fix reading of stale (V)PC_PRIMITIVE_CNTL_0 PC_PRIMITIVE_CNTL_0 is not set in a draw state and may be changed by 3d blits, so we have to re-emit it a the start of a renderpass. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9941 Fixes: 7be8d0f7f490ea58c89798efca7e45b84dc395da ("tu: Use common dirty tracking for PC_PRIMITIVE_CNTL_0") Signed-off-by: Danylo Piliaiev Part-of: (cherry picked from commit cdbb8b541266b1095c9565eef6d115adac73c1aa) --- .pick_status.json | 2 +- src/freedreno/vulkan/tu_cmd_buffer.cc | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 12f4eed2be9..5bdbb02380d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -134,7 +134,7 @@ "description": "tu: Fix reading of stale (V)PC_PRIMITIVE_CNTL_0", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "7be8d0f7f490ea58c89798efca7e45b84dc395da", "notes": null diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index f07e8615735..23a1e4ae53f 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -1610,6 +1610,11 @@ tu_emit_renderpass_begin(struct tu_cmd_buffer *cmd) */ BITSET_SET(cmd->vk.dynamic_graphics_state.dirty, MESA_VK_DYNAMIC_MS_RASTERIZATION_SAMPLES); + /* PC_PRIMITIVE_CNTL_0 isn't a part of a draw state and may be changed + * by blits. + */ + BITSET_SET(cmd->vk.dynamic_graphics_state.dirty, + MESA_VK_DYNAMIC_IA_PRIMITIVE_RESTART_ENABLE); } template From 7b81db9f37f6842436ce25045bbec9c858df353d Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Tue, 31 Oct 2023 14:33:11 +0000 Subject: [PATCH 040/356] .pick_status.json: Update to 4cdd094ae1e97d857a6b9dbc291d7bbe6ea266ac --- .pick_status.json | 350 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 350 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 5bdbb02380d..025a230228a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,354 @@ [ + { + "sha": "4cdd094ae1e97d857a6b9dbc291d7bbe6ea266ac", + "description": "virgl: Use host reported limits for max outputs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c24a635d1cf1cd538c503a37c2a3535409a01e46", + "description": "broadcom/compiler: add v3d_pack_unnormalized_coordinates helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5e4ba9b166078fb4978c4eb69986bfff0f6ca66b", + "description": "ci/lava: add wine into the amd64 ephemeral container packages", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "81aaeb80f759efb84d21827a3309bc4c03aa8a8e", + "description": "Revert \"ci/wine: move wine configuration into rootfs where is wine available\"", + "nominated": false, + "nomination_type": 2, + "resolution": 4, + "main_sha": null, + "because_sha": "63b42e4007fec8746f7a3848b3816d36124dcbfd", + "notes": null + }, + { + "sha": "1e13c7ca4653d7ffd1dcad54ad52af96e1021b59", + "description": "ci/wine: move wine configuration into rootfs where is wine available", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "35c7b5e159444b8226f59b5250001e85417102ee", + "description": "ci/alpine: do not store apk cache", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3669ca159fc3b3e5ef628e201f5d91dea9de6365", + "description": "ci/venus: reduce pre-merge to fit under 15 min", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f6dd808d68ec904a4323449fd1db71439b1b6079", + "description": "ci/panfrost: run T860 traces as intended (nightly job)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "17d6baff823656d3523fed812d68c9b6de8813c0", + "description": "ci: drop debootstrap, unused", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e4d6da5ba30cd544014b017b1b16645e866088ad", + "description": "ci: bashify scripts, use arrays", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e678483ecd710787b22538efb6149f8705ec91ae", + "description": "ci: always cleanup pip and cargo leftovers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c6928a4e6e111a105259d3e88b5f4b4c7279dd04", + "description": "ci: drop mingw and wine from the x86_64 build container", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ef217a92217392d7ed08eb5112d7e5e29d80d407", + "description": "ci: simplify debian-rusticl-testing definition", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1f2b50fbc2443efac86fc6b2c352921b4b47df8a", + "description": "ci: drop clover from release builds and remove rusticl build", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2815e5c94daf5bba547e8d9366ec30b7b54eaa47", + "description": "ci: hide Mesa install phase", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "68e8e40163855adc63eab3fff2c41286a47b6a02", + "description": "ci/zink: reduce premerge testing on a618 to ~ 12 minutes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fa7ca1f70a9d7d1b6f779214630600852faa6d9d", + "description": "ci: bump tags", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fddad4d5f9f27c0ca97a4383d1f2e3a54578c23a", + "description": "intel/compiler: Assert that FS_OPCODE_[REP_]FB_WRITE is for pre-Gfx7", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "48f60f4c4b6b91aabfeec1d32298f0d546ecbad9", + "description": "intel/compiler: Convert the repclear shader to use send-from-GRF", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ef7d1b5f446a23419e6043f71a551217da9ea598", + "description": "intel/compiler: Drop unused saturate handling in repclear shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e6d9267d4f91d4cd67d82cf53cb05b8271ed147b", + "description": "intel/compiler: Delete repclear shader's special case for 1 color target", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e6460fe66b6faf6f3d4dacd6c6f43efbe4800f8c", + "description": "intel/compiler: Delete unused repclear shader uniform handling", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b35f1fc910b9c362623f4f47fe43bcd5cfcb3d21", + "description": "intel/compiler: Delete unused emit_dummy_fs()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5b24ab91e43a54b4f4081db52ebf6653b97e72bb", + "description": "venus: switch to unconditionally deferred query feedback", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7fbf608f2dac486b23030d3b48dd10bb453d9eb8", + "description": "venus: append query feedback at submission time", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d2a626787e559dad9105243be9e5043c9230853c", + "description": "venus: track/recycle appended query feedback cmds", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6dcf033dc30e52c1557999bf7588cf0e1c5dcc8c", + "description": "venus: support deferred query feedback recording", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "99807b3db65e107fc35f9419979600fcec7b8230", + "description": "venus: refactor out common cmd feedback functions", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2ea6f935ce554c5a1666648a284406db8edc3cc7", + "description": "venus: add helper function to get cmd handle", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "180cb30986e89f05034dd10c64934205ac134f40", + "description": "ci/docs: add coreutils", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cdca0b2ce4d603d4f5914d7a1e37923a6a959541", + "description": "anv: fix corner case of mutable descriptor pool creation", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "63e91148b7fe777b6ad7bfdb6b02d167c151dd55", + "notes": null + }, + { + "sha": "fac60c140ba57ceebbdcd5278812fe4fa9f737df", + "description": "ci: don't run sanity in Marge pipelines", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "49395b4aa4b2e0cf89c52a00ceabd20cf8e7f9d6", + "description": "docs/ci: allow sanity job to be missing", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3f64b12c1e6114e9d44000eeabf30b4e60a3608b", + "description": "ci: drop confusing fake `rules`, `if` and `when` on the list of rules strings", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9669334b418578e035b8fe7fc173194aeb7407fe", + "description": "ci/zink+radv: add another flake on polaris", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "e64a97694ac9dc97f65e1a8e91a5c9789109fd2c", "description": "anv: use anv_state_pool_state_address for blorp vertex buffer address", From d282666f96abf36f81443ed170799f8890b96c63 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Mon, 30 Oct 2023 17:57:32 +0200 Subject: [PATCH 041/356] anv: fix corner case of mutable descriptor pool creation Signed-off-by: Lionel Landwerlin Fixes: 63e91148b7 ("anv: Enable VK_VALVE_mutable_descriptor_type") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10065 Reviewed-by: Yiwei Zhang Part-of: (cherry picked from commit cdca0b2ce4d603d4f5914d7a1e37923a6a959541) --- .pick_status.json | 2 +- src/intel/vulkan/anv_descriptor_set.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 025a230228a..5d1da6d1c4b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -304,7 +304,7 @@ "description": "anv: fix corner case of mutable descriptor pool creation", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "63e91148b7fe777b6ad7bfdb6b02d167c151dd55", "notes": null diff --git a/src/intel/vulkan/anv_descriptor_set.c b/src/intel/vulkan/anv_descriptor_set.c index 0d335b806f3..123894dfa43 100644 --- a/src/intel/vulkan/anv_descriptor_set.c +++ b/src/intel/vulkan/anv_descriptor_set.c @@ -280,7 +280,9 @@ anv_descriptor_size_for_mutable_type(const struct anv_physical_device *device, { unsigned size = 0; - if (!mutable_info || mutable_info->mutableDescriptorTypeListCount == 0) { + if (!mutable_info || + mutable_info->mutableDescriptorTypeListCount == 0 || + binding >= mutable_info->mutableDescriptorTypeListCount) { for(VkDescriptorType i = 0; i <= VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT; i++) { if (i == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC || From aab94295eae9896981d5b2871f165521723baa14 Mon Sep 17 00:00:00 2001 From: Juston Li Date: Tue, 26 Sep 2023 15:24:17 -0700 Subject: [PATCH 042/356] venus: add helper function to get cmd handle rename previous vn_get_cmd_handle as that was getting cmd handles from the temp storage cmd_handle buffer. Cc: 23.3 Signed-off-by: Juston Li Part-of: (cherry picked from commit 2ea6f935ce554c5a1666648a284406db8edc3cc7) --- .pick_status.json | 2 +- src/virtio/vulkan/vn_queue.c | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5d1da6d1c4b..fbb9976f03d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -284,7 +284,7 @@ "description": "venus: add helper function to get cmd handle", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 4848f96b5a7..903a9beb72e 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -176,6 +176,21 @@ vn_get_cmd_buffer_ptr(struct vn_queue_submission *submit, .pCommandBufferInfos; } +static inline const VkCommandBuffer +vn_get_cmd_handle(struct vn_queue_submission *submit, + uint32_t batch_index, + uint32_t cmd_index) +{ + assert((submit->batch_type == VK_STRUCTURE_TYPE_SUBMIT_INFO) || + (submit->batch_type == VK_STRUCTURE_TYPE_SUBMIT_INFO_2)); + + return submit->batch_type == VK_STRUCTURE_TYPE_SUBMIT_INFO + ? submit->submit_batches[batch_index].pCommandBuffers[cmd_index] + : submit->submit_batches2[batch_index] + .pCommandBufferInfos[cmd_index] + .commandBuffer; +} + static uint64_t vn_get_signal_semaphore_counter(struct vn_queue_submission *submit, uint32_t batch_index, @@ -454,9 +469,9 @@ struct vn_feedback_cmds { }; static inline VkCommandBuffer * -vn_get_cmd_handle(struct vn_queue_submission *submit, - struct vn_feedback_cmds *feedback_cmds, - uint32_t cmd_index) +vn_get_feedback_cmd_handle(struct vn_queue_submission *submit, + struct vn_feedback_cmds *feedback_cmds, + uint32_t cmd_index) { assert((submit->batch_type == VK_STRUCTURE_TYPE_SUBMIT_INFO) || (submit->batch_type == VK_STRUCTURE_TYPE_SUBMIT_INFO_2)); @@ -525,7 +540,7 @@ vn_queue_submission_add_semaphore_feedback( if (sem->feedback.slot) { VkCommandBuffer *cmd_handle = - vn_get_cmd_handle(submit, feedback_cmds, cmd_index); + vn_get_feedback_cmd_handle(submit, feedback_cmds, cmd_index); uint64_t counter = vn_get_signal_semaphore_counter(submit, batch_index, i); From 0bf24452f38bde74c153faf8618428b6af80d2b4 Mon Sep 17 00:00:00 2001 From: Juston Li Date: Tue, 26 Sep 2023 15:34:56 -0700 Subject: [PATCH 043/356] venus: refactor out common cmd feedback functions defered query feedback cmds have similaries with timeline semaphore feedback so refactor out some common functions for reuse Cc: 23.3 Signed-off-by: Juston Li Part-of: (cherry picked from commit 99807b3db65e107fc35f9419979600fcec7b8230) --- .pick_status.json | 2 +- src/virtio/vulkan/vn_queue.c | 122 +++++++++++++++++++++-------------- 2 files changed, 74 insertions(+), 50 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index fbb9976f03d..141e47f00db 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -274,7 +274,7 @@ "description": "venus: refactor out common cmd feedback functions", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 903a9beb72e..62d9980c011 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -43,7 +43,7 @@ struct vn_queue_submission { bool has_feedback_fence; bool has_feedback_semaphore; const struct vn_device_memory *wsi_mem; - uint32_t sem_cmd_buffer_count; + uint32_t feedback_cmd_buffer_count; struct vn_sync_payload_external external_payload; /* Temporary storage allocation for submission @@ -221,7 +221,6 @@ vn_queue_submission_fix_batch_semaphores(struct vn_queue_submission *submit, struct vn_device *dev = vn_device_from_handle(dev_handle); uint32_t wait_count = vn_get_wait_semaphore_count(submit, batch_index); - uint32_t signal_count = vn_get_signal_semaphore_count(submit, batch_index); for (uint32_t i = 0; i < wait_count; i++) { VkSemaphore sem_handle = vn_get_wait_semaphore(submit, batch_index, i); @@ -245,24 +244,31 @@ vn_queue_submission_fix_batch_semaphores(struct vn_queue_submission *submit, &res_info); } - bool batch_has_sem_feedback = false; + return VK_SUCCESS; +} + +static void +vn_queue_submission_count_batch_feedback(struct vn_queue_submission *submit, + uint32_t batch_index) +{ + uint32_t signal_count = vn_get_signal_semaphore_count(submit, batch_index); + + bool batch_has_feedback_sem = false; for (uint32_t i = 0; i < signal_count; i++) { struct vn_semaphore *sem = vn_semaphore_from_handle( vn_get_signal_semaphore(submit, batch_index, i)); if (sem->feedback.slot) { - batch_has_sem_feedback = true; - submit->sem_cmd_buffer_count++; + batch_has_feedback_sem = true; + submit->feedback_cmd_buffer_count++; } } - if (batch_has_sem_feedback) { - submit->sem_cmd_buffer_count += + if (batch_has_feedback_sem) { + submit->feedback_cmd_buffer_count += vn_get_cmd_buffer_count(submit, batch_index); } - submit->has_feedback_semaphore |= batch_has_sem_feedback; - - return VK_SUCCESS; + submit->has_feedback_semaphore |= batch_has_feedback_sem; } static VkResult @@ -291,6 +297,8 @@ vn_queue_submission_prepare(struct vn_queue_submission *submit) VkResult result = vn_queue_submission_fix_batch_semaphores(submit, i); if (result != VK_SUCCESS) return result; + + vn_queue_submission_count_batch_feedback(submit, i); } return VK_SUCCESS; @@ -342,7 +350,7 @@ vn_queue_submission_alloc_storage(struct vn_queue_submission *submit) /* space for copied cmds and sem feedback cmds */ if (submit->has_feedback_semaphore) - alloc_size += submit->sem_cmd_buffer_count * cmd_size; + alloc_size += submit->feedback_cmd_buffer_count * cmd_size; submit->temp.storage = vk_alloc(alloc, alloc_size, VN_DEFAULT_ALIGN, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); @@ -482,18 +490,52 @@ vn_get_feedback_cmd_handle(struct vn_queue_submission *submit, } static VkResult -vn_queue_submission_add_semaphore_feedback( - struct vn_queue_submission *submit, - uint32_t batch_index, - uint32_t cmd_buffer_count, - uint32_t sem_feedback_count, - struct vn_feedback_cmds *feedback_cmds) +vn_queue_submission_add_sem_feedback(struct vn_queue_submission *submit, + uint32_t batch_index, + uint32_t cmd_buffer_count, + struct vn_feedback_cmds *feedback_cmds) { struct vn_queue *queue = vn_queue_from_handle(submit->queue_handle); uint32_t signal_semaphore_count = vn_get_signal_semaphore_count(submit, batch_index); VkResult result; + /* Set the sem feedback cmds we appended in our copy of cmd buffers + * with cmds to write the signal value. + */ + uint32_t cmd_index = cmd_buffer_count; + for (uint32_t i = 0; i < signal_semaphore_count; i++) { + struct vn_semaphore *sem = vn_semaphore_from_handle( + vn_get_signal_semaphore(submit, batch_index, i)); + + if (sem->feedback.slot) { + VkCommandBuffer *cmd_handle = + vn_get_feedback_cmd_handle(submit, feedback_cmds, cmd_index); + + uint64_t counter = + vn_get_signal_semaphore_counter(submit, batch_index, i); + + result = vn_set_sem_feedback_cmd(queue, sem, counter, cmd_handle); + if (result != VK_SUCCESS) + return result; + + cmd_index++; + } + } + + return VK_SUCCESS; +} + +static VkResult +vn_queue_submission_add_feedback_cmds(struct vn_queue_submission *submit, + uint32_t batch_index, + uint32_t cmd_buffer_count, + uint32_t feedback_cmd_count, + struct vn_feedback_cmds *feedback_cmds) +{ + VkResult result; + uint32_t new_cmd_buffer_count = cmd_buffer_count + feedback_cmd_count; + /* Update SubmitInfo to use our copy of cmd buffers with sem feedback cmds * appended and update the cmd buffer count. * SubmitInfo2 also needs to initialize the cmd buffer info struct. @@ -503,15 +545,14 @@ vn_queue_submission_add_semaphore_feedback( VkSubmitInfo *submit_info = &submit->temp.submit_batches[batch_index]; submit_info->pCommandBuffers = feedback_cmds->cmd_buffers; - submit_info->commandBufferCount = cmd_buffer_count + sem_feedback_count; + submit_info->commandBufferCount = new_cmd_buffer_count; break; } case VK_STRUCTURE_TYPE_SUBMIT_INFO_2: { VkSubmitInfo2 *submit_info2 = &submit->temp.submit_batches2[batch_index]; - for (uint32_t i = cmd_buffer_count; - i < cmd_buffer_count + sem_feedback_count; i++) { + for (uint32_t i = cmd_buffer_count; i < new_cmd_buffer_count; i++) { VkCommandBufferSubmitInfo *cmd_buffer_info = &feedback_cmds->cmd_buffer_infos[i]; @@ -522,35 +563,18 @@ vn_queue_submission_add_semaphore_feedback( } submit_info2->pCommandBufferInfos = feedback_cmds->cmd_buffer_infos; - submit_info2->commandBufferInfoCount = - cmd_buffer_count + sem_feedback_count; + submit_info2->commandBufferInfoCount = new_cmd_buffer_count; break; } default: unreachable("unexpected batch type"); } - /* Set the sem feedback cmds we appended in our copy of cmd buffers - * with cmds to write the signal value. - */ - uint32_t cmd_index = cmd_buffer_count; - for (uint32_t i = 0; i < signal_semaphore_count; i++) { - struct vn_semaphore *sem = vn_semaphore_from_handle( - vn_get_signal_semaphore(submit, batch_index, i)); - - if (sem->feedback.slot) { - VkCommandBuffer *cmd_handle = - vn_get_feedback_cmd_handle(submit, feedback_cmds, cmd_index); - - uint64_t counter = - vn_get_signal_semaphore_counter(submit, batch_index, i); - - result = vn_set_sem_feedback_cmd(queue, sem, counter, cmd_handle); - if (result != VK_SUCCESS) - return result; - - cmd_index++; - } + if (cmd_buffer_count != new_cmd_buffer_count) { + result = vn_queue_submission_add_sem_feedback( + submit, batch_index, cmd_buffer_count, feedback_cmds); + if (result != VK_SUCCESS) + return result; } return VK_SUCCESS; @@ -665,16 +689,16 @@ vn_queue_submission_setup_batches(struct vn_queue_submission *submit) uint32_t signal_count = vn_get_signal_semaphore_count(submit, batch_index); - uint32_t sem_feedback_count = 0; + uint32_t feedback_cmd_count = 0; for (uint32_t i = 0; i < signal_count; i++) { struct vn_semaphore *sem = vn_semaphore_from_handle( vn_get_signal_semaphore(submit, batch_index, i)); if (sem->feedback.slot) - sem_feedback_count++; + feedback_cmd_count++; } - if (sem_feedback_count) { + if (feedback_cmd_count) { struct vn_feedback_cmds feedback_cmds = { .cmds = submit->temp.cmds + cmd_offset, }; @@ -687,14 +711,14 @@ vn_queue_submission_setup_batches(struct vn_queue_submission *submit) cmd_buffer_size); } - result = vn_queue_submission_add_semaphore_feedback( - submit, batch_index, cmd_buffer_count, sem_feedback_count, + result = vn_queue_submission_add_feedback_cmds( + submit, batch_index, cmd_buffer_count, feedback_cmd_count, &feedback_cmds); if (result != VK_SUCCESS) return result; /* Set offset to next batches cmd_buffers */ - cmd_offset += cmd_buffer_size + (sem_feedback_count * cmd_size); + cmd_offset += cmd_buffer_size + (feedback_cmd_count * cmd_size); } } From 49aa21e327fc0021d3d5aead175297c73c2da829 Mon Sep 17 00:00:00 2001 From: Juston Li Date: Tue, 26 Sep 2023 15:09:54 -0700 Subject: [PATCH 044/356] venus: support deferred query feedback recording Add function to alloc a cmd buffer and record all the deferred query feedback cmds into it at submission time. Cc: 23.3 Signed-off-by: Juston Li Part-of: (cherry picked from commit 6dcf033dc30e52c1557999bf7588cf0e1c5dcc8c) --- .pick_status.json | 2 +- src/virtio/vulkan/vn_command_buffer.c | 28 ++++-------- src/virtio/vulkan/vn_feedback.c | 64 +++++++++++++++++++++++++++ src/virtio/vulkan/vn_feedback.h | 16 +++++++ 4 files changed, 90 insertions(+), 20 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 141e47f00db..9c8571849f8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -264,7 +264,7 @@ "description": "venus: support deferred query feedback recording", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c index 7f6d2cffc40..35db167f125 100644 --- a/src/virtio/vulkan/vn_command_buffer.c +++ b/src/virtio/vulkan/vn_command_buffer.c @@ -506,22 +506,13 @@ vn_cmd_transfer_present_src_images( count, img_barriers); } -/* query feedback batch for deferred recording */ -struct vn_command_buffer_query_batch { - struct vn_query_pool *query_pool; - uint32_t query; - uint32_t query_count; - - struct list_head head; -}; - static bool vn_cmd_query_batch_push(struct vn_command_buffer *cmd, struct vn_query_pool *query_pool, uint32_t query, uint32_t query_count) { - struct vn_command_buffer_query_batch *batch; + struct vn_feedback_query_batch *batch; if (list_is_empty(&cmd->pool->free_query_batches)) { batch = vk_alloc(&cmd->pool->allocator, sizeof(*batch), VN_DEFAULT_ALIGN, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); @@ -529,7 +520,7 @@ vn_cmd_query_batch_push(struct vn_command_buffer *cmd, return false; } else { batch = list_first_entry(&cmd->pool->free_query_batches, - struct vn_command_buffer_query_batch, head); + struct vn_feedback_query_batch, head); list_del(&batch->head); } @@ -543,7 +534,7 @@ vn_cmd_query_batch_push(struct vn_command_buffer *cmd, static inline void vn_cmd_query_batch_pop(struct vn_command_buffer *cmd, - struct vn_command_buffer_query_batch *batch) + struct vn_feedback_query_batch *batch) { list_move_to(&batch->head, &cmd->pool->free_query_batches); } @@ -551,7 +542,7 @@ vn_cmd_query_batch_pop(struct vn_command_buffer *cmd, static void vn_cmd_record_batched_query_feedback(struct vn_command_buffer *cmd) { - list_for_each_entry_safe(struct vn_command_buffer_query_batch, batch, + list_for_each_entry_safe(struct vn_feedback_query_batch, batch, &cmd->builder.query_batches, head) { vn_feedback_query_cmd_record(vn_command_buffer_to_handle(cmd), vn_query_pool_to_handle(batch->query_pool), @@ -565,8 +556,7 @@ static inline void vn_cmd_merge_batched_query_feedback(struct vn_command_buffer *primary_cmd, struct vn_command_buffer *secondary_cmd) { - list_for_each_entry_safe(struct vn_command_buffer_query_batch, - secondary_batch, + list_for_each_entry_safe(struct vn_feedback_query_batch, secondary_batch, &secondary_cmd->builder.query_batches, head) { if (!vn_cmd_query_batch_push(primary_cmd, secondary_batch->query_pool, secondary_batch->query, @@ -766,14 +756,14 @@ vn_DestroyCommandPool(VkDevice device, if (cmd->builder.present_src_images) vk_free(alloc, cmd->builder.present_src_images); - list_for_each_entry_safe(struct vn_command_buffer_query_batch, batch, + list_for_each_entry_safe(struct vn_feedback_query_batch, batch, &cmd->builder.query_batches, head) vk_free(alloc, batch); vk_free(alloc, cmd); } - list_for_each_entry_safe(struct vn_command_buffer_query_batch, batch, + list_for_each_entry_safe(struct vn_feedback_query_batch, batch, &pool->free_query_batches, head) vk_free(alloc, batch); @@ -795,7 +785,7 @@ vn_cmd_reset(struct vn_command_buffer *cmd) if (cmd->builder.present_src_images) vk_free(&cmd->pool->allocator, cmd->builder.present_src_images); - list_for_each_entry_safe(struct vn_command_buffer_query_batch, batch, + list_for_each_entry_safe(struct vn_feedback_query_batch, batch, &cmd->builder.query_batches, head) vn_cmd_query_batch_pop(cmd, batch); @@ -912,7 +902,7 @@ vn_FreeCommandBuffers(VkDevice device, if (cmd->builder.present_src_images) vk_free(alloc, cmd->builder.present_src_images); - list_for_each_entry_safe(struct vn_command_buffer_query_batch, batch, + list_for_each_entry_safe(struct vn_feedback_query_batch, batch, &cmd->builder.query_batches, head) vn_cmd_query_batch_pop(cmd, batch); diff --git a/src/virtio/vulkan/vn_feedback.c b/src/virtio/vulkan/vn_feedback.c index 660549f48f2..5adb55e4d78 100644 --- a/src/virtio/vulkan/vn_feedback.c +++ b/src/virtio/vulkan/vn_feedback.c @@ -595,6 +595,70 @@ vn_feedback_query_cmd_record(VkCommandBuffer cmd_handle, offset, buf_size); } +static void +vn_cmd_record_batched_query_feedback(VkCommandBuffer *cmd_handle, + struct list_head *combined_query_batches) +{ + list_for_each_entry_safe(struct vn_feedback_query_batch, batch, + combined_query_batches, head) { + vn_feedback_query_cmd_record( + *cmd_handle, vn_query_pool_to_handle(batch->query_pool), + batch->query, batch->query_count, batch->copy); + } +} + +VkResult +vn_feedback_query_batch_record(VkDevice dev_handle, + struct vn_feedback_cmd_pool *feedback_pool, + struct list_head *combined_query_batches, + VkCommandBuffer *out_cmd_handle) +{ + const VkCommandBufferAllocateInfo info = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, + .pNext = NULL, + .commandPool = feedback_pool->pool, + .level = VK_COMMAND_BUFFER_LEVEL_PRIMARY, + .commandBufferCount = 1, + }; + VkCommandBuffer feedback_cmd_handle; + VkResult result; + + simple_mtx_lock(&feedback_pool->mutex); + + result = + vn_AllocateCommandBuffers(dev_handle, &info, &feedback_cmd_handle); + if (result != VK_SUCCESS) + goto out_unlock; + + static const VkCommandBufferBeginInfo begin_info = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + }; + + result = vn_BeginCommandBuffer(feedback_cmd_handle, &begin_info); + if (result != VK_SUCCESS) { + vn_FreeCommandBuffers(dev_handle, feedback_pool->pool, 1, + &feedback_cmd_handle); + goto out_unlock; + } + + vn_cmd_record_batched_query_feedback(&feedback_cmd_handle, + combined_query_batches); + + result = vn_EndCommandBuffer(feedback_cmd_handle); + if (result != VK_SUCCESS) { + vn_FreeCommandBuffers(dev_handle, feedback_pool->pool, 1, + &feedback_cmd_handle); + goto out_unlock; + } + + *out_cmd_handle = feedback_cmd_handle; + +out_unlock: + simple_mtx_unlock(&feedback_pool->mutex); + + return result; +} + VkResult vn_feedback_cmd_alloc(VkDevice dev_handle, struct vn_feedback_cmd_pool *pool, diff --git a/src/virtio/vulkan/vn_feedback.h b/src/virtio/vulkan/vn_feedback.h index 0069210d454..7084ff221d8 100644 --- a/src/virtio/vulkan/vn_feedback.h +++ b/src/virtio/vulkan/vn_feedback.h @@ -64,6 +64,16 @@ struct vn_feedback_buffer { struct list_head head; }; +/* query feedback batch for deferred recording */ +struct vn_feedback_query_batch { + struct vn_query_pool *query_pool; + uint32_t query; + uint32_t query_count; + bool copy; + + struct list_head head; +}; + VkResult vn_feedback_pool_init(struct vn_device *dev, struct vn_feedback_pool *pool, @@ -143,6 +153,12 @@ vn_feedback_query_cmd_record(VkCommandBuffer cmd_handle, uint32_t count, bool copy); +VkResult +vn_feedback_query_batch_record(VkDevice dev_handle, + struct vn_feedback_cmd_pool *feedback_pool, + struct list_head *combined_query_batches, + VkCommandBuffer *out_cmd_handle); + VkResult vn_feedback_cmd_alloc(VkDevice dev_handle, struct vn_feedback_cmd_pool *pool, From 62ea10c0e05ab08dccf05f3218045297c2d2b074 Mon Sep 17 00:00:00 2001 From: Juston Li Date: Tue, 26 Sep 2023 16:04:18 -0700 Subject: [PATCH 045/356] venus: track/recycle appended query feedback cmds Link the query feedback cmd lifecycle to a cmd in the batch so that when that last cmd gets reset/freed, we assert its safe to reset the query feedback cmd. The cmd is then placed on the free list for reuse. Some edge cases if the the last cmd is simultaneous or gets resubmitted. Cc: 23.3 Signed-off-by: Juston Li Part-of: (cherry picked from commit d2a626787e559dad9105243be9e5043c9230853c) --- .pick_status.json | 2 +- src/virtio/vulkan/vn_command_buffer.c | 22 +++++++ src/virtio/vulkan/vn_command_buffer.h | 7 +++ src/virtio/vulkan/vn_feedback.c | 18 ++++-- src/virtio/vulkan/vn_queue.c | 83 +++++++++++++++++++++++++++ 5 files changed, 127 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 9c8571849f8..9744f33d89f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -254,7 +254,7 @@ "description": "venus: track/recycle appended query feedback cmds", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c index 35db167f125..3b225f0f855 100644 --- a/src/virtio/vulkan/vn_command_buffer.c +++ b/src/virtio/vulkan/vn_command_buffer.c @@ -716,6 +716,7 @@ vn_CreateCommandPool(VkDevice device, pool->queue_family_index = pCreateInfo->queueFamilyIndex; list_inithead(&pool->command_buffers); list_inithead(&pool->free_query_batches); + list_inithead(&pool->free_query_feedback_cmds); VkCommandPool pool_handle = vn_command_pool_to_handle(pool); vn_async_vkCreateCommandPool(dev->instance, device, pCreateInfo, NULL, @@ -726,6 +727,16 @@ vn_CreateCommandPool(VkDevice device, return VK_SUCCESS; } +static inline void +vn_recycle_query_feedback_cmd(struct vn_command_buffer *cmd) +{ + vn_ResetCommandBuffer( + vn_command_buffer_to_handle(cmd->linked_query_feedback_cmd), 0); + list_add(&cmd->linked_query_feedback_cmd->feedback_head, + &cmd->linked_query_feedback_cmd->pool->free_query_feedback_cmds); + cmd->linked_query_feedback_cmd = NULL; +} + void vn_DestroyCommandPool(VkDevice device, VkCommandPool commandPool, @@ -760,6 +771,9 @@ vn_DestroyCommandPool(VkDevice device, &cmd->builder.query_batches, head) vk_free(alloc, batch); + if (cmd->linked_query_feedback_cmd) + vn_recycle_query_feedback_cmd(cmd); + vk_free(alloc, cmd); } @@ -789,6 +803,9 @@ vn_cmd_reset(struct vn_command_buffer *cmd) &cmd->builder.query_batches, head) vn_cmd_query_batch_pop(cmd, batch); + if (cmd->linked_query_feedback_cmd) + vn_recycle_query_feedback_cmd(cmd); + memset(&cmd->builder, 0, sizeof(cmd->builder)); list_inithead(&cmd->builder.query_batches); @@ -906,6 +923,9 @@ vn_FreeCommandBuffers(VkDevice device, &cmd->builder.query_batches, head) vn_cmd_query_batch_pop(cmd, batch); + if (cmd->linked_query_feedback_cmd) + vn_recycle_query_feedback_cmd(cmd); + vn_object_base_fini(&cmd->base); vk_free(alloc, cmd); } @@ -1045,6 +1065,8 @@ vn_BeginCommandBuffer(VkCommandBuffer commandBuffer, cmd->state = VN_COMMAND_BUFFER_STATE_INVALID; return vn_error(instance, VK_ERROR_OUT_OF_HOST_MEMORY); } + cmd->builder.is_simultaneous = + pBeginInfo->flags & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT; vn_encode_vkBeginCommandBuffer(&cmd->cs, 0, commandBuffer, pBeginInfo); diff --git a/src/virtio/vulkan/vn_command_buffer.h b/src/virtio/vulkan/vn_command_buffer.h index 292b0babc8b..73fc91d92d5 100644 --- a/src/virtio/vulkan/vn_command_buffer.h +++ b/src/virtio/vulkan/vn_command_buffer.h @@ -25,6 +25,7 @@ struct vn_command_pool { struct list_head command_buffers; struct list_head free_query_batches; + struct list_head free_query_feedback_cmds; /* Temporary storage for scrubbing VK_IMAGE_LAYOUT_PRESENT_SRC_KHR. The * storage's lifetime is the command pool's lifetime. We increase the @@ -66,6 +67,8 @@ struct vn_command_buffer_builder { uint32_t subpass_index; /* track the active view mask inside a render pass instance */ uint32_t view_mask; + /* track if VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT was set */ + bool is_simultaneous; /* track the query feedbacks deferred outside the render pass instance */ struct list_head query_batches; }; @@ -82,7 +85,11 @@ struct vn_command_buffer { struct vn_command_buffer_builder builder; + struct vn_command_buffer *linked_query_feedback_cmd; + struct list_head head; + + struct list_head feedback_head; }; VK_DEFINE_HANDLE_CASTS(vn_command_buffer, base.base, diff --git a/src/virtio/vulkan/vn_feedback.c b/src/virtio/vulkan/vn_feedback.c index 5adb55e4d78..c17d947e958 100644 --- a/src/virtio/vulkan/vn_feedback.c +++ b/src/virtio/vulkan/vn_feedback.c @@ -620,15 +620,25 @@ vn_feedback_query_batch_record(VkDevice dev_handle, .level = VK_COMMAND_BUFFER_LEVEL_PRIMARY, .commandBufferCount = 1, }; + struct vn_command_pool *cmd_pool = + vn_command_pool_from_handle(feedback_pool->pool); VkCommandBuffer feedback_cmd_handle; VkResult result; simple_mtx_lock(&feedback_pool->mutex); - result = - vn_AllocateCommandBuffers(dev_handle, &info, &feedback_cmd_handle); - if (result != VK_SUCCESS) - goto out_unlock; + if (!list_is_empty(&cmd_pool->free_query_feedback_cmds)) { + struct vn_command_buffer *free_cmd = + list_first_entry(&cmd_pool->free_query_feedback_cmds, + struct vn_command_buffer, feedback_head); + feedback_cmd_handle = vn_command_buffer_to_handle(free_cmd); + list_del(&free_cmd->feedback_head); + } else { + result = + vn_AllocateCommandBuffers(dev_handle, &info, &feedback_cmd_handle); + if (result != VK_SUCCESS) + goto out_unlock; + } static const VkCommandBufferBeginInfo begin_info = { .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 62d9980c011..a3169275a85 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -17,6 +17,7 @@ #include "venus-protocol/vn_protocol_driver_semaphore.h" #include "venus-protocol/vn_protocol_driver_transport.h" +#include "vn_command_buffer.h" #include "vn_device.h" #include "vn_device_memory.h" #include "vn_physical_device.h" @@ -45,6 +46,7 @@ struct vn_queue_submission { const struct vn_device_memory *wsi_mem; uint32_t feedback_cmd_buffer_count; struct vn_sync_payload_external external_payload; + struct vn_command_buffer *recycle_query_feedback_cmd; /* Temporary storage allocation for submission * A single alloc for storage is performed and the offsets inside @@ -489,6 +491,79 @@ vn_get_feedback_cmd_handle(struct vn_queue_submission *submit, : &feedback_cmds->cmd_buffer_infos[cmd_index].commandBuffer; } +static VkResult +vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit, + uint32_t cmd_buffer_count, + struct vn_feedback_cmds *feedback_cmds) +{ + struct vk_queue *queue_vk = vk_queue_from_handle(submit->queue_handle); + VkDevice dev_handle = vk_device_to_handle(queue_vk->base.device); + struct vn_device *dev = vn_device_from_handle(dev_handle); + VkCommandBuffer *src_cmd_handles = + vn_get_feedback_cmd_handle(submit, feedback_cmds, 0); + VkCommandBuffer *feedback_cmd_handle = + vn_get_feedback_cmd_handle(submit, feedback_cmds, cmd_buffer_count); + uint32_t stride = (submit->batch_type == VK_STRUCTURE_TYPE_SUBMIT_INFO) + ? sizeof(VkCommandBuffer *) + : sizeof(VkCommandBufferSubmitInfo); + VkResult result; + + uint32_t pool_index; + for (pool_index = 0; pool_index < dev->queue_family_count; pool_index++) { + if (dev->queue_families[pool_index] == queue_vk->queue_family_index) + break; + } + + result = vn_feedback_query_batch_record( + dev_handle, &dev->cmd_pools[pool_index], src_cmd_handles, + cmd_buffer_count, stride, feedback_cmd_handle); + if (result != VK_SUCCESS) + return result; + + /* link query feedback cmd lifecycle with a cmd in the original batch so + * that the feedback cmd can be reset and recycled when that cmd gets + * reset/freed. + * + * Avoid cmd buffers with VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT + * since we don't know if all its instances have completed execution. + * Should be rare enough to just log and leak the feedback cmd. + */ + struct vn_command_buffer *linked_cmd_buffer = NULL; + for (uint32_t i = cmd_buffer_count - 1; i >= 0; i--) { + VkCommandBuffer *cmd_handle = + vn_get_feedback_cmd_handle(submit, feedback_cmds, i); + struct vn_command_buffer *cmd_buffer = + vn_command_buffer_from_handle(*cmd_handle); + + if (!cmd_buffer->builder.is_simultaneous) { + linked_cmd_buffer = cmd_buffer; + break; + } + } + + if (!linked_cmd_buffer) { + vn_log(dev->instance, + "Could not find non simultaneous cmd to link query feedback\n"); + return VK_SUCCESS; + } + + /* If a cmd that was submitted previously and already has a feedback cmd + * linked, as long as VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is not + * set we can assume it has completed execution and is no longer in the + * pending state so its safe to recycle the old feedback command before + * linking a new one. Defer the actual recycle operation to + * vn_queue_submission_cleanup. + */ + if (linked_cmd_buffer->linked_query_feedback_cmd) + submit->recycle_query_feedback_cmd = + linked_cmd_buffer->linked_query_feedback_cmd; + + linked_cmd_buffer->linked_query_feedback_cmd = + vn_command_buffer_from_handle(*feedback_cmd_handle); + + return VK_SUCCESS; +} + static VkResult vn_queue_submission_add_sem_feedback(struct vn_queue_submission *submit, uint32_t batch_index, @@ -789,6 +864,14 @@ vn_queue_submission_cleanup(struct vn_queue_submission *submit) struct vn_queue *queue = vn_queue_from_handle(submit->queue_handle); const VkAllocationCallbacks *alloc = &queue->base.base.base.device->alloc; + if (submit->recycle_query_feedback_cmd) { + vn_ResetCommandBuffer( + vn_command_buffer_to_handle(submit->recycle_query_feedback_cmd), 0); + list_add( + &submit->recycle_query_feedback_cmd->feedback_head, + &submit->recycle_query_feedback_cmd->pool->free_query_feedback_cmds); + } + /* TODO clean up pending src feedbacks on failure? */ if (submit->has_feedback_semaphore) vn_queue_recycle_src_feedback(submit); From a33f38d2bf161a7ddf817370264b8546653d22be Mon Sep 17 00:00:00 2001 From: Juston Li Date: Tue, 26 Sep 2023 16:29:17 -0700 Subject: [PATCH 046/356] venus: append query feedback at submission time Cc: 23.3 Signed-off-by: Juston Li Part-of: (cherry picked from commit 7fbf608f2dac486b23030d3b48dd10bb453d9eb8) --- .pick_status.json | 2 +- src/virtio/vulkan/vn_feedback.c | 3 +- src/virtio/vulkan/vn_queue.c | 79 ++++++++++++++++++++++++++------- 3 files changed, 66 insertions(+), 18 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 9744f33d89f..f46d99c7bd9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -244,7 +244,7 @@ "description": "venus: append query feedback at submission time", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/virtio/vulkan/vn_feedback.c b/src/virtio/vulkan/vn_feedback.c index c17d947e958..8b2e01d70b3 100644 --- a/src/virtio/vulkan/vn_feedback.c +++ b/src/virtio/vulkan/vn_feedback.c @@ -727,7 +727,8 @@ vn_feedback_cmd_pools_init(struct vn_device *dev) .flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, }; - if (VN_PERF(NO_FENCE_FEEDBACK) && VN_PERF(NO_TIMELINE_SEM_FEEDBACK)) + if (VN_PERF(NO_FENCE_FEEDBACK) && VN_PERF(NO_TIMELINE_SEM_FEEDBACK) && + VN_PERF(NO_QUERY_FEEDBACK)) return VK_SUCCESS; assert(dev->queue_family_count); diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index a3169275a85..045d88f2aed 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -42,6 +42,7 @@ struct vn_queue_submission { VkFence fence_handle; bool has_feedback_fence; + bool has_feedback_query; bool has_feedback_semaphore; const struct vn_device_memory *wsi_mem; uint32_t feedback_cmd_buffer_count; @@ -58,6 +59,8 @@ struct vn_queue_submission { * - copy of cmd buffers for any batch with sem feedback with * additional cmd buffers for each signal semaphore that uses * feedback + * - an extra cmd buffer info for recording and appending defered + * query feedback * - an extra cmd buffer info for appending fence feedback * when using SubmitInfo2 */ @@ -265,11 +268,24 @@ vn_queue_submission_count_batch_feedback(struct vn_queue_submission *submit, } } - if (batch_has_feedback_sem) { + bool batch_has_feedback_query = false; + uint32_t cmd_count = vn_get_cmd_buffer_count(submit, batch_index); + for (uint32_t i = 0; i < cmd_count; i++) { + struct vn_command_buffer *cmd = vn_command_buffer_from_handle( + vn_get_cmd_handle(submit, batch_index, i)); + if (!list_is_empty(&cmd->builder.query_batches)) + batch_has_feedback_query = true; + } + + if (batch_has_feedback_query) + submit->feedback_cmd_buffer_count++; + + if (batch_has_feedback_sem || batch_has_feedback_query) { submit->feedback_cmd_buffer_count += vn_get_cmd_buffer_count(submit, batch_index); } + submit->has_feedback_query |= batch_has_feedback_query; submit->has_feedback_semaphore |= batch_has_feedback_sem; } @@ -316,7 +332,8 @@ vn_queue_submission_alloc_storage(struct vn_queue_submission *submit) size_t alloc_size = 0; size_t cmd_offset = 0; - if (!submit->has_feedback_fence && !submit->has_feedback_semaphore) + if (!submit->has_feedback_fence && !submit->has_feedback_semaphore && + !submit->has_feedback_query) return VK_SUCCESS; switch (submit->batch_type) { @@ -350,8 +367,8 @@ vn_queue_submission_alloc_storage(struct vn_queue_submission *submit) alloc_size += cmd_size; } - /* space for copied cmds and sem feedback cmds */ - if (submit->has_feedback_semaphore) + /* space for copied cmds and sem/query feedback cmds */ + if (submit->has_feedback_semaphore || submit->has_feedback_query) alloc_size += submit->feedback_cmd_buffer_count * cmd_size; submit->temp.storage = vk_alloc(alloc, alloc_size, VN_DEFAULT_ALIGN, @@ -606,13 +623,15 @@ vn_queue_submission_add_feedback_cmds(struct vn_queue_submission *submit, uint32_t batch_index, uint32_t cmd_buffer_count, uint32_t feedback_cmd_count, + bool batch_has_feedback_query, + bool batch_has_feedback_sem, struct vn_feedback_cmds *feedback_cmds) { VkResult result; uint32_t new_cmd_buffer_count = cmd_buffer_count + feedback_cmd_count; - /* Update SubmitInfo to use our copy of cmd buffers with sem feedback cmds - * appended and update the cmd buffer count. + /* Update SubmitInfo to use our copy of cmd buffers with sem adn query + * feedback cmds appended and update the cmd buffer count. * SubmitInfo2 also needs to initialize the cmd buffer info struct. */ switch (submit->batch_type) { @@ -645,7 +664,17 @@ vn_queue_submission_add_feedback_cmds(struct vn_queue_submission *submit, unreachable("unexpected batch type"); } - if (cmd_buffer_count != new_cmd_buffer_count) { + if (batch_has_feedback_query) { + result = vn_queue_submission_add_query_feedback( + submit, cmd_buffer_count, feedback_cmds); + if (result != VK_SUCCESS) + return result; + + /* increment for the cmd buffer used for query feedback cmd */ + cmd_buffer_count++; + } + + if (batch_has_feedback_sem) { result = vn_queue_submission_add_sem_feedback( submit, batch_index, cmd_buffer_count, feedback_cmds); if (result != VK_SUCCESS) @@ -727,7 +756,8 @@ vn_queue_submission_setup_batches(struct vn_queue_submission *submit) size_t batch_size = 0; size_t cmd_size = 0; - if (!submit->has_feedback_fence && !submit->has_feedback_semaphore) + if (!submit->has_feedback_fence && !submit->has_feedback_semaphore && + !submit->has_feedback_query) return VK_SUCCESS; switch (submit->batch_type) { @@ -744,8 +774,8 @@ vn_queue_submission_setup_batches(struct vn_queue_submission *submit) } /* Copy batches and leave an empty batch for fence feedback. - * Timeline semaphore feedback also requires a copy to modify - * cmd buffer. + * Timeline semaphore and query feedback also require a copy + * to modify cmd buffer. * Only needed for non-empty submissions */ if (submit->batches) { @@ -753,8 +783,8 @@ vn_queue_submission_setup_batches(struct vn_queue_submission *submit) batch_size * submit->batch_count); } - /* For any batches with semaphore feedback, copy the original - * cmd_buffer handles and append feedback cmds. + /* For any batches with semaphore or query feedback, copy + * the original cmd_buffer handles and append feedback cmds. */ uint32_t cmd_offset = 0; for (uint32_t batch_index = 0; batch_index < submit->batch_count; @@ -764,15 +794,30 @@ vn_queue_submission_setup_batches(struct vn_queue_submission *submit) uint32_t signal_count = vn_get_signal_semaphore_count(submit, batch_index); + bool batch_has_feedback_sem = false; uint32_t feedback_cmd_count = 0; for (uint32_t i = 0; i < signal_count; i++) { struct vn_semaphore *sem = vn_semaphore_from_handle( vn_get_signal_semaphore(submit, batch_index, i)); - if (sem->feedback.slot) + if (sem->feedback.slot) { feedback_cmd_count++; + batch_has_feedback_sem = true; + } } + bool batch_has_feedback_query = false; + for (uint32_t i = 0; i < cmd_buffer_count; i++) { + struct vn_command_buffer *cmd = vn_command_buffer_from_handle( + vn_get_cmd_handle(submit, batch_index, i)); + if (!list_is_empty(&cmd->builder.query_batches)) { + batch_has_feedback_query = true; + } + } + + if (batch_has_feedback_query) + feedback_cmd_count++; + if (feedback_cmd_count) { struct vn_feedback_cmds feedback_cmds = { .cmds = submit->temp.cmds + cmd_offset, @@ -788,7 +833,7 @@ vn_queue_submission_setup_batches(struct vn_queue_submission *submit) result = vn_queue_submission_add_feedback_cmds( submit, batch_index, cmd_buffer_count, feedback_cmd_count, - &feedback_cmds); + batch_has_feedback_query, batch_has_feedback_sem, &feedback_cmds); if (result != VK_SUCCESS) return result; @@ -876,7 +921,8 @@ vn_queue_submission_cleanup(struct vn_queue_submission *submit) if (submit->has_feedback_semaphore) vn_queue_recycle_src_feedback(submit); - if (submit->has_feedback_fence || submit->has_feedback_semaphore) + if (submit->has_feedback_fence || submit->has_feedback_semaphore || + submit->has_feedback_query) vk_free(alloc, submit->temp.storage); } @@ -1278,7 +1324,8 @@ vn_QueueBindSparse(VkQueue queue, } /* if feedback isn't used in the batch, can directly submit */ - if (!submit.has_feedback_fence && !submit.has_feedback_semaphore) { + if (!submit.has_feedback_fence && !submit.has_feedback_semaphore && + !submit.has_feedback_query) { result = vn_queue_bind_sparse_submit(&submit); if (result != VK_SUCCESS) return result; From 69e6b0307bf9a8a69168d1169ecdfcdb48c6bb84 Mon Sep 17 00:00:00 2001 From: Juston Li Date: Tue, 26 Sep 2023 16:36:58 -0700 Subject: [PATCH 047/356] venus: switch to unconditionally deferred query feedback All commands that make queries available have feedback cmds batched and stored during recording. At submission time, for each batch (SubmitInfo) these feedback cmds are recorded in a cmd buffer that is appended after the last original cmd buffer (but before semaphore/fence feedback). Query reset cmds are deferred as well and also remove any prior feedback cmds for queries its resetting within the batch. Cc: 23.3 Signed-off-by: Juston Li Part-of: (cherry picked from commit 5b24ab91e43a54b4f4081db52ebf6653b97e72bb) --- .pick_status.json | 2 +- src/virtio/vulkan/vn_command_buffer.c | 148 ++++++++++++-------------- src/virtio/vulkan/vn_command_buffer.h | 9 +- src/virtio/vulkan/vn_feedback.c | 2 +- src/virtio/vulkan/vn_feedback.h | 7 -- src/virtio/vulkan/vn_queue.c | 71 +++++++++++- 6 files changed, 143 insertions(+), 96 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index f46d99c7bd9..0d7ee486118 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -234,7 +234,7 @@ "description": "venus: switch to unconditionally deferred query feedback", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c index 3b225f0f855..132595f0ea7 100644 --- a/src/virtio/vulkan/vn_command_buffer.c +++ b/src/virtio/vulkan/vn_command_buffer.c @@ -506,20 +506,21 @@ vn_cmd_transfer_present_src_images( count, img_barriers); } -static bool -vn_cmd_query_batch_push(struct vn_command_buffer *cmd, - struct vn_query_pool *query_pool, - uint32_t query, - uint32_t query_count) +struct vn_feedback_query_batch * +vn_cmd_query_batch_alloc(struct vn_command_pool *pool, + struct vn_query_pool *query_pool, + uint32_t query, + uint32_t query_count, + bool copy) { struct vn_feedback_query_batch *batch; - if (list_is_empty(&cmd->pool->free_query_batches)) { - batch = vk_alloc(&cmd->pool->allocator, sizeof(*batch), - VN_DEFAULT_ALIGN, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); + if (list_is_empty(&pool->free_query_batches)) { + batch = vk_alloc(&pool->allocator, sizeof(*batch), VN_DEFAULT_ALIGN, + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); if (!batch) - return false; + return NULL; } else { - batch = list_first_entry(&cmd->pool->free_query_batches, + batch = list_first_entry(&pool->free_query_batches, struct vn_feedback_query_batch, head); list_del(&batch->head); } @@ -527,29 +528,9 @@ vn_cmd_query_batch_push(struct vn_command_buffer *cmd, batch->query_pool = query_pool; batch->query = query; batch->query_count = query_count; - list_add(&batch->head, &cmd->builder.query_batches); + batch->copy = copy; - return true; -} - -static inline void -vn_cmd_query_batch_pop(struct vn_command_buffer *cmd, - struct vn_feedback_query_batch *batch) -{ - list_move_to(&batch->head, &cmd->pool->free_query_batches); -} - -static void -vn_cmd_record_batched_query_feedback(struct vn_command_buffer *cmd) -{ - list_for_each_entry_safe(struct vn_feedback_query_batch, batch, - &cmd->builder.query_batches, head) { - vn_feedback_query_cmd_record(vn_command_buffer_to_handle(cmd), - vn_query_pool_to_handle(batch->query_pool), - batch->query, batch->query_count, true); - - vn_cmd_query_batch_pop(cmd, batch); - } + return batch; } static inline void @@ -558,12 +539,18 @@ vn_cmd_merge_batched_query_feedback(struct vn_command_buffer *primary_cmd, { list_for_each_entry_safe(struct vn_feedback_query_batch, secondary_batch, &secondary_cmd->builder.query_batches, head) { - if (!vn_cmd_query_batch_push(primary_cmd, secondary_batch->query_pool, - secondary_batch->query, - secondary_batch->query_count)) { + + struct vn_feedback_query_batch *batch = vn_cmd_query_batch_alloc( + primary_cmd->pool, secondary_batch->query_pool, + secondary_batch->query, secondary_batch->query_count, + secondary_batch->copy); + + if (!batch) { primary_cmd->state = VN_COMMAND_BUFFER_STATE_INVALID; return; } + + list_addtail(&batch->head, &primary_cmd->builder.query_batches); } } @@ -628,8 +615,6 @@ vn_cmd_end_render_pass(struct vn_command_buffer *cmd) const struct vn_render_pass *pass = cmd->builder.render_pass; const struct vn_image **images = cmd->builder.present_src_images; - vn_cmd_record_batched_query_feedback(cmd); - cmd->builder.render_pass = NULL; cmd->builder.present_src_images = NULL; cmd->builder.in_render_pass = false; @@ -660,33 +645,13 @@ vn_cmd_begin_rendering(struct vn_command_buffer *cmd, const VkRenderingInfo *rendering_info) { cmd->builder.in_render_pass = true; - cmd->builder.suspending = - rendering_info->flags & VK_RENDERING_SUSPENDING_BIT; cmd->builder.view_mask = rendering_info->viewMask; } static inline void vn_cmd_end_rendering(struct vn_command_buffer *cmd) { - /* XXX query feedback is broken for suspended render pass instance - * - * If resume occurs in a different cmd (only needed for parallel render - * pass recording), the batched query feedbacks here are never recorded. - * Query result retrieval will end up with device lost. - * - * In practice, explicit query usages within the suspended render pass - * instance is a minor (not seeing any so far). Will fix once hit. The - * potential options are: - * - doing a synchronous query pool results retrieval as a fallback - * - store the deferred query feedback in a cmd and inject upon submit - */ - if (!cmd->builder.suspending) - vn_cmd_record_batched_query_feedback(cmd); - else if (VN_DEBUG(RESULT) && !list_is_empty(&cmd->builder.query_batches)) - vn_log(cmd->pool->device->instance, "query dropped by suspended pass"); - cmd->builder.in_render_pass = false; - cmd->builder.suspending = false; cmd->builder.view_mask = 0; } @@ -801,7 +766,7 @@ vn_cmd_reset(struct vn_command_buffer *cmd) list_for_each_entry_safe(struct vn_feedback_query_batch, batch, &cmd->builder.query_batches, head) - vn_cmd_query_batch_pop(cmd, batch); + list_move_to(&batch->head, &cmd->pool->free_query_batches); if (cmd->linked_query_feedback_cmd) vn_recycle_query_feedback_cmd(cmd); @@ -921,7 +886,7 @@ vn_FreeCommandBuffers(VkDevice device, list_for_each_entry_safe(struct vn_feedback_query_batch, batch, &cmd->builder.query_batches, head) - vn_cmd_query_batch_pop(cmd, batch); + list_move_to(&batch->head, &cmd->pool->free_query_batches); if (cmd->linked_query_feedback_cmd) vn_recycle_query_feedback_cmd(cmd); @@ -1812,28 +1777,50 @@ vn_cmd_add_query_feedback(VkCommandBuffer cmd_handle, uint32_t query) { struct vn_command_buffer *cmd = vn_command_buffer_from_handle(cmd_handle); + struct vn_query_pool *query_pool = vn_query_pool_from_handle(pool_handle); + + if (!query_pool->feedback) + return; - /* Outside the render pass instance, vkCmdCopyQueryPoolResults can be - * directly appended. Otherwise, defer the copy cmd until outside. + /* Per 1.3.255 spec "If queries are used while executing a render pass + * instance that has multiview enabled, the query uses N consecutive + * query indices in the query pool (starting at query) where N is the + * number of bits set in the view mask in the subpass the query is used + * in." */ - if (!cmd->builder.in_render_pass) { - vn_feedback_query_cmd_record(cmd_handle, pool_handle, query, 1, true); + uint32_t query_count = + (cmd->builder.in_render_pass && cmd->builder.view_mask) + ? util_bitcount(cmd->builder.view_mask) + : 1; + + struct vn_feedback_query_batch *batch = vn_cmd_query_batch_alloc( + cmd->pool, query_pool, query, query_count, true); + if (!batch) { + cmd->state = VN_COMMAND_BUFFER_STATE_INVALID; return; } - struct vn_query_pool *pool = vn_query_pool_from_handle(pool_handle); - if (!pool->feedback) + list_addtail(&batch->head, &cmd->builder.query_batches); +} + +static inline void +vn_cmd_add_query_reset_feedback(VkCommandBuffer cmd_handle, + VkQueryPool pool_handle, + uint32_t query, + uint32_t query_count) +{ + struct vn_command_buffer *cmd = vn_command_buffer_from_handle(cmd_handle); + struct vn_query_pool *query_pool = vn_query_pool_from_handle(pool_handle); + + if (!query_pool->feedback) return; - /* Per 1.3.255 spec "If queries are used while executing a render pass - * instance that has multiview enabled, the query uses N consecutive query - * indices in the query pool (starting at query) where N is the number of - * bits set in the view mask in the subpass the query is used in." - */ - const uint32_t query_count = - cmd->builder.view_mask ? util_bitcount(cmd->builder.view_mask) : 1; - if (!vn_cmd_query_batch_push(cmd, pool, query, query_count)) + struct vn_feedback_query_batch *batch = vn_cmd_query_batch_alloc( + cmd->pool, query_pool, query, query_count, false); + if (!batch) cmd->state = VN_COMMAND_BUFFER_STATE_INVALID; + + list_addtail(&batch->head, &cmd->builder.query_batches); } void @@ -1855,8 +1842,8 @@ vn_CmdResetQueryPool(VkCommandBuffer commandBuffer, VN_CMD_ENQUEUE(vkCmdResetQueryPool, commandBuffer, queryPool, firstQuery, queryCount); - vn_feedback_query_cmd_record(commandBuffer, queryPool, firstQuery, - queryCount, false); + vn_cmd_add_query_reset_feedback(commandBuffer, queryPool, firstQuery, + queryCount); } void @@ -1990,13 +1977,10 @@ vn_CmdExecuteCommands(VkCommandBuffer commandBuffer, struct vn_command_buffer *primary_cmd = vn_command_buffer_from_handle(commandBuffer); - if (primary_cmd->builder.in_render_pass) { - for (uint32_t i = 0; i < commandBufferCount; i++) { - struct vn_command_buffer *secondary_cmd = - vn_command_buffer_from_handle(pCommandBuffers[i]); - assert(secondary_cmd->builder.in_render_pass); - vn_cmd_merge_batched_query_feedback(primary_cmd, secondary_cmd); - } + for (uint32_t i = 0; i < commandBufferCount; i++) { + struct vn_command_buffer *secondary_cmd = + vn_command_buffer_from_handle(pCommandBuffers[i]); + vn_cmd_merge_batched_query_feedback(primary_cmd, secondary_cmd); } } diff --git a/src/virtio/vulkan/vn_command_buffer.h b/src/virtio/vulkan/vn_command_buffer.h index 73fc91d92d5..1ce050032c5 100644 --- a/src/virtio/vulkan/vn_command_buffer.h +++ b/src/virtio/vulkan/vn_command_buffer.h @@ -14,6 +14,7 @@ #include "vn_common.h" #include "vn_cs.h" +#include "vn_feedback.h" struct vn_command_pool { struct vn_object_base base; @@ -61,8 +62,6 @@ struct vn_command_buffer_builder { const struct vn_image **present_src_images; /* track if inside a render pass instance */ bool in_render_pass; - /* track whether the active render pass instance is suspending */ - bool suspending; /* track the active subpass for view mask used in the subpass */ uint32_t subpass_index; /* track the active view mask inside a render pass instance */ @@ -96,4 +95,10 @@ VK_DEFINE_HANDLE_CASTS(vn_command_buffer, VkCommandBuffer, VK_OBJECT_TYPE_COMMAND_BUFFER) +struct vn_feedback_query_batch * +vn_cmd_query_batch_alloc(struct vn_command_pool *pool, + struct vn_query_pool *query_pool, + uint32_t query, + uint32_t query_count, + bool copy); #endif /* VN_COMMAND_BUFFER_H */ diff --git a/src/virtio/vulkan/vn_feedback.c b/src/virtio/vulkan/vn_feedback.c index 8b2e01d70b3..0feafedb886 100644 --- a/src/virtio/vulkan/vn_feedback.c +++ b/src/virtio/vulkan/vn_feedback.c @@ -513,7 +513,7 @@ vn_feedback_cmd_record(VkCommandBuffer cmd_handle, return vn_EndCommandBuffer(cmd_handle); } -void +static void vn_feedback_query_cmd_record(VkCommandBuffer cmd_handle, VkQueryPool pool_handle, uint32_t query, diff --git a/src/virtio/vulkan/vn_feedback.h b/src/virtio/vulkan/vn_feedback.h index 7084ff221d8..6355da9d5f4 100644 --- a/src/virtio/vulkan/vn_feedback.h +++ b/src/virtio/vulkan/vn_feedback.h @@ -146,13 +146,6 @@ vn_feedback_event_cmd_record(VkCommandBuffer cmd_handle, VkResult status, bool sync2); -void -vn_feedback_query_cmd_record(VkCommandBuffer cmd_handle, - VkQueryPool pool_handle, - uint32_t query, - uint32_t count, - bool copy); - VkResult vn_feedback_query_batch_record(VkDevice dev_handle, struct vn_feedback_cmd_pool *feedback_pool, diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 045d88f2aed..031366f0163 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -21,6 +21,7 @@ #include "vn_device.h" #include "vn_device_memory.h" #include "vn_physical_device.h" +#include "vn_query_pool.h" #include "vn_renderer.h" #include "vn_wsi.h" @@ -508,6 +509,59 @@ vn_get_feedback_cmd_handle(struct vn_queue_submission *submit, : &feedback_cmds->cmd_buffer_infos[cmd_index].commandBuffer; } +static VkResult +vn_combine_query_feedback_batches(VkCommandBuffer *src_cmd_handles, + uint32_t cmd_buffer_count, + uint32_t stride, + struct vn_feedback_cmd_pool *feedback_pool, + struct list_head *combined_query_batches) +{ + struct vn_command_pool *cmd_pool = + vn_command_pool_from_handle(feedback_pool->pool); + + uintptr_t cmd_handle_ptr = (uintptr_t)src_cmd_handles; + for (uint32_t i = 0; i < cmd_buffer_count; i++) { + struct vn_command_buffer *cmd_buffer = + vn_command_buffer_from_handle(*(VkCommandBuffer *)cmd_handle_ptr); + + list_for_each_entry_safe(struct vn_feedback_query_batch, new_batch, + &cmd_buffer->builder.query_batches, head) { + + if (!new_batch->copy) { + list_for_each_entry_safe(struct vn_feedback_query_batch, + combined_batch, combined_query_batches, + head) { + /* If we previously added a query feedback that is now getting + * reset, remove it since it is now a no-op and the deferred + * feedback copy will cause a hang waiting for the reset query + * to become available. + */ + if (combined_batch->copy && + (vn_query_pool_to_handle(combined_batch->query_pool) == + vn_query_pool_to_handle(new_batch->query_pool)) && + combined_batch->query >= new_batch->query && + combined_batch->query <= + new_batch->query + new_batch->query_count) { + list_move_to(&combined_batch->head, + &cmd_pool->free_query_batches); + } + } + } + struct vn_feedback_query_batch *batch = vn_cmd_query_batch_alloc( + cmd_pool, new_batch->query_pool, new_batch->query, + new_batch->query_count, new_batch->copy); + if (!batch) + return VK_ERROR_OUT_OF_HOST_MEMORY; + + list_addtail(&batch->head, combined_query_batches); + } + + cmd_handle_ptr += stride; + } + + return VK_SUCCESS; +} + static VkResult vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit, uint32_t cmd_buffer_count, @@ -530,10 +584,21 @@ vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit, if (dev->queue_families[pool_index] == queue_vk->queue_family_index) break; } + struct vn_feedback_cmd_pool *feedback_cmd_pool = + &dev->cmd_pools[pool_index]; + + struct list_head combined_query_batches; + list_inithead(&combined_query_batches); + + result = vn_combine_query_feedback_batches( + src_cmd_handles, cmd_buffer_count, stride, feedback_cmd_pool, + &combined_query_batches); + if (result != VK_SUCCESS) + return result; - result = vn_feedback_query_batch_record( - dev_handle, &dev->cmd_pools[pool_index], src_cmd_handles, - cmd_buffer_count, stride, feedback_cmd_handle); + result = vn_feedback_query_batch_record(dev_handle, feedback_cmd_pool, + &combined_query_batches, + feedback_cmd_handle); if (result != VK_SUCCESS) return result; From 4e4cd7065b09c3289fb93b430ae07f36a27d048c Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 1 Nov 2023 12:48:13 +0000 Subject: [PATCH 048/356] .pick_status.json: Update to e4a1bc70dd739ca8addddc940af08312b038e288 --- .pick_status.json | 250 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 250 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 0d7ee486118..aca4addf7da 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,254 @@ [ + { + "sha": "e4a1bc70dd739ca8addddc940af08312b038e288", + "description": "radv: bind the non-dynamic graphics state from the pipeline unconditionally", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4e912c972b98e22a731a8a1b019550c8292eefb2", + "description": "pvr: Update AM62 DSS compatible string to match upstream", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "024dab650ea73ba3897093e190b80c99945f6589", + "description": "radv/ci: enable RADV_DEBUG=nomeshshader for vkcts-navi31-valve", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a97160cad8d142ebbfab139e7673ffb26c544aed", + "description": "radv: add RADV_DEBUG=nomeshshader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "15f92c3b2c67a7fd29d769729543e7be8ba3fe65", + "description": "radv/ci: update list of expected failures/flakes for NAVI31", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "da7e6f303b1a8ed7e9c13bccb6e4c90ff356a914", + "description": "radv: Add some initial graphics DGC preprocessing support.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c4fb82744158adbe8799370a1f35823b4b47a8a5", + "description": "radv: Add compute DGC preprocessing support.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "108227a84e8d778f2ddf5c32386bece6b0b5203e", + "description": "radv: Add DGC preprocessing barrier support.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f7830240acc43280154dacd0ab075dcaa0051da8", + "description": "rusticl/mesa/screen: do not derefence the entire pipe_screen struct", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "71064879d114fafbe7b104ada2c34cbe5317bf14", + "description": "anv: Override vendorID for Diablo IV", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "03705f37bfabf18f13c67b739994a4aedac5d5cb", + "description": "r600: Replace TGSI I/O semantics with shader_enums", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "29c544abc013f3d460b6b900da38ed1b454501a3", + "description": "r600: Fix outputs typo in print_pipe_info", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5419f52967fea83a2e28a2b1817548ed07ec2d00", + "description": "r600/sfn: Split r600_shader_from_nir into common and Gallium parts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c78aa6a417d40bb221c6f3a8cb07a531313cb79e", + "description": "r600/sfn: Make r600 header include paths relative", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "03d102f576857474daf9532267530b6193149212", + "description": "r600: Split r600_shader.h into common and Gallium parts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bcb34884c23c48b80dbaa3a26345b3073dbe3e64", + "description": "r600: Remove Gallium dependencies in r600_asm", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b7e5a8b5ca6078bb79fddaef89b66ce78a72e14f", + "description": "r600: Replace R600_ERR with R600_ASM_ERR in shader code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "10ef3b7fe3f21e3a563da3930d7edf8a3e49da38", + "description": "r600: Remove Gallium dependencies in r600_isa", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "564b97219641941ab414b863e78a13e9cfc1bbe6", + "description": "r600: Move r600_create_vertex_fetch_shader to r600_shader.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5521840cbca21dfd26aa76f0f1c84077e72c4b91", + "description": "ci: Only strip debug symbols", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7d0ae38ef75c10b548fb2def88c191a353e180b6", + "description": "nir: Workaround MSVC internal compiler error in ARM64 build", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "97553affc67420319c4a06360c97be277eb73b74", + "description": "microsoft: Disable post-merge CI for Windows", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "122ed7cd8064b88aae77e9a849c2953b635afeff", + "description": "pvr: rename some more instances of 'reserved' to 'carveout' for consistency", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2dfb0f6ee1d9ad00097bf1a4361290cea3c8100", + "description": "broadcom: use `.never-post-merge-rules` for all rpi tests", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "163c6fe4c4a9b15f93c553a1eacd61ec17fafc4f", + "description": "ci: add `.never-post-merge-rules` to avoid re-running pre-merge jobs after merging", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "4cdd094ae1e97d857a6b9dbc291d7bbe6ea266ac", "description": "virgl: Use host reported limits for max outputs", From 14fac5200d4e5384c71d999318c9f891f6d3822c Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Fri, 27 Oct 2023 23:27:15 +0200 Subject: [PATCH 049/356] rusticl/mesa/screen: do not derefence the entire pipe_screen struct Apparently the dereferences made tsan report data races on the pipe_screen object. Cc: mesa-stable Signed-off-by: Karol Herbst Part-of: (cherry picked from commit f7830240acc43280154dacd0ab075dcaa0051da8) --- .pick_status.json | 2 +- .../frontends/rusticl/mesa/pipe/screen.rs | 45 +++++++++---------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index aca4addf7da..671845e903c 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -84,7 +84,7 @@ "description": "rusticl/mesa/screen: do not derefence the entire pipe_screen struct", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs index cb89345afb5..c3272f4c321 100644 --- a/src/gallium/frontends/rusticl/mesa/pipe/screen.rs +++ b/src/gallium/frontends/rusticl/mesa/pipe/screen.rs @@ -234,9 +234,13 @@ impl PipeScreen { } fn compute_param_wrapped(&self, cap: pipe_compute_cap, ptr: *mut c_void) -> i32 { - let s = &mut unsafe { *self.screen }; unsafe { - s.get_compute_param.unwrap()(self.screen, pipe_shader_ir::PIPE_SHADER_IR_NIR, cap, ptr) + (*self.screen).get_compute_param.unwrap()( + self.screen, + pipe_shader_ir::PIPE_SHADER_IR_NIR, + cap, + ptr, + ) } } @@ -245,10 +249,7 @@ impl PipeScreen { } pub fn name(&self) -> String { - unsafe { - let s = *self.screen; - c_string_to_string(s.get_name.unwrap()(self.screen)) - } + unsafe { c_string_to_string((*self.screen).get_name.unwrap()(self.screen)) } } pub fn device_node_mask(&self) -> Option { @@ -274,10 +275,7 @@ impl PipeScreen { } pub fn device_vendor(&self) -> String { - unsafe { - let s = *self.screen; - c_string_to_string(s.get_device_vendor.unwrap()(self.screen)) - } + unsafe { c_string_to_string((*self.screen).get_device_vendor.unwrap()(self.screen)) } } pub fn device_type(&self) -> pipe_loader_device_type { @@ -296,9 +294,7 @@ impl PipeScreen { pub fn cl_cts_version(&self) -> &CStr { unsafe { - let s = *self.screen; - - let ptr = s + let ptr = (*self.screen) .get_cl_cts_version .map_or(ptr::null(), |get_cl_cts_version| { get_cl_cts_version(self.screen) @@ -318,8 +314,9 @@ impl PipeScreen { target: pipe_texture_target, bindings: u32, ) -> bool { - let s = &mut unsafe { *self.screen }; - unsafe { s.is_format_supported.unwrap()(self.screen, format, target, 0, 0, bindings) } + unsafe { + (*self.screen).is_format_supported.unwrap()(self.screen, format, target, 0, 0, bindings) + } } pub fn get_timestamp(&self) -> u64 { @@ -346,9 +343,7 @@ impl PipeScreen { } pub fn shader_cache(&self) -> Option { - let s = &mut unsafe { *self.screen }; - - let ptr = if let Some(func) = s.get_disk_shader_cache { + let ptr = if let Some(func) = unsafe { *self.screen }.get_disk_shader_cache { unsafe { func(self.screen) } } else { ptr::null_mut() @@ -358,8 +353,7 @@ impl PipeScreen { } pub fn finalize_nir(&self, nir: &NirShader) { - let s = &mut unsafe { *self.screen }; - if let Some(func) = s.finalize_nir { + if let Some(func) = unsafe { *self.screen }.finalize_nir { unsafe { func(self.screen, nir.get_nir().cast()); } @@ -368,15 +362,18 @@ impl PipeScreen { pub(super) fn unref_fence(&self, mut fence: *mut pipe_fence_handle) { unsafe { - let s = &mut *self.screen; - s.fence_reference.unwrap()(s, &mut fence, ptr::null_mut()); + (*self.screen).fence_reference.unwrap()(self.screen, &mut fence, ptr::null_mut()); } } pub(super) fn fence_finish(&self, fence: *mut pipe_fence_handle) { unsafe { - let s = &mut *self.screen; - s.fence_finish.unwrap()(s, ptr::null_mut(), fence, OS_TIMEOUT_INFINITE as u64); + (*self.screen).fence_finish.unwrap()( + self.screen, + ptr::null_mut(), + fence, + OS_TIMEOUT_INFINITE as u64, + ); } } } From 3cb8275141775d1eb3a2e7aee43a9755b9e86835 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 30 Oct 2023 15:26:15 +0100 Subject: [PATCH 050/356] radv: bind the non-dynamic graphics state from the pipeline unconditionally The following sequence is valid (although weird) but many other drivers (including RADV) were broken: - bind pipeline with some static state - set state command for that static state (to a bad value) - bind the same pipeline again - draw Fixes new dEQP-VK.dynamic_state.*.double_static_bind. Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit e4a1bc70dd739ca8addddc940af08312b038e288) --- .pick_status.json | 2 +- src/amd/vulkan/radv_cmd_buffer.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 671845e903c..694efedf315 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4,7 +4,7 @@ "description": "radv: bind the non-dynamic graphics state from the pipeline unconditionally", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index d8a0ab5caf3..57b720520a8 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -6618,6 +6618,11 @@ radv_CmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipeline case VK_PIPELINE_BIND_POINT_GRAPHICS: { struct radv_graphics_pipeline *graphics_pipeline = radv_pipeline_to_graphics(pipeline); + /* Bind the non-dynamic graphics state from the pipeline unconditionally because some PSO + * might have been overwritten between two binds of the same pipeline. + */ + radv_bind_dynamic_state(cmd_buffer, &graphics_pipeline->dynamic_state); + if (cmd_buffer->state.graphics_pipeline == graphics_pipeline) return; radv_mark_descriptor_sets_dirty(cmd_buffer, pipelineBindPoint); @@ -6686,8 +6691,6 @@ radv_CmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipeline cmd_buffer->state.dirty |= RADV_CMD_DIRTY_RBPLUS; } - radv_bind_dynamic_state(cmd_buffer, &graphics_pipeline->dynamic_state); - radv_bind_vs_input_state(cmd_buffer, graphics_pipeline); radv_bind_multisample_state(cmd_buffer, &graphics_pipeline->ms); From 4ac0a8786802d10e5e7cd07955716cbea983bc0b Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 1 Nov 2023 14:52:52 +0000 Subject: [PATCH 051/356] .pick_status.json: Update to faed5d647f2416bb0ce3a9d33a3955169c70dc52 --- .pick_status.json | 90 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 694efedf315..a81f38714e5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,94 @@ [ + { + "sha": "faed5d647f2416bb0ce3a9d33a3955169c70dc52", + "description": "iris: handle tile case where cso width, height is zero", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "d13c81a2c3bfe9a81c6310d393add7fd0e53b11c", + "notes": null + }, + { + "sha": "a19e46f5d05293bd933914a4645602593da8fb80", + "description": "radv: Implement workaround for unaligned buffer/image copies.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ec0605ff723d5d9301fc4c9cf18bd6f2892fc5fc", + "description": "radv: Add temporary BO for transfer queues.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8156c923ee9a0e9a8084ae09e6e91cb1ac41aeb0", + "description": "radv: Implement buffer/image copies on transfer queues.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed21f1c96257f1fc7fded5db636707dd443779f9", + "description": "radv: Expose radv_get_dcc_max_uncompressed_block_size function.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "848f2f2b996b5b90e8c03ecfb086951d5351b5cd", + "description": "radv: Remove always false tmz variables from SDMA functions.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "17daa08dff0cf9479b27ed7402de61336607ec10", + "description": "radv: emit COMPUTE_PIPELINESTAT_ENABLE for CS invocations on ACE", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "a9945216ba223d57ade453d5f855edd93dd3b200", + "notes": null + }, + { + "sha": "9a0a77cb53d0d31c7a090d06ac905d69e9c1131c", + "description": "radv: fix compute shader invocations query on compute queue on GFX6", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "a9945216ba223d57ade453d5f855edd93dd3b200", + "notes": null + }, + { + "sha": "46dc02354ae0df85440a1d9cc5dc0d4ef1e534ca", + "description": "radv: adjust binning settings to improve performance on GFX9", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "e4a1bc70dd739ca8addddc940af08312b038e288", "description": "radv: bind the non-dynamic graphics state from the pipeline unconditionally", From 18397e51adc40a814e945181196c4b5d94f5bb51 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 30 Oct 2023 12:50:56 +0100 Subject: [PATCH 052/356] radv: fix compute shader invocations query on compute queue on GFX6 Looks like GFX6 always writes the number of compute shader invocations at offset 0 when used on compute queue. This fixes dEQP-VK.query_pool.statistics_query.*_cq on GFX6. Fixes: a9945216ba2 ("radv: fix COMPUTE_SHADER_INVOCATIONS query on compute queue") Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit 9a0a77cb53d0d31c7a090d06ac905d69e9c1131c) --- .pick_status.json | 2 +- src/amd/vulkan/radv_query.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index a81f38714e5..757fb016ad9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -74,7 +74,7 @@ "description": "radv: fix compute shader invocations query on compute queue on GFX6", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a9945216ba223d57ade453d5f855edd93dd3b200", "notes": null diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index 7e43604c8bc..02339b508be 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -1755,7 +1755,7 @@ emit_begin_query(struct radv_cmd_buffer *cmd_buffer, struct radv_query_pool *poo radv_update_hw_pipelinestat(cmd_buffer); - if (cmd_buffer->qf == RADV_QUEUE_COMPUTE) { + if (radv_cmd_buffer_uses_mec(cmd_buffer)) { uint32_t cs_invoc_offset = radv_get_pipelinestat_query_offset(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT); va += cs_invoc_offset; @@ -1916,7 +1916,7 @@ emit_end_query(struct radv_cmd_buffer *cmd_buffer, struct radv_query_pool *pool, va += pipelinestat_block_size; - if (cmd_buffer->qf == RADV_QUEUE_COMPUTE) { + if (radv_cmd_buffer_uses_mec(cmd_buffer)) { uint32_t cs_invoc_offset = radv_get_pipelinestat_query_offset(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT); va += cs_invoc_offset; From 2b66b23045a48cf4f6370db06a60302632f6abac Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 30 Oct 2023 14:04:38 +0100 Subject: [PATCH 053/356] radv: emit COMPUTE_PIPELINESTAT_ENABLE for CS invocations on ACE This register seems needed to enable compute shader shader invocations on GFX7. On GFX8+ it's working fine without emitting this register but I think it doesn't hurt. This fixes dEQP-VK.query_pool.statistics_query.*_cq on GFX7. Fixes: a9945216ba2 ("radv: fix COMPUTE_SHADER_INVOCATIONS query on compute queue") Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit 17daa08dff0cf9479b27ed7402de61336607ec10) --- .pick_status.json | 2 +- src/amd/vulkan/si_cmd_buffer.c | 32 ++++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 757fb016ad9..65a1149f5a1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -64,7 +64,7 @@ "description": "radv: emit COMPUTE_PIPELINESTAT_ENABLE for CS invocations on ACE", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a9945216ba223d57ade453d5f855edd93dd3b200", "notes": null diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c index 8fe25db82ae..ecb00d98575 100644 --- a/src/amd/vulkan/si_cmd_buffer.c +++ b/src/amd/vulkan/si_cmd_buffer.c @@ -1277,11 +1277,19 @@ gfx10_cs_emit_cache_flush(struct radeon_cmdbuf *cs, enum amd_gfx_level gfx_level } if (flush_bits & RADV_CMD_FLAG_START_PIPELINE_STATS) { - radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0)); - radeon_emit(cs, EVENT_TYPE(V_028A90_PIPELINESTAT_START) | EVENT_INDEX(0)); + if (qf == RADV_QUEUE_GENERAL) { + radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0)); + radeon_emit(cs, EVENT_TYPE(V_028A90_PIPELINESTAT_START) | EVENT_INDEX(0)); + } else if (qf == RADV_QUEUE_COMPUTE) { + radeon_set_sh_reg(cs, R_00B828_COMPUTE_PIPELINESTAT_ENABLE, S_00B828_PIPELINESTAT_ENABLE(1)); + } } else if (flush_bits & RADV_CMD_FLAG_STOP_PIPELINE_STATS) { - radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0)); - radeon_emit(cs, EVENT_TYPE(V_028A90_PIPELINESTAT_STOP) | EVENT_INDEX(0)); + if (qf == RADV_QUEUE_GENERAL) { + radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0)); + radeon_emit(cs, EVENT_TYPE(V_028A90_PIPELINESTAT_STOP) | EVENT_INDEX(0)); + } else if (qf == RADV_QUEUE_COMPUTE) { + radeon_set_sh_reg(cs, R_00B828_COMPUTE_PIPELINESTAT_ENABLE, S_00B828_PIPELINESTAT_ENABLE(0)); + } } } @@ -1469,11 +1477,19 @@ si_cs_emit_cache_flush(struct radeon_winsys *ws, struct radeon_cmdbuf *cs, enum si_emit_acquire_mem(cs, is_mec, gfx_level == GFX9, cp_coher_cntl); if (flush_bits & RADV_CMD_FLAG_START_PIPELINE_STATS) { - radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0)); - radeon_emit(cs, EVENT_TYPE(V_028A90_PIPELINESTAT_START) | EVENT_INDEX(0)); + if (qf == RADV_QUEUE_GENERAL) { + radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0)); + radeon_emit(cs, EVENT_TYPE(V_028A90_PIPELINESTAT_START) | EVENT_INDEX(0)); + } else if (qf == RADV_QUEUE_COMPUTE) { + radeon_set_sh_reg(cs, R_00B828_COMPUTE_PIPELINESTAT_ENABLE, S_00B828_PIPELINESTAT_ENABLE(1)); + } } else if (flush_bits & RADV_CMD_FLAG_STOP_PIPELINE_STATS) { - radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0)); - radeon_emit(cs, EVENT_TYPE(V_028A90_PIPELINESTAT_STOP) | EVENT_INDEX(0)); + if (qf == RADV_QUEUE_GENERAL) { + radeon_emit(cs, PKT3(PKT3_EVENT_WRITE, 0, 0)); + radeon_emit(cs, EVENT_TYPE(V_028A90_PIPELINESTAT_STOP) | EVENT_INDEX(0)); + } else if (qf == RADV_QUEUE_COMPUTE) { + radeon_set_sh_reg(cs, R_00B828_COMPUTE_PIPELINESTAT_ENABLE, S_00B828_PIPELINESTAT_ENABLE(0)); + } } } From c97af690c9c7d3d7bc52636e02a0146c740e4a83 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 1 Nov 2023 17:27:10 +0000 Subject: [PATCH 054/356] VERSION: bump for 23.3.0-rc2 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 5c34834d2af..c3c48c1b23b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -23.3.0-rc1 +23.3.0-rc2 From 364214f1c71ae0be65783a6e9f0ec1d0ee5a40b2 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Sat, 4 Nov 2023 14:09:43 +0000 Subject: [PATCH 055/356] .pick_status.json: Update to 1f1ec1c6bcc2a32a3c1df8c2cc7a2f4e7139b7ec --- .pick_status.json | 1830 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1830 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 65a1149f5a1..cffbd224473 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,1834 @@ [ + { + "sha": "1f1ec1c6bcc2a32a3c1df8c2cc7a2f4e7139b7ec", + "description": "rusticl: Show an error message if the version of bindgen can't be detected", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e9f725c7414c18fa0ce1e5381ec9c281c6c62c2a", + "description": "ci/rules: add missing clang-format files to what needs containers to build", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5be1972f618626ccca01c4941157bd376fc2ade9", + "description": "ci: bump image tags to rebuild deqp", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "37970fa70376bb8a175701397afc985e85a732ff", + "description": "ci/build-deqp: print more detailed information about what deqp version is running", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "124b4097f32cfee511762b187f1450e6820def3e", + "description": "ci/build-deqp: move mkdir earlier", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a61dcdd4b1dc3c2ce5229c3f66e1327a12059968", + "description": "ci/build-deqp: split deqp version into a variable", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "22f4ca2cf3c271f89f2f902f35647c098ce4c232", + "description": "ci/build-deqp: stop ignoring failures while fetching patches", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "be18be9deb0d22dfdc34e830e44df0d62a01f22e", + "description": "Revert \"ci: backport two mesh/task query fixes for VKCTS\"", + "nominated": false, + "nomination_type": 2, + "resolution": 4, + "main_sha": null, + "because_sha": "dcc4e1b4d78bf964f001d6b8b907ab7ac263fb87", + "notes": null + }, + { + "sha": "655cbf203d15e6fc89f620eb745f6b04ae794fa6", + "description": "docs/features: mark rusticl gl_sharing as done", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d67d501af46f04bf12a16110f3a1e86b565cac96", + "description": "tu/drm/virtio: Switch to vdrm helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0e3584df44d71636ff4d5b9150a936e9296afb18", + "description": "freedreno/drm/virtio: Switch to vdrm helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "06e57e32310f51e752d7798e287400e8edc10312", + "description": "virtio: Add vdrm native-context helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "53ccb421a272ec88598fb942bcb0bcd19cba11fa", + "description": "freedreno/drm: Simplify backend mmap impl", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6f467fc6a37060777060d310c8209fa70719be1b", + "description": "freedreno/drm: Add more APIs to per backend API", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b90244776added6cfce76e68d37e142607e09040", + "description": "virtio/drm: Split out common virtgpu drm structs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9bdee8cd39019b3bdd1b41789a80f7cf0aaaa0b5", + "description": "vc4/ci: comment why piglit is disabled", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c2db19f4965e661a93bee7f2aaed4c0aeffe45c8", + "description": "anv: setup the TR-TT vma heap", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0a120edfb8d4072aa479631602c69b6919886831", + "description": "anv/sparse: extract anv_sparse_bind()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "544c5c006c3b0f8b9514bf8c8b584d8ec47e650b", + "description": "intel/genxml: add the Gen12+ TR-TT registers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1af1426542751f89980dce432498c38a1f86dc08", + "description": "anv/sparse: also print bind->address at dump_anv_vm_bind", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b94d7dbe66fed2401083f4eaff286066e3bffa57", + "description": "anv/sparse: join multiple NULL binds when possible", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2fc0bbe8140547d180d293021f36abf8d19986b4", + "description": "anv/sparse: join multiple bind operations when possible", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2883c6ddaa02bbf284b5cb148d741d65e87e9fa7", + "description": "anv: alloc client visible addresses at the bottom of vma_hi", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e1b50074feb5c5eff2e464064ac5d6c4b8d78662", + "description": "anv: don't forget to destroy device->vma_mutex", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0a072bb31c0aa99ba6f8348e0e601053b643a584", + "description": "rusticl/context: fix importing gl cube maps", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "06a2258b4be8aa9a7095f060000500ba7f7ba415", + "description": "radeonsi: hack for importing 3D textures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "56f934103dcaebe00522d15584f2396811c51b1a", + "description": "radeonsi: support importing arbitrary resources", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7e031078dd72bb3a4105f6a09a7cef411bbcd689", + "description": "rusticl: Advertise cl_khr_gl_sharing extension", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "59287a122381139c3deaa6ee85d9d044b0546840", + "description": "rusticl: Flush objects just before importing them", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1c3dde7ba6028c62a2489b46467cbfdf1e78a5c1", + "description": "rusticl: Add support for cube maps", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2645003bdc527b5dc046366fce5e65b44b27334f", + "description": "rusticl: Create CL mem objects from GL", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0bafe8be2c51790f558fd2a58f7c6b8ea967300e", + "description": "rusticl/format: Add conversion table for GL->CL", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "57dfc013a6693736ee431224a5983f4fc7224c74", + "description": "rusticl: Add functions to create CL ctxs from GL, and also to query them", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "425d7acd4aabc4558140ec7ec89347de6e62be88", + "description": "rusticl/device: Enable gl_sharing only if create_fence_fd is implemented", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7bb131964ba18f6428bacbeb850e940000240fef", + "description": "rusticl/device: Function to check for gl interop support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c4c58aa26f39ce19d7d84a02b5f4568f57e87bd0", + "description": "rusticl: Add xplat helpers to dynamic link interop functions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1396dc1c387a9f9a8b16ad358ee12a025159cc98", + "description": "mesa/st, dri2, wgl, glx: Modify flush_objects interop func to export a fence_fd", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "663cef26d0ba93dc3237b950046bc7fa48a879d8", + "description": "mesa/st: Add new data to mesa_glinterop", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d52f35fa1a9e87da1c1aebe39b1063a35b0a6341", + "description": "iris: Fixups in resource_get_handle and resource_from_handle", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "df0623e51a80d9d14afe7648cd74554cd91b3547", + "description": "rusticl, meson: Add gl/egl/glx bindings", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bcd7538d03ef6514c62ca48ea0e43737b1ad41dd", + "description": "rusticl, meson: Move libc functions to their own crate", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "84db4d56985da274a3c6007ad24f219437db3469", + "description": "micosoft: decouple microsoft vulkan driver and compiler from gallium", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8bcb996a885bfef854e2afbba2f8316674589fcd", + "description": "micosoft: define enum dxil_tex_wrap to avoid the usage of enum pipe_tex_wrap", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a36ad49e0e6f436f8409bed3f742098b34abb79d", + "description": "microsoft/clc: Use 128 instead of PIPE_MAX_SHADER_SAMPLER_VIEWS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1181c2509da565cf32bb59f4a969877dc5fc55bd", + "description": "microsoft/clc: Using sampler_id instead PIPE_MAX_SHADER_SAMPLER_VIEWS for dxil_lower_sample_to_txf_for_integer_tex", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e51acb65acfce95fd6c3e48ade2e182d7f2e3ff1", + "description": "dzn: Fix memory type sorting", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c8e39683da380b331f51fbbeb944df0f1a3f6d11", + "description": "vulkan/video: add h265 header encoders.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d46162981a78e24850dca085b2da95857c56a158", + "description": "vulkan/video: add h264 headers encode", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8243145f02c94315de898102f741edfb340c01b3", + "description": "vulkan/video: add a h265 level translator.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5542b51affff464649d6b96eab945d057866ad31", + "description": "vulkan/video: add h264 level idc convertor utility", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1782ab4d8bab0b0e1b57a334b8f802bd821421c0", + "description": "util: add a bitstream encoder for video stream headers.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "72f52329cd7166bf46d1544e7d93705d3ff9a7dd", + "description": "vulkan/video: add a nal_unit lookup for hevc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fee258de27d0ff59aca105146d3cfdc80ce44c10", + "description": "vulkan/video: add h264 nal enum", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8dd97080d8c571d8df0bf6eccc152f7d1689727f", + "description": "vulkan/video: add h265 encode support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5cb46f1ce70a513fd90f676bcfd852667b041f43", + "description": "vulkan/video: add support for h264 encode to common code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b84c58d7278862d1aab22bccabfde3de1090f041", + "description": "vulkan: update video headers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8a635e516ebb12411de8055c3405f36be43269b3", + "description": "zink: Fix crash on zink_create_screen error path", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "0c2045553fe4b3f337935cf007ba3920497e51a0", + "notes": null + }, + { + "sha": "5a85f67fa47c11136340f0e25ea14287adeb9527", + "description": "nvk: Assert no storage images on Kepler", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d5753a89a6785eb328431db893498f6f42c88fb9", + "description": "nvk: Drop a bogus assert", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0ce49d43476295b2df8f4d330866d93607b9feb6", + "description": "nvk: Fix nvk_heap_free() for contiguous heaps", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "57d6722d797741675ec2dde101128276d11cde03", + "description": "nvk: Force all mappable BOs into GART pre-Maxwell", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5e9dcffffde8b4ecf78531c0285a0d296e1fc7a9", + "description": "nvk: Should use alignment instead of align", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "87686a22205cf338b59a33b8ec21f9b3d8ad3d29", + "notes": null + }, + { + "sha": "80b87c18d1630dd622bf58e56f3fb3f39e9fb8ef", + "description": "ci: Try really hard to print final result string", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c826f70c3759fb4bfc6c7dbf314789e133b6934b", + "description": "rpi4/ci: remove `spec@!opengl 1.1@depthstencil-default_fb-drawpixels-32f_24_8_rev samples=2` from fails as it's a flaky test and already marked as such", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed904300275ad637d9ade527e0e72b9b3709d9b0", + "description": "rpi4/ci: move `spec@!opengl 1.1@depthstencil-default_fb-drawpixels-24_8 samples=2` from fails for flakes after an UnexpectedPass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9f281899dc7cd9d8abf220e2050d219069df3ed3", + "description": "rpi4/ci: add more known dEQP-EGL.functional.*.*_context.gles*.other failures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "67df2f29eba99c37179c5d54d10ce1a2274bb426", + "description": "vulkan: Support loader interface v7", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "228329f4da025db41a7144e7a2a7fc1bfd4c907a", + "description": "vulkan: Consolidate common ICD methods", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "32f0034ec9b0b2a41dbdf6f5d14482852d06de6d", + "description": "vulkan: Remove no-longer-needed prototypes for ICD entrypoints", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "af2980e5b9d80c6ab8305cc04d6a1d3d44618a09", + "description": "radeonsi/uvd_enc: Add VUI parameters in output bitstream", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "72fadf5faf990d1e7babf4d1a9c0eb20e99af379", + "description": "radeonsi/vce: Add VUI parameters in output bitstream", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5f70379e0deefee13eebf84a082e7d3c9e72b143", + "description": "radeonsi/vce: Tweak motion estimation params for better quality", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8dda860f83ac30d042dc6beb4438cc925d1fd130", + "description": "Revert \"radeon/radeon_vce: fix out of target bitrate in CBR mode (H.264)\"", + "nominated": true, + "nomination_type": 2, + "resolution": 0, + "main_sha": null, + "because_sha": "f7e7cf637e1b457d56b3aaf4d05c928ef9acff17", + "notes": null + }, + { + "sha": "bf95000d74d0353fbbd4da7179c49aad4f27f168", + "description": "radeonsi/uvd_enc: Fix leaking session info buffer", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9feff3d695e48cb16c2a9fedd0c2d720c6d16a25", + "description": "radeonsi/uvd_enc: Implement destroy_fence vfunc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "007ff4ea00c20b746123663b24a4f3af68775f2e", + "description": "radeonsi/uvd: Implement destroy_fence vfunc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fdc8da6eb4375eddeacbfc20875fff824e3b5cb6", + "description": "radeonsi/vce: Implement destroy_fence vfunc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8f621174da089e87e2bdd48e683defc83a3472c9", + "description": "v3d: use kmsro to create drm screen on real hw", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ef724ab695732bd9dd2bb86ff5d01f6f65717e71", + "description": "vulkan, tu, pvr: remove vk_render_pass_state::render_pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "227300345ed38377190b0eaf08694d5c42ee7e60", + "description": "radv: stop using vk_render_pass_state::render_pass", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c638e61ef5e2e7de097a9b5850eff75022330f68", + "description": "frontends/va: Map decoder and postproc surfaces for reading", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "33de58154f801eea84e5a9cdbda9cb6010e5ed47", + "description": "freedreno: Handle DRM_FORMAT_MOD_QCOM_TILED3 import", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a95ea2b6d66b4b3e5087a119db92162a850c5643", + "description": "freedreno: Fix modifier determination", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6ac133c646dd4f6f9d8f644b24da6aeae95c1ce3", + "description": "freedreno/drm: Fix race in zombie import", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "a192923f99e1f0c929b385fefd235453b44a3924", + "notes": null + }, + { + "sha": "4a627af0e3670d409d8140c1f9ee1c7ac86b5ddf", + "description": "nir: don't take the derivative of the array index in `nir_lower_tex`", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "b154a4154b4348a5ae053d0cde331aea902f7bcc", + "notes": null + }, + { + "sha": "28b79b2ea5d13f2499d78f903a335383bb38e5c1", + "description": "r600/sfn: Fixup component count only if intrinsic has it", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "33d878eb584cad621906811dbf8466aed86d57e8", + "notes": null + }, + { + "sha": "1662897294a3b6b0f8b6004163c016722c634651", + "description": "r600: Link with libgalliumvl, when enabling rusticl this is needed", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "33673bcc2ab84de0b1ff35519e7d7a58ef572fba", + "notes": null + }, + { + "sha": "022850ed0563f27d1a7321a2cac68866f2fd9f98", + "description": "r600: Add experimental get_compute_state_info", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7b419215048d63b33d3693206a7319d933c075d8", + "description": "nvc0: implement PIPE_CAP_TIMER_RESOLUTION", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "660f2eabe116972b82f2b6fcdf4869962f641d6d", + "notes": null + }, + { + "sha": "1039da140019f10ed88a4eee84354446c9a36ba0", + "description": "vulkan: added build dependencies for systems using non-standard prefixed X11 libs.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "47398c65ee7425cdb2480ba5be43d0a1565da2f3", + "description": "ci/radeonsi: add another flake", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fc9bab73a9294e7273c22646b40ab922b5179887", + "description": "radv/ci: document one more flake test", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5550c1daf4ee595ff339cdccfcd80434683780ad", + "description": "dzn: Use vk_properties helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0038f95b66692ecdc7e08b88fe7c821d8a0c0565", + "description": "asahi: Fix tools=all builds", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2313a517d2ddb6395eab802949b2f8461397b1d0", + "description": "v3d/ci: Remove minetest trace", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "16214710caaacf4fb8539498a3eb774644921249", + "description": "freedreno/ci: Remove minetest trace", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e8b3006bfdfdcec4116eee90fbf96161420f73cc", + "description": "util/rb_tree: Add augmented trees and interval trees", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "767e68972ef6816e2e5c398cc24d1d0ba8d52e82", + "description": "util/rb_tree: Fix editorconfig", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1793adbd3aa03cfec2a1e722362fee95aaba74df", + "description": "nir/validate: Allow array derefs on vectors on function/shader_temp", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0b3b4da82a6c006dfb9b0e2c885fe2c05c705f36", + "description": "nir: Handle array-deref-of-vec in var split passes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6bc8567bb98e3fca1a786b334702bc99a21c56b0", + "description": "nir: Handle array-deref-of-vec in vars_to_ssa", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "68c54c994a17a635123b85ef8d5f92a843742a5f", + "description": "nir/types: Support vectors in glsl_get_length()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1e1c450659ac1b34f59b9914fc2ea23954fea49b", + "description": "nir/lower_io_to_vector: Only call glsl_get_length() on arrays", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5db458eb2df31d4abd53ea7cef371e41302b3618", + "description": "ir2: Stop assuming glsl_get_length() returns 0 for vectors", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2db20af82eb92086ea3dee7bc9496e644eeb28d1", + "description": "v3d: Stop assuming glsl_get_length() returns 0 for vectors", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed79690196fed47590ef35c63f6145cd0b25235a", + "description": "vc4: Stop assuming glsl_get_length() returns 0 for vectors", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d17dc3e9cd7047020edc67db8d9fdd5c4cfc04f0", + "description": "nir: Stop assuming glsl_get_length() returns 0 for vectors", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a1f3c5eea7ced3668cda3137635ca080eae8484b", + "description": "nir: Add asserts to nir_phi_builder_value_set_block_def", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5adb33550737fe2add6cedbe2d43613de9530a5f", + "description": "nir: Use nir_builder to insert movs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "15ab4d397fbd24ac09daab03cc9cd0b750dbace2", + "description": "nir: Handle wildcards with casts in copy_prop_vars", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "ba2bd20f8732fb5a9163734447072cdaf6a633b3", + "notes": null + }, + { + "sha": "ae3b022fa0568e048ce2013affbd2ca60cc42ec6", + "description": "venus: fix query feedback batch leak and race upon submission", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": "5b24ab91e43a54b4f4081db52ebf6653b97e72bb", + "notes": null + }, + { + "sha": "d9fada16b919aa04ec18cfd58134cde1f84bd1c8", + "description": "d3d12: Don't support displaytargets that can't be supported by GDI/DXGI", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d4ed1ea31e1a7d71fa8f53a0316298bf8d163a75", + "description": "winsys/gdi: Update is_displaytarget_format_supported to reflect reality", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "823d40db4a1d306cdaf9e869795ed53958f288b9", + "description": "winsys/gdi: Handle 4444 and 1010102 texture formats", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "87c5589605271fd9c875fbf5ab5a8a31db243672", + "description": "wgl: Take pixelformat color channels into account for choosing a PFD", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2444a3cd465f6f11bdd3ab885cec7693c874b2f0", + "description": "intel/compiler: migrate WA 14013672992 to use WA framework", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "11282598e69602564960674ba378e577bdbff63d", + "description": "radv: Add radv_nir_lower_hit_attrib_derefs_tests", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f51227d25374ad5916ef5fd5ac4f9e7b7723f781", + "description": "radv/clang-format: Do not indent C++ modifiers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ba8d3afa56936971270a0759b5f57140f406b61e", + "description": "radv/nir: Handle boolean hit attribs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3a69424e09e0069d8f2ed04c7018cd17d66df743", + "description": "radv/nir: Add radv_nir_lower_hit_attrib_derefs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b7c582e5c7128658983f5e681f94f15576ed7edf", + "description": "radv: Add RADV_MAX_HIT_ATTRIB_DWORDS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4ef573735efc7f15d8b8700622a5865d33c34bf1", + "description": "glx: fix automatic zink fallback loading between hw and sw drivers on MacOS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c8b64452c076c1768beb23280de25faf2bcbe2c8", + "description": "dri: added build dependencies for systems using non-standard prefixed X11 libs.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "96d55d784cb4f047a4b58cd08330f42208641ea7", + "description": "util: Update util/libdrm.h stubs to allow loader.c to compile on MacOS.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ceeab44fd1ff116b5a3906044fc33588b65dcbda", + "description": "tu/virtio: Fix timeline semaphore support", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "f17c5297d7a01eb37815f96bbf3a87667a2f3261", + "notes": null + }, + { + "sha": "79b907f9412971b8f6316e1de757a2c3cfdbc603", + "description": "tu/msm: Fix timeline semaphore support", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "daefc6e2a40b70f0665b21cf7688e711b4b1ae09", + "notes": null + }, + { + "sha": "685fef18761098d62591258b07f3a601f352a1c1", + "description": "virgl/texture: Align destination box to block depth", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b280ea863d62296710ec2384b1f92eeee4e238fe", + "description": "virgl: fill the array_size value when using PIPE_TEXTURE_CUBE", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0a418561dab43a41f21ab209367f88c2ed9eb4a5", + "description": "radv: skip radv_remove_varyings for mesh shaders", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "9fa9782c1790e049be66d3bcd383fb3fdb79e1c5", + "notes": null + }, + { + "sha": "ed12be533e2673b08e958be32fbe5d6af2737fbc", + "description": "radv: call lower_array_deref_of_vec before lower_io_arrays_to_elements", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "570ed11303764150ae1da4fea549f72929f8171f", + "description": "asahi: Remove placeholder shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2c5437276097bb1f0641227057de916f7aa30c1d", + "description": "agx: Use CL for texture lowerings", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ef7eec2468ab0daf2b5417ceafe0988f2ff684d", + "description": "asahi: Add software-defined field to texture desc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "eecd8390d030accd1b4a2e884b29fd18ee86d90c", + "description": "asahi,agx: Plumb libagx", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0be124b77e3f4fa9fba7aa5b7212f7058412217b", + "description": "asahi: Deserialize libagx when opening device", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "75fe90dab01d786a2314e307a4acde9eacd8b7b0", + "description": "asahi: Pass valid memctx to open_device", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cde7ca168304d12195548af29c6ac20e5ff2e5d2", + "description": "asahi: Add asahi_clc infrastructure", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a02e46348445a66ee7550639485b6f33acc58df2", + "description": "asahi: Add folder for internal shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "103e300e7f4d756f9f82b8b4f0ed78dc7efdde74", + "description": "asahi: Reexpress genxml pack macro", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed1b2f40fc89d4e9f44395572367ffb6e8ab4699", + "description": "asahi: Unpack at 32-bit granularity", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0df82f76c410ce5a7304d1afa6e367456ff79e26", + "description": "asahi: Make GenXML compatible with OpenCL", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "59499d8dbc8e1bc39293431e59437d994ef73dda", + "description": "asahi: Fix agx_pack unrolling", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7193849f302afed11a618abd5f7bdfa31d5b6245", + "description": "agx: Fuse ubitfield_extract", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5500e02a611ffc91240f4d61ca2b6e8432cbd99d", + "description": "agx: Fuse (unmasked) extr_agx", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0cde7b794c2f15d7337884ce81a3430c2d4f1ddc", + "description": "agx: Vectorize load/stores", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7f27f2e314933266d1dae8787de028fa496cd556", + "description": "agx: Fix lower regular texture metadata", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a6afa48e86349e1c0ed2cba05d436eedf784f892", + "description": "clc: Add missing idep_vtn", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f164edfe71e5ddde47e7aa2bf9e3febe26819e4a", + "description": "vtn: Add spirv_library_to_nir_builder feature", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a2d3c74094b0cacf6f03c2f7d047ff7d00b2b2b5", + "description": "meson: Require clc for asahi", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "01d0d9431977ac25a191c860cb6711f48e6c173f", + "description": "meson: Simplify clc expression", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b192f3c458010edaecfea4ec303d79873f07388b", + "description": "nir/builder: Add nir_call helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "23bea252073c525fe8857b4334465705984dbc40", + "description": "nir: Add nir_remove_non_exported", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6014f745d52cbb698115febce3dc7a7f6fdbd12d", + "description": "nir,vtn: Add exported bool to nir_function", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "103d20e657cda13ca80ff04c59f3d751df8943a2", + "description": "gitlab: Highlight .cl as C", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b509446c2c97b1e923e7cdffd745bd956ce1f5fd", + "description": "docs/v3d: update v3d documentation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "87a673cac4a5861e0c37148cab19785a8218b2b0", + "description": "broadcom/cle: rename xml files", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9c4829473a11a0cd5daff92cb68db6eef20c7650", + "description": "broadcom/cle: remove v33 and v41 from xml definition", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e9fa6c0bc691707aa18279b5d53ea8e331b1a611", + "description": "broadcom/compiler: set properly lod query", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "85f26828fea49a2b9db3a94b18abbc1541eef083", + "description": "broadcom: only support v42 and v71", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dcc4e1b4d78bf964f001d6b8b907ab7ac263fb87", + "description": "ci: backport two mesh/task query fixes for VKCTS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "60cd0af06c081a6762d0598a9dfbbfc37c2b65d3", + "description": "ci/lava: Add unit tests covering job definition", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fdd51ef5840f7e8f9f06d3acb6b76111be08501b", + "description": "ci/lava: Enable SSH by default in fastboot devices", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "654f7f783f9e46bf2af345d3044839b46983e9f9", + "description": "ci/lava: Make SSH definition wrap the UART one", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "76922f8404341971ec7260b05ac4871d599e52da", + "description": "ci/lava: Create LAVAJobDefinition", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "77c3091fdd3fcc776e5a9b634c79b46f0380ec7c", + "description": "ci/lava: Refactor UART definition building blocks", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "af9273eb4f8f8b4c1565886fb2801e69cce4a76b", + "description": "ci/lava: Fix imports formatting", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f7f2d26e3b29ff727c83a3fd27e973977449ad62", + "description": "ci/lava: Use project_name instead of hardcoded `mesa`", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a1e68790212c30797605f699a96b813456c4b8ef", + "description": "anv: make shader cache content deterministic", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f0f0bce3144114889a10c434be7e6009b61b5cc2", + "description": "iris: make shader cache content deterministic", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "aa23120e4fc674d7da42c4895aa204f300155105", + "description": "anv: remove CS_FLUSH from query regression", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "6dc95685f3b1a14b2a0d80bc05ea198de8027f44", + "notes": null + }, + { + "sha": "4ddfc4503d2b33ed1e4aee765ceb760245feab16", + "description": "ci: fixup section names", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "2815e5c94daf5bba547e8d9366ec30b7b54eaa47", + "notes": null + }, + { + "sha": "ab6ef87720029d23b431db696da5e7b84a482566", + "description": "ci/zink: restore full premerge testing on Adreno 618", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6388896985da7495ad0968322491953894d29637", + "description": "nir: add deref follower builder for casts.", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "4a4e1757381c65653fd6a81cf4e969ddff926ed5", + "notes": null + }, + { + "sha": "8f9888fd75480b8ab6f2f130c783ec689466380c", + "description": "dzn: Implement VK_MSFT_layered_driver", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fdb58f5b6c6d3ca9b0bc42ddbb22882f140a4bf8", + "description": "ci: Uprev virglrenderer", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "75f7910850df52d2c47b9f49d8df34cda3c28d1b", + "description": "virgl: Implement clear_render_target and clear_depth_stencil", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "796cba9bda2adb4a90b9e8dc83a2f0b3756056b4", + "description": "radv: fix vkCmdCopyImage2 for emulated etc2/astc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b18f0dec419560a315719f9647db6eb29598c7e3", + "description": "aco: collect Pre-Sched SGPRs/VGPRs before spilling", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d200916ca2f656a5f81d6713a9073d7f66a5fa7a", + "description": "aco: add VALU/SALU/VMEM/SMEM statistics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0756324ca45a08dfc10dee75516896bc9d033517", + "description": "d3d12: Only set draw params root parameter index for actual draw params", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3ab51c7ebd1e7a65bd928b6142423123c7552927", + "description": "r600: Add callbacks for get_driver_uuid and get_device_uuid", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7de34ad3ef6d60bd70c559a1dd3cf4033b75a461", + "description": "radv: use NIR_LOOP_PASS helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "debddca1344435d3b30cb86e5a9d4f3b79a378f8", + "description": "nir: add helpers to skip idempotent passes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "faed5d647f2416bb0ce3a9d33a3955169c70dc52", "description": "iris: handle tile case where cso width, height is zero", From bfbd6f22c353d761d70b9d64baca8cf2b9c93dd4 Mon Sep 17 00:00:00 2001 From: LingMan <18294-LingMan@users.noreply.gitlab.freedesktop.org> Date: Tue, 24 Oct 2023 05:47:06 +0200 Subject: [PATCH 056/356] rusticl: Show an error message if the build is attempted with an outdated bindgen version Ideally the build system would fetch the correct bindgen version automatically like cargo does. Until then, provide an error message that is hopefully more helpful than whatever cryptic error the build runs into otherwise. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9457 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10029 Reviewed-by: Karol Herbst Part-of: (cherry picked from commit 1cc26e8b6657b5097995470ced9ae9cc7b6f01b9) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/meson.build | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index cffbd224473..3b3fef34b7b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2594,7 +2594,7 @@ "description": "rusticl: Show an error message if the build is attempted with an outdated bindgen version", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/frontends/rusticl/meson.build b/src/gallium/frontends/rusticl/meson.build index d7aee75240c..6cff319f780 100644 --- a/src/gallium/frontends/rusticl/meson.build +++ b/src/gallium/frontends/rusticl/meson.build @@ -114,6 +114,10 @@ rusticl_bindgen_args = [ '--anon-fields-prefix', 'anon_', ] +if find_program('bindgen').version().version_compare('< 0.62') + error('rusticl requires bindgen 0.62 or newer. If your distribution does not ship a recent enough version, you can install the latest version for your user with `cargo install bindgen-cli`.') +endif + if find_program('bindgen').version().version_compare('< 0.65') rusticl_bindgen_args += [ '--size_t-is-usize', From 5443e6619080b5a28144a33e53bc7a519f1a6066 Mon Sep 17 00:00:00 2001 From: LingMan <18294-LingMan@users.noreply.gitlab.freedesktop.org> Date: Sat, 4 Nov 2023 12:51:51 +0100 Subject: [PATCH 057/356] rusticl: Show an error message if the version of bindgen can't be detected bindgen 0.69.0 broke the `--version` switch, resulting in misleading errors about requiring at least bindgen 0.62 or about unexpected arguments. Ideally the build system would fetch the correct bindgen version automatically like cargo does. Until then, provide a hopefully more helpful error message to the user. Reviewed-by: Karol Herbst Part-of: (cherry picked from commit 1f1ec1c6bcc2a32a3c1df8c2cc7a2f4e7139b7ec) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/meson.build | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 3b3fef34b7b..fc588e1257d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4,7 +4,7 @@ "description": "rusticl: Show an error message if the version of bindgen can't be detected", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/frontends/rusticl/meson.build b/src/gallium/frontends/rusticl/meson.build index 6cff319f780..92b23f548ff 100644 --- a/src/gallium/frontends/rusticl/meson.build +++ b/src/gallium/frontends/rusticl/meson.build @@ -114,11 +114,17 @@ rusticl_bindgen_args = [ '--anon-fields-prefix', 'anon_', ] -if find_program('bindgen').version().version_compare('< 0.62') +bindgen_version = find_program('bindgen').version() + +if bindgen_version == 'unknown' + error('Failed to detect bindgen version. If you are using bindgen 0.69.0, please either update to 0.69.1 or downgrade to 0.68.1. You can install the latest version for your user with `cargo install bindgen-cli`.') +endif + +if bindgen_version.version_compare('< 0.62') error('rusticl requires bindgen 0.62 or newer. If your distribution does not ship a recent enough version, you can install the latest version for your user with `cargo install bindgen-cli`.') endif -if find_program('bindgen').version().version_compare('< 0.65') +if bindgen_version.version_compare('< 0.65') rusticl_bindgen_args += [ '--size_t-is-usize', ] From 11398ee00f16a6c4c4c0302f9bbf0bf0385b5ab7 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Wed, 25 Oct 2023 22:30:37 +0200 Subject: [PATCH 058/356] r600: Add callbacks for get_driver_uuid and get_device_uuid v2: Evaluate driver ID dynamically (Adam Jackson) v3: Align the stars (Triang3l) v4: include "r600" in driver ID for UUID evaluation (Triang3l) v5: remove unused local variable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10040 CC: mesa-stable Signed-off-by: Gert Wollny Part-of: (cherry picked from commit 3ab51c7ebd1e7a65bd928b6142423123c7552927) --- .pick_status.json | 2 +- src/gallium/drivers/r600/r600_pipe_common.c | 48 +++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index fc588e1257d..1ce6d9679e8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1804,7 +1804,7 @@ "description": "r600: Add callbacks for get_driver_uuid and get_device_uuid", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/r600/r600_pipe_common.c b/src/gallium/drivers/r600/r600_pipe_common.c index 1a5b4b89663..8a5f78db95f 100644 --- a/src/gallium/drivers/r600/r600_pipe_common.c +++ b/src/gallium/drivers/r600/r600_pipe_common.c @@ -37,6 +37,8 @@ #include "vl/vl_decoder.h" #include "vl/vl_video_buffer.h" #include "radeon_video.h" +#include "git_sha1.h" + #include #include #include @@ -1207,6 +1209,50 @@ static int r600_get_screen_fd(struct pipe_screen *screen) return ws->get_fd(ws); } +static void r600_get_driver_uuid(UNUSED struct pipe_screen *screen, char *uuid) +{ + const char *driver_id = PACKAGE_VERSION MESA_GIT_SHA1 "r600"; + + /* The driver UUID is used for determining sharability of images and + * memory between two Vulkan instances in separate processes, but also + * to determining memory objects and sharability between Vulkan and + * OpenGL driver. People who want to share memory need to also check + * the device UUID. + */ + struct mesa_sha1 sha1_ctx; + _mesa_sha1_init(&sha1_ctx); + + _mesa_sha1_update(&sha1_ctx, driver_id, strlen(driver_id)); + + uint8_t sha1[SHA1_DIGEST_LENGTH]; + _mesa_sha1_final(&sha1_ctx, sha1); + + assert(SHA1_DIGEST_LENGTH >= PIPE_UUID_SIZE); + memcpy(uuid, sha1, PIPE_UUID_SIZE); +} + +static void r600_get_device_uuid(struct pipe_screen *screen, char *uuid) +{ + uint32_t *uint_uuid = (uint32_t *)uuid; + struct r600_common_screen* rs = (struct r600_common_screen*)screen; + + assert(PIPE_UUID_SIZE >= sizeof(uint32_t) * 4); + + /* Copied from ac_device_info + * Use the device info directly instead of using a sha1. GL/VK UUIDs + * are 16 byte vs 20 byte for sha1, and the truncation that would be + * required would get rid of part of the little entropy we have. + */ + memset(uuid, 0, PIPE_UUID_SIZE); + if (!rs->info.pci.valid) + fprintf(stderr, + "r600 device_uuid output is based on invalid pci bus info.\n"); + uint_uuid[0] = rs->info.pci.domain; + uint_uuid[1] = rs->info.pci.bus; + uint_uuid[2] = rs->info.pci.dev; + uint_uuid[3] = rs->info.pci.func; +} + bool r600_common_screen_init(struct r600_common_screen *rscreen, struct radeon_winsys *ws) { @@ -1247,6 +1293,8 @@ bool r600_common_screen_init(struct r600_common_screen *rscreen, rscreen->b.resource_destroy = r600_resource_destroy; rscreen->b.resource_from_user_memory = r600_buffer_from_user_memory; rscreen->b.query_memory_info = r600_query_memory_info; + rscreen->b.get_device_uuid = r600_get_device_uuid; + rscreen->b.get_driver_uuid = r600_get_driver_uuid; if (rscreen->info.ip[AMD_IP_UVD].num_queues) { rscreen->b.get_video_param = rvid_get_video_param; From 8081cb909bde826d76312f93e2dcafb29eba34c1 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Wed, 1 Nov 2023 15:38:35 -0500 Subject: [PATCH 059/356] nir: add deref follower builder for casts. This fixes intel_clc builds with llvm 17 on gfx125_bvh_build_DFS_DFS where it dies in the lower indirect derefs pass. Co-authored-by: Dave Airlie Fixes: 4a4e1757381c ("nir: Support deref instructions in lower_var_copies") Part-of: (cherry picked from commit 6388896985da7495ad0968322491953894d29637) --- .pick_status.json | 2 +- src/compiler/nir/nir_builder.h | 27 ++++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 1ce6d9679e8..e798933f36a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1724,7 +1724,7 @@ "description": "nir: add deref follower builder for casts.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "4a4e1757381c65653fd6a81cf4e969ddff926ed5", "notes": null diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_builder.h index c9f3465406c..d2b5702d3c9 100644 --- a/src/compiler/nir/nir_builder.h +++ b/src/compiler/nir/nir_builder.h @@ -1483,9 +1483,12 @@ nir_build_deref_struct(nir_builder *build, nir_deref_instr *parent, } static inline nir_deref_instr * -nir_build_deref_cast(nir_builder *build, nir_def *parent, - nir_variable_mode modes, const struct glsl_type *type, - unsigned ptr_stride) +nir_build_deref_cast_with_alignment(nir_builder *build, nir_def *parent, + nir_variable_mode modes, + const struct glsl_type *type, + unsigned ptr_stride, + unsigned align_mul, + unsigned align_offset) { nir_deref_instr *deref = nir_deref_instr_create(build->shader, nir_deref_type_cast); @@ -1493,6 +1496,8 @@ nir_build_deref_cast(nir_builder *build, nir_def *parent, deref->modes = modes; deref->type = type; deref->parent = nir_src_for_ssa(parent); + deref->cast.align_mul = align_mul; + deref->cast.align_offset = align_offset; deref->cast.ptr_stride = ptr_stride; nir_def_init(&deref->instr, &deref->def, parent->num_components, @@ -1503,6 +1508,15 @@ nir_build_deref_cast(nir_builder *build, nir_def *parent, return deref; } +static inline nir_deref_instr * +nir_build_deref_cast(nir_builder *build, nir_def *parent, + nir_variable_mode modes, const struct glsl_type *type, + unsigned ptr_stride) +{ + return nir_build_deref_cast_with_alignment(build, parent, modes, type, + ptr_stride, 0, 0); +} + static inline nir_deref_instr * nir_alignment_deref_cast(nir_builder *build, nir_deref_instr *parent, uint32_t align_mul, uint32_t align_offset) @@ -1570,6 +1584,13 @@ nir_build_deref_follower(nir_builder *b, nir_deref_instr *parent, return nir_build_deref_struct(b, parent, leader->strct.index); + case nir_deref_type_cast: + return nir_build_deref_cast_with_alignment(b, &parent->def, + leader->modes, + leader->type, + leader->cast.ptr_stride, + leader->cast.align_mul, + leader->cast.align_offset); default: unreachable("Invalid deref instruction type"); } From 9e451512431d9a8336acfcbd8ae2aa24fdec5f02 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Wed, 11 Oct 2023 14:43:03 +0100 Subject: [PATCH 060/356] radv: call lower_array_deref_of_vec before lower_io_arrays_to_elements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nir_lower_io_arrays_to_elements does not support array derefs of vectors, even when nir_deref_instr_is_known_out_of_bounds is fixed. They can occur with mesh shaders. Found by inspection. Signed-off-by: Rhys Perry Reviewed-by: Timur Kristóf Cc: mesa-stable Part-of: (cherry picked from commit ed12be533e2673b08e958be32fbe5d6af2737fbc) --- .pick_status.json | 2 +- src/amd/vulkan/nir/radv_nir_lower_io.c | 3 --- src/amd/vulkan/radv_pipeline_graphics.c | 7 +++++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index e798933f36a..1d6ce7fe596 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1294,7 +1294,7 @@ "description": "radv: call lower_array_deref_of_vec before lower_io_arrays_to_elements", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/nir/radv_nir_lower_io.c b/src/amd/vulkan/nir/radv_nir_lower_io.c index bc5ecfe41e9..e78523a7a49 100644 --- a/src/amd/vulkan/nir/radv_nir_lower_io.c +++ b/src/amd/vulkan/nir/radv_nir_lower_io.c @@ -41,9 +41,6 @@ radv_nir_lower_io_to_scalar_early(nir_shader *nir, nir_variable_mode mask) { bool progress = false; - NIR_PASS(progress, nir, nir_lower_array_deref_of_vec, mask, - nir_lower_direct_array_deref_of_vec_load | nir_lower_indirect_array_deref_of_vec_load | - nir_lower_direct_array_deref_of_vec_store | nir_lower_indirect_array_deref_of_vec_store); NIR_PASS(progress, nir, nir_lower_io_to_scalar_early, mask); if (progress) { /* Optimize the new vector code and then remove dead vars */ diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index d02c53f778c..9b648dbc7c2 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -1338,6 +1338,13 @@ radv_link_shaders(const struct radv_device *device, nir_shader *producer, nir_sh nir_link_xfb_varyings(producer, consumer); } + unsigned array_deref_of_vec_options = + nir_lower_direct_array_deref_of_vec_load | nir_lower_indirect_array_deref_of_vec_load | + nir_lower_direct_array_deref_of_vec_store | nir_lower_indirect_array_deref_of_vec_store; + + NIR_PASS(progress, producer, nir_lower_array_deref_of_vec, nir_var_shader_out, array_deref_of_vec_options); + NIR_PASS(progress, consumer, nir_lower_array_deref_of_vec, nir_var_shader_in, array_deref_of_vec_options); + nir_lower_io_arrays_to_elements(producer, consumer); nir_validate_shader(producer, "after nir_lower_io_arrays_to_elements"); nir_validate_shader(consumer, "after nir_lower_io_arrays_to_elements"); From a8e266b7b3bd4985467059a7cbdfe14ec68199ec Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Wed, 11 Oct 2023 14:46:20 +0100 Subject: [PATCH 061/356] radv: skip radv_remove_varyings for mesh shaders MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes compilation of a Talos Principle 2 shader. Signed-off-by: Rhys Perry Reviewed-by: Timur Kristóf Fixes: 9fa9782c1790 ("radv: stop compiling a noop FS when the application doesn't provide a FS") Part-of: (cherry picked from commit 0a418561dab43a41f21ab209367f88c2ed9eb4a5) --- .pick_status.json | 2 +- src/amd/vulkan/radv_pipeline_graphics.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 1d6ce7fe596..e3d7b9490b5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1284,7 +1284,7 @@ "description": "radv: skip radv_remove_varyings for mesh shaders", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "9fa9782c1790e049be66d3bcd383fb3fdb79e1c5", "notes": null diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index 9b648dbc7c2..72ed9697f13 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -1627,6 +1627,12 @@ radv_pipeline_needs_noop_fs(struct radv_graphics_pipeline *pipeline, const struc static void radv_remove_varyings(nir_shader *nir) { + /* We can't demote mesh outputs to nir_var_shader_temp yet, because + * they don't support array derefs of vectors. + */ + if (nir->info.stage == MESA_SHADER_MESH) + return; + bool fixup_derefs = false; nir_foreach_shader_out_variable (var, nir) { From 2bd7e293bfed5d2956a5dcb3e17555d0f6817986 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 2 Nov 2023 07:29:23 -0700 Subject: [PATCH 062/356] tu/msm: Fix timeline semaphore support Fixes: daefc6e2a40b ("turnip: prep work for timeline semaphore support") Signed-off-by: Rob Clark Part-of: (cherry picked from commit 79b907f9412971b8f6316e1de757a2c3cfdbc603) --- .pick_status.json | 2 +- src/freedreno/vulkan/tu_knl_drm_msm.cc | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index e3d7b9490b5..4709a458c80 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1254,7 +1254,7 @@ "description": "tu/msm: Fix timeline semaphore support", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "daefc6e2a40b70f0665b21cf7688e711b4b1ae09", "notes": null diff --git a/src/freedreno/vulkan/tu_knl_drm_msm.cc b/src/freedreno/vulkan/tu_knl_drm_msm.cc index 3a5e3563bd6..e8fe7a9f82c 100644 --- a/src/freedreno/vulkan/tu_knl_drm_msm.cc +++ b/src/freedreno/vulkan/tu_knl_drm_msm.cc @@ -1028,6 +1028,7 @@ msm_queue_submit(struct tu_queue *queue, struct vk_queue_submit *submit) in_syncobjs[nr_in_syncobjs++] = (struct drm_msm_gem_submit_syncobj) { .handle = tu_syncobj_from_vk_sync(sync), .flags = 0, + .point = submit->waits[i].wait_value, }; } @@ -1037,6 +1038,7 @@ msm_queue_submit(struct tu_queue *queue, struct vk_queue_submit *submit) out_syncobjs[nr_out_syncobjs++] = (struct drm_msm_gem_submit_syncobj) { .handle = tu_syncobj_from_vk_sync(sync), .flags = 0, + .point = submit->signals[i].signal_value, }; } From 6f99c62086bfc1d865e0bc5a1c231ffe1acf60a6 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 2 Nov 2023 07:29:51 -0700 Subject: [PATCH 063/356] tu/virtio: Fix timeline semaphore support Fixes: f17c5297d7a0 ("tu: Add virtgpu support") Signed-off-by: Rob Clark Part-of: (cherry picked from commit ceeab44fd1ff116b5a3906044fc33588b65dcbda) --- .pick_status.json | 2 +- src/freedreno/vulkan/tu_knl_drm_virtio.cc | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 4709a458c80..2e83879d222 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1244,7 +1244,7 @@ "description": "tu/virtio: Fix timeline semaphore support", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "f17c5297d7a01eb37815f96bbf3a87667a2f3261", "notes": null diff --git a/src/freedreno/vulkan/tu_knl_drm_virtio.cc b/src/freedreno/vulkan/tu_knl_drm_virtio.cc index 8f43bf83a99..d944d079dd4 100644 --- a/src/freedreno/vulkan/tu_knl_drm_virtio.cc +++ b/src/freedreno/vulkan/tu_knl_drm_virtio.cc @@ -1445,6 +1445,7 @@ virtio_queue_submit(struct tu_queue *queue, struct vk_queue_submit *submit) in_syncobjs[nr_in_syncobjs++] = (struct drm_virtgpu_execbuffer_syncobj) { .handle = tu_syncobj_from_vk_sync(sync), .flags = 0, + .point = submit->waits[i].wait_value, }; } @@ -1454,6 +1455,7 @@ virtio_queue_submit(struct tu_queue *queue, struct vk_queue_submit *submit) out_syncobjs[nr_out_syncobjs++] = (struct drm_virtgpu_execbuffer_syncobj) { .handle = tu_syncobj_from_vk_sync(sync), .flags = 0, + .point = submit->signals[i].signal_value, }; } From 844e330299aa7f85c231ef304f152353b356b6e7 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Wed, 1 Nov 2023 01:14:00 -0700 Subject: [PATCH 064/356] venus: fix query feedback batch leak and race upon submission Summary: - fixed the combined query batches leak - fixed the race condition of accessing feedback cmd pool - very scoped code refactor Cc: 23.3 Fixes: 5b24ab91e43 ("venus: switch to unconditionally deferred query feedback") Signed-off-by: Yiwei Zhang Part-of: (cherry picked from commit ae3b022fa0568e048ce2013affbd2ca60cc42ec6) --- .pick_status.json | 2 +- src/virtio/vulkan/vn_queue.c | 135 +++++++++++++++++++---------------- 2 files changed, 74 insertions(+), 63 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 2e83879d222..badca239a01 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1104,7 +1104,7 @@ "description": "venus: fix query feedback batch leak and race upon submission", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "5b24ab91e43a54b4f4081db52ebf6653b97e72bb", "notes": null diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 031366f0163..fd1ad4e23ae 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -510,61 +510,83 @@ vn_get_feedback_cmd_handle(struct vn_queue_submission *submit, } static VkResult -vn_combine_query_feedback_batches(VkCommandBuffer *src_cmd_handles, - uint32_t cmd_buffer_count, - uint32_t stride, - struct vn_feedback_cmd_pool *feedback_pool, - struct list_head *combined_query_batches) +vn_combine_query_feedback_batches_and_record( + VkDevice dev_handle, + VkCommandBuffer *cmd_handles, + uint32_t cmd_count, + uint32_t stride, + struct vn_feedback_cmd_pool *feedback_cmd_pool, + VkCommandBuffer *out_feedback_cmd_handle) { struct vn_command_pool *cmd_pool = - vn_command_pool_from_handle(feedback_pool->pool); + vn_command_pool_from_handle(feedback_cmd_pool->pool); + VkResult result = VK_SUCCESS; - uintptr_t cmd_handle_ptr = (uintptr_t)src_cmd_handles; - for (uint32_t i = 0; i < cmd_buffer_count; i++) { - struct vn_command_buffer *cmd_buffer = - vn_command_buffer_from_handle(*(VkCommandBuffer *)cmd_handle_ptr); + struct list_head combined_batches; + list_inithead(&combined_batches); - list_for_each_entry_safe(struct vn_feedback_query_batch, new_batch, - &cmd_buffer->builder.query_batches, head) { + uintptr_t cmd_handle_ptr = (uintptr_t)cmd_handles; + for (uint32_t i = 0; i < cmd_count; i++) { + struct vn_command_buffer *cmd = + vn_command_buffer_from_handle(*(VkCommandBuffer *)cmd_handle_ptr); - if (!new_batch->copy) { + list_for_each_entry(struct vn_feedback_query_batch, batch, + &cmd->builder.query_batches, head) { + if (!batch->copy) { list_for_each_entry_safe(struct vn_feedback_query_batch, - combined_batch, combined_query_batches, - head) { + batch_clone, &combined_batches, head) { /* If we previously added a query feedback that is now getting * reset, remove it since it is now a no-op and the deferred * feedback copy will cause a hang waiting for the reset query * to become available. */ - if (combined_batch->copy && - (vn_query_pool_to_handle(combined_batch->query_pool) == - vn_query_pool_to_handle(new_batch->query_pool)) && - combined_batch->query >= new_batch->query && - combined_batch->query <= - new_batch->query + new_batch->query_count) { - list_move_to(&combined_batch->head, + if (batch_clone->copy && + (vn_query_pool_to_handle(batch_clone->query_pool) == + vn_query_pool_to_handle(batch->query_pool)) && + batch_clone->query >= batch->query && + batch_clone->query <= batch->query + batch->query_count) { + simple_mtx_lock(&feedback_cmd_pool->mutex); + list_move_to(&batch_clone->head, &cmd_pool->free_query_batches); + simple_mtx_unlock(&feedback_cmd_pool->mutex); } } } - struct vn_feedback_query_batch *batch = vn_cmd_query_batch_alloc( - cmd_pool, new_batch->query_pool, new_batch->query, - new_batch->query_count, new_batch->copy); - if (!batch) - return VK_ERROR_OUT_OF_HOST_MEMORY; - list_addtail(&batch->head, combined_query_batches); + simple_mtx_lock(&feedback_cmd_pool->mutex); + struct vn_feedback_query_batch *batch_clone = + vn_cmd_query_batch_alloc(cmd_pool, batch->query_pool, + batch->query, batch->query_count, + batch->copy); + simple_mtx_unlock(&feedback_cmd_pool->mutex); + if (!batch_clone) { + result = VK_ERROR_OUT_OF_HOST_MEMORY; + goto recycle_combined_batches; + } + + list_addtail(&batch_clone->head, &combined_batches); } cmd_handle_ptr += stride; } - return VK_SUCCESS; + result = vn_feedback_query_batch_record(dev_handle, feedback_cmd_pool, + &combined_batches, + out_feedback_cmd_handle); + +recycle_combined_batches: + simple_mtx_lock(&feedback_cmd_pool->mutex); + list_for_each_entry_safe(struct vn_feedback_query_batch, batch_clone, + &combined_batches, head) + list_move_to(&batch_clone->head, &cmd_pool->free_query_batches); + simple_mtx_unlock(&feedback_cmd_pool->mutex); + + return result; } static VkResult vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit, - uint32_t cmd_buffer_count, + uint32_t cmd_count, struct vn_feedback_cmds *feedback_cmds) { struct vk_queue *queue_vk = vk_queue_from_handle(submit->queue_handle); @@ -573,32 +595,22 @@ vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit, VkCommandBuffer *src_cmd_handles = vn_get_feedback_cmd_handle(submit, feedback_cmds, 0); VkCommandBuffer *feedback_cmd_handle = - vn_get_feedback_cmd_handle(submit, feedback_cmds, cmd_buffer_count); - uint32_t stride = (submit->batch_type == VK_STRUCTURE_TYPE_SUBMIT_INFO) - ? sizeof(VkCommandBuffer *) - : sizeof(VkCommandBufferSubmitInfo); - VkResult result; + vn_get_feedback_cmd_handle(submit, feedback_cmds, cmd_count); + const uint32_t stride = submit->batch_type == VK_STRUCTURE_TYPE_SUBMIT_INFO + ? sizeof(VkCommandBuffer *) + : sizeof(VkCommandBufferSubmitInfo); - uint32_t pool_index; - for (pool_index = 0; pool_index < dev->queue_family_count; pool_index++) { - if (dev->queue_families[pool_index] == queue_vk->queue_family_index) + struct vn_feedback_cmd_pool *feedback_cmd_pool = NULL; + for (uint32_t i = 0; i < dev->queue_family_count; i++) { + if (dev->queue_families[i] == queue_vk->queue_family_index) { + feedback_cmd_pool = &dev->cmd_pools[i]; break; + } } - struct vn_feedback_cmd_pool *feedback_cmd_pool = - &dev->cmd_pools[pool_index]; - - struct list_head combined_query_batches; - list_inithead(&combined_query_batches); - - result = vn_combine_query_feedback_batches( - src_cmd_handles, cmd_buffer_count, stride, feedback_cmd_pool, - &combined_query_batches); - if (result != VK_SUCCESS) - return result; - result = vn_feedback_query_batch_record(dev_handle, feedback_cmd_pool, - &combined_query_batches, - feedback_cmd_handle); + VkResult result = vn_combine_query_feedback_batches_and_record( + dev_handle, src_cmd_handles, cmd_count, stride, feedback_cmd_pool, + feedback_cmd_handle); if (result != VK_SUCCESS) return result; @@ -610,20 +622,19 @@ vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit, * since we don't know if all its instances have completed execution. * Should be rare enough to just log and leak the feedback cmd. */ - struct vn_command_buffer *linked_cmd_buffer = NULL; - for (uint32_t i = cmd_buffer_count - 1; i >= 0; i--) { + struct vn_command_buffer *linked_cmd = NULL; + for (uint32_t i = 0; i < cmd_count; i++) { VkCommandBuffer *cmd_handle = vn_get_feedback_cmd_handle(submit, feedback_cmds, i); - struct vn_command_buffer *cmd_buffer = + struct vn_command_buffer *cmd = vn_command_buffer_from_handle(*cmd_handle); - - if (!cmd_buffer->builder.is_simultaneous) { - linked_cmd_buffer = cmd_buffer; + if (!cmd->builder.is_simultaneous) { + linked_cmd = cmd; break; } } - if (!linked_cmd_buffer) { + if (!linked_cmd) { vn_log(dev->instance, "Could not find non simultaneous cmd to link query feedback\n"); return VK_SUCCESS; @@ -636,11 +647,11 @@ vn_queue_submission_add_query_feedback(struct vn_queue_submission *submit, * linking a new one. Defer the actual recycle operation to * vn_queue_submission_cleanup. */ - if (linked_cmd_buffer->linked_query_feedback_cmd) + if (linked_cmd->linked_query_feedback_cmd) submit->recycle_query_feedback_cmd = - linked_cmd_buffer->linked_query_feedback_cmd; + linked_cmd->linked_query_feedback_cmd; - linked_cmd_buffer->linked_query_feedback_cmd = + linked_cmd->linked_query_feedback_cmd = vn_command_buffer_from_handle(*feedback_cmd_handle); return VK_SUCCESS; From 2cfc7776bd6d27715b89606bf9f7a3f33dd83025 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Wed, 19 Apr 2023 17:18:45 -0500 Subject: [PATCH 065/356] nir: Handle wildcards with casts in copy_prop_vars If we're propagating a copy from a cast where the copy copies an entire array, we end up with something like &((S *)ssa_N)->f[*] in the source where a wildcard has a cast in its parent chain. If we then try to propagate the read into a non-wildcard array load, we have to specialize the wildcard. This breaks because nir_build_deref_follower() doesn't handle casts. Since we know a priori that, because wildcards are only generated by copy_deref on arrays, we cannot have a cast with a wildcard parent so simply chasing the source deref to the first wildcard will ensure that any casts in the deref are handled properly. Fixes: ba2bd20f8732 ("nir: Rework opt_copy_prop_vars to use deref instructions") Acked-by: Alyssa Rosenzweig Part-of: (cherry picked from commit 15ab4d397fbd24ac09daab03cc9cd0b750dbace2) --- .pick_status.json | 2 +- src/compiler/nir/nir_opt_copy_prop_vars.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index badca239a01..ef56f428797 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1094,7 +1094,7 @@ "description": "nir: Handle wildcards with casts in copy_prop_vars", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "ba2bd20f8732fb5a9163734447072cdaf6a633b3", "notes": null diff --git a/src/compiler/nir/nir_opt_copy_prop_vars.c b/src/compiler/nir/nir_opt_copy_prop_vars.c index 06ebd30b2b8..f291019c341 100644 --- a/src/compiler/nir/nir_opt_copy_prop_vars.c +++ b/src/compiler/nir/nir_opt_copy_prop_vars.c @@ -790,9 +790,15 @@ specialize_wildcards(nir_builder *b, nir_deref_path *specific) { nir_deref_instr **deref_p = &deref->path[1]; + nir_deref_instr *ret_tail = deref->path[0]; + for (; *deref_p; deref_p++) { + if ((*deref_p)->deref_type == nir_deref_type_array_wildcard) + break; + ret_tail = *deref_p; + } + nir_deref_instr **guide_p = &guide->path[1]; nir_deref_instr **spec_p = &specific->path[1]; - nir_deref_instr *ret_tail = deref->path[0]; for (; *deref_p; deref_p++) { if ((*deref_p)->deref_type == nir_deref_type_array_wildcard) { /* This is where things get tricky. We have to search through From ab2a7f32e63fccc3cb68a0db9808aecdd7fabe4a Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 24 Oct 2023 12:23:28 +0200 Subject: [PATCH 066/356] freedreno/ci: Remove minetest trace I've repeatedly seen minor pixel changes due to changes that only affect RA decisions, most recently in !22072. We changed the trace to hopefully remove a use of texture() in control flow, but it seems there are more, or the problem is something slightly different like reading uninitialized values. On the other hand minetest has never actually caught an issue for me that some other trace hasn't also caught. Just remove it. Cc: mesa-stable Acked-by: David Heidelberg Part-of: (cherry picked from commit 16214710caaacf4fb8539498a3eb774644921249) --- .pick_status.json | 2 +- src/freedreno/ci/traces-freedreno.yml | 34 --------------------------- 2 files changed, 1 insertion(+), 35 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index ef56f428797..645a2b86765 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -954,7 +954,7 @@ "description": "freedreno/ci: Remove minetest trace", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/freedreno/ci/traces-freedreno.yml b/src/freedreno/ci/traces-freedreno.yml index 6887ae78ef0..a870127b04f 100644 --- a/src/freedreno/ci/traces-freedreno.yml +++ b/src/freedreno/ci/traces-freedreno.yml @@ -16,7 +16,6 @@ text: |- stk: 11.15s 0ad: 10.93s counterstrike: 9.87s - minetest: 8.24s neverball: 8.53s traces: @@ -234,39 +233,6 @@ traces: zink-a630: checksum: d25edb433abfcde517b626b3071906ff - minetest/minetest-high-v2.trace: - freedreno-a306: - label: [crash] - freedreno-a530: - checksum: 48d4d4776885fd120429cd36a35ddaf2 - freedreno-a618: - checksum: 2aebe86d6c0488b953bfaacd8000c01a - freedreno-a630: - checksum: 2aebe86d6c0488b953bfaacd8000c01a - zink-a618: - label: [skip, flakes] - checksum: c167b29121b4bbba7675070b2ab1f51a - zink-a630: - label: [skip, flakes] - checksum: c167b29121b4bbba7675070b2ab1f51a - - minetest/minetest-v2.trace: - freedreno-a306: - checksum: 37081a69137df415cfda13dac62966c4 - freedreno-a530: - checksum: 824672b1eef72c0223ac754dfc46e2d5 - freedreno-a618: - checksum: e9b5d984b49f888ff1a4787fe2baea71 - freedreno-a630: - label: [skip, flakes] - checksum: 1db3e8a057748109bd06734860396abf - zink-a618: - checksum: f534d68a62934453325f11ff19e2241a - zink-a630: - label: [skip, flakes] - checksum: f534d68a62934453325f11ff19e2241a - text: occasional Different pixels 1 (no tolerance), 0 (1% tol.) - filament/filament-default.trace: freedreno-a306: label: [unsupported] From 4cbcc74d8faebf8f614be45e54c36b012aa7d046 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Thu, 2 Nov 2023 18:29:31 +0100 Subject: [PATCH 067/356] v3d/ci: Remove minetest trace For the same reason as the previous commit. For examples of commits causing spurious changes see 8019a1b9 and d89ca14e. Cc: mesa-stable Part-of: (cherry picked from commit 2313a517d2ddb6395eab802949b2f8461397b1d0) --- .pick_status.json | 2 +- src/broadcom/ci/traces-broadcom.yml | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 645a2b86765..e89512f62ff 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -944,7 +944,7 @@ "description": "v3d/ci: Remove minetest trace", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/broadcom/ci/traces-broadcom.yml b/src/broadcom/ci/traces-broadcom.yml index 73ffb7ab917..4808e2d3f82 100644 --- a/src/broadcom/ci/traces-broadcom.yml +++ b/src/broadcom/ci/traces-broadcom.yml @@ -116,14 +116,6 @@ traces: broadcom-rpi4: checksum: 831138a408cc9557528ef68381b080f2 - minetest/minetest-high-v2.trace: - broadcom-rpi4: - checksum: ade651f34a154d4508a00c47e532c482 - - minetest/minetest-v2.trace: - broadcom-rpi4: - checksum: 88a5c82db5ce868c81fa1d6e0f6d8dc9 - neverball/neverball-v2.trace: broadcom-rpi4: checksum: c8e8ee352bdb303e4ed144b69272575e From 0afd2930fd3a929939bfbf098dacdc87ea002d14 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Thu, 2 Nov 2023 20:41:25 +0100 Subject: [PATCH 068/356] nvc0: implement PIPE_CAP_TIMER_RESOLUTION This allows rusticl to create profiling queues. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10042 Fixes: 660f2eabe11 ("gallium: add PIPE_CAP_TIMER_RESOLUTION") Signed-off-by: Karol Herbst Part-of: (cherry picked from commit 7b419215048d63b33d3693206a7319d933c075d8) --- .pick_status.json | 2 +- src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index e89512f62ff..ff929b93f95 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -884,7 +884,7 @@ "description": "nvc0: implement PIPE_CAP_TIMER_RESOLUTION", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "660f2eabe116972b82f2b6fcdf4869962f641d6d", "notes": null diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c index eb21b09558e..28a616a621f 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c @@ -207,6 +207,9 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_MAX_TEXTURE_MB: return 0; /* TODO: use 1/2 of VRAM for this? */ + case PIPE_CAP_TIMER_RESOLUTION: + return 1000; + case PIPE_CAP_SUPPORTED_PRIM_MODES_WITH_RESTART: case PIPE_CAP_SUPPORTED_PRIM_MODES: return BITFIELD_MASK(MESA_PRIM_COUNT); From eb41ceec14b113b6fe0e7b88b8482033cae8d14a Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Thu, 2 Nov 2023 21:24:17 +0100 Subject: [PATCH 069/356] r600: Link with libgalliumvl, when enabling rusticl this is needed Fixes: 33673bcc2ab84de0b1ff35519e7d7a58ef572fba rusticl: stop linking with libgalliumvl Signed-off-by: Gert Wollny Part-of: (cherry picked from commit 1662897294a3b6b0f8b6004163c016722c634651) --- .pick_status.json | 2 +- src/gallium/drivers/r600/meson.build | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index ff929b93f95..59381d8f34d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -864,7 +864,7 @@ "description": "r600: Link with libgalliumvl, when enabling rusticl this is needed", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "33673bcc2ab84de0b1ff35519e7d7a58ef572fba", "notes": null diff --git a/src/gallium/drivers/r600/meson.build b/src/gallium/drivers/r600/meson.build index 6167aaa8346..ae2081a2f8e 100644 --- a/src/gallium/drivers/r600/meson.build +++ b/src/gallium/drivers/r600/meson.build @@ -182,7 +182,7 @@ libr600 = static_library( inc_src, inc_mapi, inc_mesa, inc_include, inc_gallium, inc_gallium_aux, inc_amd_common, inc_gallium_drivers, ], - + link_with : [ libgalliumvl ], dependencies: [dep_libdrm_radeon, dep_elf, dep_llvm, idep_nir, idep_nir_headers], ) From 35fea70555b53fc6daeb0323a3c071add8d334aa Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Thu, 2 Nov 2023 21:39:42 +0100 Subject: [PATCH 070/356] r600/sfn: Fixup component count only if intrinsic has it Fixes: 33d878e r600/sfn: Handle load_global in 64 to vec2 lowering Signed-off-by: Gert Wollny Part-of: (cherry picked from commit 28b79b2ea5d13f2499d78f903a335383bb38e5c1) --- .pick_status.json | 2 +- src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 59381d8f34d..6a18ec0b7bd 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -854,7 +854,7 @@ "description": "r600/sfn: Fixup component count only if intrinsic has it", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "33d878eb584cad621906811dbf8466aed86d57e8", "notes": null diff --git a/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp b/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp index 6c82843ee51..b11c98c500a 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp @@ -1026,7 +1026,8 @@ Lower64BitToVec2::load_64_to_vec2(nir_intrinsic_instr *intr) intr->num_components *= 2; intr->def.bit_size = 32; intr->def.num_components *= 2; - nir_intrinsic_set_component(intr, nir_intrinsic_component(intr) * 2); + if (nir_intrinsic_has_component(intr)) + nir_intrinsic_set_component(intr, nir_intrinsic_component(intr) * 2); return NIR_LOWER_INSTR_PROGRESS; } From 28e36118af58513ffe94f8cf9be4a8de39e74ae0 Mon Sep 17 00:00:00 2001 From: antonino Date: Thu, 2 Nov 2023 18:03:41 +0100 Subject: [PATCH 071/356] nir: don't take the derivative of the array index in `nir_lower_tex` Previosuly when lowering to txd for sampler array the index would be derived as well, therefore the resulting derivative would have been a vec with one more component than what the txd instruction expects. This patch truncates the coordinate vector in this case to make sure the index is not derived. Fixes: b154a4154b4 ("nir/lower_tex: rewrite tex/txb -> txd/txl before saturating srcs") Reviewed-by: Faith Ekstrand Part-of: (cherry picked from commit 4a627af0e3670d409d8140c1f9ee1c7ac86b5ddf) --- .pick_status.json | 2 +- src/compiler/nir/nir_lower_tex.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 6a18ec0b7bd..68c19471237 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -844,7 +844,7 @@ "description": "nir: don't take the derivative of the array index in `nir_lower_tex`", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "b154a4154b4348a5ae053d0cde331aea902f7bcc", "notes": null diff --git a/src/compiler/nir/nir_lower_tex.c b/src/compiler/nir/nir_lower_tex.c index 83f3ebb5c9e..716c5dda7a8 100644 --- a/src/compiler/nir/nir_lower_tex.c +++ b/src/compiler/nir/nir_lower_tex.c @@ -872,10 +872,14 @@ lower_tex_to_txd(nir_builder *b, nir_tex_instr *tex) txd->src[i].src = nir_src_for_ssa(tex->src[i].src.ssa); txd->src[i].src_type = tex->src[i].src_type; } - int coord = nir_tex_instr_src_index(tex, nir_tex_src_coord); - assert(coord >= 0); - nir_def *dfdx = nir_fddx(b, tex->src[coord].src.ssa); - nir_def *dfdy = nir_fddy(b, tex->src[coord].src.ssa); + int coord_idx = nir_tex_instr_src_index(tex, nir_tex_src_coord); + assert(coord_idx >= 0); + nir_def *coord = tex->src[coord_idx].src.ssa; + /* don't take the derivative of the array index */ + if (tex->is_array) + coord = nir_channels(b, coord, nir_component_mask(coord->num_components - 1)); + nir_def *dfdx = nir_fddx(b, coord); + nir_def *dfdy = nir_fddy(b, coord); txd->src[tex->num_srcs] = nir_tex_src_for_ssa(nir_tex_src_ddx, dfdx); txd->src[tex->num_srcs + 1] = nir_tex_src_for_ssa(nir_tex_src_ddy, dfdy); From 7afb7e9a42b68014cf7cb4e41f4c2ac683fbe881 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Wed, 1 Nov 2023 09:42:21 -0700 Subject: [PATCH 072/356] freedreno/drm: Fix race in zombie import The check for the zombie case (racing with final unref of the bo vs removal from table) must be atomic. Fixes spec@ext_image_dma_buf_import@ext_image_dma_buf_import-refcount-multithread Fixes: a192923f99e1 ("freedreno/drm: Restart import on zombie race") Signed-off-by: Rob Clark Part-of: (cherry picked from commit 6ac133c646dd4f6f9d8f644b24da6aeae95c1ce3) --- .pick_status.json | 2 +- src/freedreno/drm/freedreno_bo.c | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 68c19471237..a1f6cbc5efc 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -834,7 +834,7 @@ "description": "freedreno/drm: Fix race in zombie import", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a192923f99e1f0c929b385fefd235453b44a3924", "notes": null diff --git a/src/freedreno/drm/freedreno_bo.c b/src/freedreno/drm/freedreno_bo.c index 3f15f52e799..3c8ed16a59f 100644 --- a/src/freedreno/drm/freedreno_bo.c +++ b/src/freedreno/drm/freedreno_bo.c @@ -61,15 +61,12 @@ lookup_bo(struct hash_table *tbl, uint32_t key) * remove an object it is about to free. Fortunately since table * lookup and removal are protected by the same lock (and table * removal happens before obj free) we can easily detect this by - * checking for refcnt==0. + * checking for refcnt==0 (ie. 1 after p_atomic_inc_return). */ - if (bo->refcnt == 0) { + if (p_atomic_inc_return(&bo->refcnt) == 1) { return &zombie; } - /* found, incr refcnt and return: */ - fd_bo_ref(bo); - if (!list_is_empty(&bo->node)) { mesa_logw("bo was in cache, size=%u, alloc_flags=0x%x\n", bo->size, bo->alloc_flags); From ebbecb9d5224e4bae3fe104eb1b0a52823003738 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Thu, 2 Nov 2023 09:29:25 +0100 Subject: [PATCH 073/356] frontends/va: Map decoder and postproc surfaces for reading If application requests to map surface that was most recently used as decoder or postproc target and also doesn't explicitly set the map flags (vaMapBuffer2) it's very likely the intent is to read from this surface, so we need to map it as such. This fixes regression on radeonsi where mapping NV12 surfaces for reading would fail with applications using vaDeriveImage. The reason for this is that the VA frontend doesn't allow vaDeriveImage for interlaced surfaces so the applications would use vaGetImage fallback, but radeonsi doesn't allocate NV12 surfaces as interlaced anymore. This also fixes mapping other formats surfaces (P010, RGBx, ...) for reading, which never worked before. Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9935 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10048 Reviewed-by: Leo Liu Part-of: (cherry picked from commit c638e61ef5e2e7de097a9b5850eff75022330f68) --- .pick_status.json | 2 +- src/gallium/frontends/va/buffer.c | 5 +++++ src/gallium/frontends/va/image.c | 3 +++ src/gallium/frontends/va/va_private.h | 1 + 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index a1f6cbc5efc..4a060c6ad7f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -804,7 +804,7 @@ "description": "frontends/va: Map decoder and postproc surfaces for reading", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/frontends/va/buffer.c b/src/gallium/frontends/va/buffer.c index dd160439aa6..c1f4d9d882d 100644 --- a/src/gallium/frontends/va/buffer.c +++ b/src/gallium/frontends/va/buffer.c @@ -173,6 +173,11 @@ VAStatus vlVaMapBuffer2(VADriverContextP ctx, VABufferID buf_id, usage = PIPE_MAP_READ; else usage = PIPE_MAP_WRITE; + + /* Map decoder and postproc surfaces also for reading. */ + if (buf->derived_surface.entrypoint == PIPE_VIDEO_ENTRYPOINT_BITSTREAM || + buf->derived_surface.entrypoint == PIPE_VIDEO_ENTRYPOINT_PROCESSING) + usage |= PIPE_MAP_READ; } if (flags & VA_MAPBUFFER_FLAG_READ) diff --git a/src/gallium/frontends/va/image.c b/src/gallium/frontends/va/image.c index d109646d3ff..98d423f2a4d 100644 --- a/src/gallium/frontends/va/image.c +++ b/src/gallium/frontends/va/image.c @@ -435,6 +435,9 @@ vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage *image) pipe_resource_reference(&img_buf->derived_surface.resource, surfaces[0]->texture); img_buf->derived_image_buffer = new_buffer; + if (surf->ctx) + img_buf->derived_surface.entrypoint = surf->ctx->templat.entrypoint; + img->buf = handle_table_add(VL_VA_DRIVER(ctx)->htab, img_buf); mtx_unlock(&drv->mutex); diff --git a/src/gallium/frontends/va/va_private.h b/src/gallium/frontends/va/va_private.h index 5df1bdb6d70..df80a60623c 100644 --- a/src/gallium/frontends/va/va_private.h +++ b/src/gallium/frontends/va/va_private.h @@ -316,6 +316,7 @@ typedef struct { struct { struct pipe_resource *resource; struct pipe_transfer *transfer; + enum pipe_video_entrypoint entrypoint; } derived_surface; unsigned int export_refcount; VABufferInfo export_state; From d0d8b3508d0cd86ae34c4e91edf8bfa9899eaa67 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Sat, 4 Nov 2023 14:16:31 +0000 Subject: [PATCH 074/356] .pick_status.json: Mark 8dda860f83ac30d042dc6beb4438cc925d1fd130 as denominated --- .pick_status.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 4a060c6ad7f..2f19d9b08d1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -724,7 +724,7 @@ "description": "Revert \"radeon/radeon_vce: fix out of target bitrate in CBR mode (H.264)\"", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 2, "main_sha": null, "because_sha": "f7e7cf637e1b457d56b3aaf4d05c928ef9acff17", "notes": null From b03733fc6b08bbb241a6c295ebc9299c7d5fa59f Mon Sep 17 00:00:00 2001 From: Yonggang Luo Date: Thu, 2 Nov 2023 04:43:10 +0800 Subject: [PATCH 075/356] nvk: Should use alignment instead of align align is a function, don't know why align > 0 is working Fixes: 87686a22205 ("nvk: Rework side-band data upload") Signed-off-by: Yonggang Luo Reviewed-by: Faith Ekstrand Part-of: (cherry picked from commit 5e9dcffffde8b4ecf78531c0285a0d296e1fc7a9) --- .pick_status.json | 2 +- src/nouveau/vulkan/nvk_cmd_buffer.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 2f19d9b08d1..ee8dee82cbd 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -614,7 +614,7 @@ "description": "nvk: Should use alignment instead of align", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "87686a22205cf338b59a33b8ec21f9b3d8ad3d29", "notes": null diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.c b/src/nouveau/vulkan/nvk_cmd_buffer.c index f93e6da6899..b6d7ee3979a 100644 --- a/src/nouveau/vulkan/nvk_cmd_buffer.c +++ b/src/nouveau/vulkan/nvk_cmd_buffer.c @@ -183,7 +183,7 @@ nvk_cmd_buffer_upload_alloc(struct nvk_cmd_buffer *cmd, assert(size <= NVK_CMD_BO_SIZE); uint32_t offset = cmd->upload_offset; - if (align > 0) + if (alignment > 0) offset = align(offset, alignment); assert(offset <= NVK_CMD_BO_SIZE); From a317466914af5de90924dd8e24ac047c977e9565 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Date: Fri, 3 Nov 2023 14:15:06 +0100 Subject: [PATCH 076/356] zink: Fix crash on zink_create_screen error path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `zink_internal_create_screen()` function can fail before `screen->loader_lib` and/or `screen->instance` are initialized. The `zink_destroy_screen()` doesn't check those cases and crashes. The error was found by Fedora's CI. The back trace is available at [1]. [1] https://bodhi.fedoraproject.org/updates/FEDORA-2023-c39f82c465 Fixes: 0c2045553fe4 ("zink: use screen destructor for creation fails") Reviewed-by: Erik Faye-Lund Signed-off-by: José Expósito Part-of: (cherry picked from commit 8a635e516ebb12411de8055c3405f36be43269b3) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_screen.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index ee8dee82cbd..401ec8064bc 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -564,7 +564,7 @@ "description": "zink: Fix crash on zink_create_screen error path", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "0c2045553fe4b3f337935cf007ba3920497e51a0", "notes": null diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 74b575ed658..0edb8d5f35e 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -1520,10 +1520,14 @@ zink_destroy_screen(struct pipe_screen *pscreen) if (screen->dev) VKSCR(DestroyDevice)(screen->dev, NULL); - VKSCR(DestroyInstance)(screen->instance, NULL); + if (screen->instance) + VKSCR(DestroyInstance)(screen->instance, NULL); + util_idalloc_mt_fini(&screen->buffer_ids); - util_dl_close(screen->loader_lib); + if (screen->loader_lib) + util_dl_close(screen->loader_lib); + if (screen->drm_fd != -1) close(screen->drm_fd); From 2872c824bc2ae46890b9c9ff997a3c9e514210fc Mon Sep 17 00:00:00 2001 From: Felix DeGrood Date: Tue, 31 Oct 2023 23:15:37 +0000 Subject: [PATCH 077/356] anv: remove CS_FLUSH from query regression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes performance regression introduced by prior refactoring of pipe control code that unnecessarily added CS_FLUSH to query start and end. Issue was diagnosed by Ben L (thank you!) Confirmed this restores performance on: * Borderlands3 +2% * Payday +3% * Factorio +3% * HogwartsLegacy +4% * Ghostrunner +7% Fixes: 6dc95685 (convert genX_query pipe controls to use pc helper) Reviewed-by: Lionel Landwerlin Reviewed-by: Tapani Pälli Part-of: (cherry picked from commit aa23120e4fc674d7da42c4895aa204f300155105) --- .pick_status.json | 2 +- src/intel/vulkan/genX_query.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 401ec8064bc..e9283e286a8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1694,7 +1694,7 @@ "description": "anv: remove CS_FLUSH from query regression", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "6dc95685f3b1a14b2a0d80bc05ea198de8027f44", "notes": null diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c index f42298f85ab..69c5ac83041 100644 --- a/src/intel/vulkan/genX_query.c +++ b/src/intel/vulkan/genX_query.c @@ -695,7 +695,7 @@ emit_query_pc_availability(struct anv_cmd_buffer *cmd_buffer, genx_batch_emit_pipe_control_write (&cmd_buffer->batch, cmd_buffer->device->info, WriteImmediateData, addr, - available, ANV_PIPE_CS_STALL_BIT); + available, 0); } /** From 1c1382b30428f541849b8691d3997d775309a3f3 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 3 Nov 2023 15:50:58 +0000 Subject: [PATCH 078/356] ci: Try really hard to print final result string a630 has been completing jobs, and then corrupting the very last line of UART output - the one where we pass the overall result back from the DUT to the job. The bare-metal monitor will wait for this line to appear, never see it, and then the job times out. Since this line is the most critical one of all to get out, just spam the prints to try to make sure they get through. Signed-off-by: Daniel Stone Part-of: (cherry picked from commit 80b87c18d1630dd622bf58e56f3fb3f39e9fb8ef) --- .gitlab-ci/common/init-stage2.sh | 10 +++++++--- .pick_status.json | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci/common/init-stage2.sh b/.gitlab-ci/common/init-stage2.sh index bc7717322f0..7440893a667 100755 --- a/.gitlab-ci/common/init-stage2.sh +++ b/.gitlab-ci/common/init-stage2.sh @@ -216,7 +216,11 @@ fi [ ${EXIT_CODE} -eq 0 ] && RESULT=pass || RESULT=fail set +x -echo "hwci: mesa: $RESULT" -# Sleep a bit to avoid kernel dump message interleave from LAVA ENDTC signal -sleep 1 + +# Print the final result; both bare-metal and LAVA look for this string to get +# the result of our run, so try really hard to get it out rather than losing +# the run. The device gets shut down right at this point, and a630 seems to +# enjoy corrupting the last line of serial output before shutdown. +for _ in $(seq 0 3); do echo "hwci: mesa: $RESULT"; sleep 1; echo; done + exit $EXIT_CODE diff --git a/.pick_status.json b/.pick_status.json index e9283e286a8..7012bfe3a7a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -624,7 +624,7 @@ "description": "ci: Try really hard to print final result string", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null From 6d1b7d90d18258799fdde62baaa3d405a89e2052 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Mon, 6 Nov 2023 09:37:38 +0000 Subject: [PATCH 079/356] .pick_status.json: Update to 7d6f9ccfbeab050c26775d5e03578a01526cbfcb --- .pick_status.json | 320 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 320 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 7012bfe3a7a..d5b79d0fc14 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,324 @@ [ + { + "sha": "7d6f9ccfbeab050c26775d5e03578a01526cbfcb", + "description": "ci: disable Collabora's LAVA lab for maintance", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "106acbbed9c814bc504421527e6eae884f8e242e", + "description": "rusticl: Avoid repeatedly creating Vecs during Platform initialization", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b4d052e4cbdfc5eeb59276239e8b6d5223ffc6df", + "description": "rusticl: Only put an Arc around PipeScreen where needed", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8103be7faa4435365f72fcde025d9c1f4b37d0f8", + "description": "rusticl: Directly pass a `&Device` to `Mem::map_image` and `Mem::map_buffer`", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8cbb84dc428ff805abc514d810faebe64bb03cdb", + "description": "rusticl/queue: fix implicit flushing of queue dependencies", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "8616c0a52c776ecc7d0e946207ab35213b5ba985", + "notes": null + }, + { + "sha": "52e41d4c97947a1b0c2c86c3b6491958716e998b", + "description": "rusticl/queue: do not send empty lists of event to worker queue", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "8616c0a52c776ecc7d0e946207ab35213b5ba985", + "notes": null + }, + { + "sha": "bf364cbdb40f044d2a11b6fe5636e8a039fdad81", + "description": "radeonsi: Fix offset for linear surfaces on GFX < 9", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "86262b6eac0c232f4b3085cfc86cff9b7de7d11b", + "notes": null + }, + { + "sha": "d2a025ab2b7130c7c485f5f27322ffbb6ea61676", + "description": "radeonsi: move setting registers at the end of si_emit_cb_render_state", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c21bcfd34fb3bde6ceecd57009341f35f37c4124", + "description": "radeonsi: cosmetic changes in si_state_binning.c, si_state_msaa.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6455aaab07ea298a801f2a0d22eddcf466bb4c2a", + "description": "radeonsi: cosmetic changes in si_state_viewport.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "43cdb5140238a8db1460e3e327f17c452ef8852b", + "description": "radeonsi: move max_dist for MSAA into si_state_msaa.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "12c239f829db35923745957a0efdb837f700f65a", + "description": "radeonsi: various isolated cosmetic changes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ca1d37e1db8e477f179969c20cfca48b67efe50d", + "description": "radeonsi: adjust setting PA_SC_EDGERULE once more", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4dfff0f1b74285460b9c4f592df80777695ca2d2", + "description": "radeonsi: use si_shader_uses_streamout properly", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a83532ed6a5c4363cd246c76a22790a254a622c", + "description": "radeonsi: split setting num_threads in si_emit_dispatch_packets", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5a38757fcf7f103595de63df4e6ffce4a6c06ce0", + "description": "radeonsi: cosmetic changes in si_pm4.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "03353bd752299132a2123cee221a7ef2f18918f4", + "description": "radeonsi: decrease PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS to 1024", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6708ccd3bf4ba1668c19bdd2acae033ffd649465", + "description": "radeonsi: remove and inline si_shader::ngg::prim_amp_factor", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e98a4f382085b08b8c509c7706621b70641ff2e4", + "description": "radeonsi: rename ctx -> sctx in si_emit_guardband", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a61d74ed275b03c0f2fde1c237bfdf267afa1c95", + "description": "radeonsi: remove AMD_DEBUG=nogfx", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "00b716cb83e7f7c3dc9545f11bc4ddd4b68f3ad1", + "description": "radeonsi: remove redundant VS_PARTIAL_FLUSH for streamout", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "17de5dd1c46f71683a00c52a59af2c8128b518f2", + "description": "radeonsi: inline si_screen_clear_buffer", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "738babc67aac2e1240f92182f3432e60cdeb2e9c", + "description": "radeonsi: inline si_allocate_gds and si_add_gds_to_buffer_list", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f841a5b991abae28db3651f4d1d01c4adf712eac", + "description": "radeonsi: don't use nir_optimization_barrier_vgpr_amd with ACO", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "44eaf50a34b22dfdbdf67ae5f32e3ff0b9543504", + "description": "ac/surface/tests: cosmetic changes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dfcc7f83a4d41fa7ea9da26523c34e69fc3f68a8", + "description": "ac/surface: cosmetic changes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "355242f0557c3f28ff1414b261eb086362e707db", + "description": "ac/gpu_info: adjust attribute ring size for gfx11", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bd576308851116efeb0d834dae2723d7ca8cb727", + "description": "ac: add missing gfx11.5 bits", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cd0a01522f22646f840cfc5e7557e9f8f84a1e5e", + "description": "ttn: Set sample shading for sample ID reads", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "95ad0c750c5891dab3a678f26a74c95edfed87c9", + "description": "Android.mk: disable android-libbacktrace to build with Android 14", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "520e79a3b5841db034d6d962870432d21fd0989c", + "description": "Android.mk: filter out cflags to build with Android 14 bundled clang", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0e481bf4632b4c6b900d8e3f4b95dc83a5c93679", + "description": "ci: Opt out asahi from clang-format", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "1f1ec1c6bcc2a32a3c1df8c2cc7a2f4e7139b7ec", "description": "rusticl: Show an error message if the version of bindgen can't be detected", From 1371823a1798a01c543c4e2c2a02af054f083623 Mon Sep 17 00:00:00 2001 From: Mauro Rossi Date: Sat, 14 Oct 2023 21:51:24 +0200 Subject: [PATCH 080/356] Android.mk: filter out cflags to build with Android 14 bundled clang Android 14 uses prebuild clang version 17.0.2 By filtering these cflags there are no building errors on previous Android releases. Fixes the following building errors: ../src/c11/time.h:54:8: error: redefinition of 'timespec' struct timespec ^ /media/bigblissdrive/u-x86/out/soong/.intermediates/bionic/libc/libc/android_vendor.34_x86_x86_64_shared/gen/include/bits/timespec.h:46:8: note: previous definition is here struct timespec { ^ 1 error generated. In file included from ../src/util/disk_cache.c:50: ../src/util/disk_cache.h:86:4: error: use of undeclared identifier 'Dl_info' Dl_info info; ^ ... ./src/util/disk_cache.h:114:30: error: incompatible integer to pointer conversion passing 'int' to parameter of type 'const void *' [-Wint-conversion] _mesa_sha1_update(ctx, build_id_data(note), build_id_length(note)); ^~~~~~~~~~~~~~~~~~~ 10 errors generated. ../src/intel/perf/intel_perf.c:91:10: error: call to undeclared function 'major'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] maj = major(sb.st_rdev); ^ ../src/intel/perf/intel_perf.c:92:10: error: call to undeclared function 'minor'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] min = minor(sb.st_rdev); ^ 2 errors generated. ../src/intel/vulkan/anv_allocator.c:295:13: error: call to undeclared function 'futex_wake'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] futex_wake(&table->state.end, INT_MAX); ^ ... ../src/intel/vulkan/anv_allocator.c:711:7: error: call to undeclared function 'futex_wait'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] futex_wait(&pool->block.end, block.end, NULL); ^ 6 errors generated. Cc: mesa-stable Reviewed-by: Roman Stratiienko Part-of: (cherry picked from commit 520e79a3b5841db034d6d962870432d21fd0989c) --- .pick_status.json | 2 +- android/mesa3d_cross.mk | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index d5b79d0fc14..5855a541c33 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -304,7 +304,7 @@ "description": "Android.mk: filter out cflags to build with Android 14 bundled clang", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/android/mesa3d_cross.mk b/android/mesa3d_cross.mk index bfee1eadb2d..4b271dd822e 100644 --- a/android/mesa3d_cross.mk +++ b/android/mesa3d_cross.mk @@ -203,7 +203,9 @@ define m-c-flags endef define filter-c-flags - $(filter-out -std=gnu++17 -std=gnu++14 -std=gnu99 -fno-rtti, \ + $(filter-out -std=gnu++17 -std=gnu++14 -std=gnu99 -fno-rtti \ + -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang \ + -ftrivial-auto-var-init=zero, $(patsubst -W%,, $1)) endef From 3294d74e206f9108adc1972e83e046c43e5a8ad4 Mon Sep 17 00:00:00 2001 From: Mauro Rossi Date: Sat, 14 Oct 2023 21:39:37 +0200 Subject: [PATCH 081/356] Android.mk: disable android-libbacktrace to build with Android 14 Android libbacktrace is not available in Android 14 Fixes the following build error: FAILED: src/util/libmesa_util.a.p/u_debug_stack_android.cpp.o ... ../src/util/u_debug_stack_android.cpp:28:10: fatal error: 'backtrace/Backtrace.h' file not found ^~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. Cc: mesa-stable Reviewed-by: Roman Stratiienko Part-of: (cherry picked from commit 95ad0c750c5891dab3a678f26a74c95edfed87c9) --- .pick_status.json | 2 +- android/Android.mk | 4 ++-- android/mesa3d_cross.mk | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5855a541c33..8429aa363e3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -294,7 +294,7 @@ "description": "Android.mk: disable android-libbacktrace to build with Android 14", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/android/Android.mk b/android/Android.mk index 24110e25d68..d6e2b708446 100644 --- a/android/Android.mk +++ b/android/Android.mk @@ -41,8 +41,8 @@ include $(CLEAR_VARS) LOCAL_SHARED_LIBRARIES := libc libdl libdrm libm liblog libcutils libz libc++ libnativewindow libsync libhardware LOCAL_STATIC_LIBRARIES := libexpat libarect libelf -LOCAL_HEADER_LIBRARIES := libnativebase_headers hwvulkan_headers libbacktrace_headers -MESON_GEN_PKGCONFIGS := backtrace cutils expat hardware libdrm:$(LIBDRM_VERSION) nativewindow sync zlib:1.2.11 libelf +LOCAL_HEADER_LIBRARIES := libnativebase_headers hwvulkan_headers +MESON_GEN_PKGCONFIGS := cutils expat hardware libdrm:$(LIBDRM_VERSION) nativewindow sync zlib:1.2.11 libelf LOCAL_CFLAGS += $(BOARD_MESA3D_CFLAGS) ifneq ($(filter swrast,$(BOARD_MESA3D_GALLIUM_DRIVERS) $(BOARD_MESA3D_VULKAN_DRIVERS)),) diff --git a/android/mesa3d_cross.mk b/android/mesa3d_cross.mk index 4b271dd822e..4bcbd43d170 100644 --- a/android/mesa3d_cross.mk +++ b/android/mesa3d_cross.mk @@ -92,6 +92,7 @@ MESON_GEN_NINJA := \ -Dllvm=$(if $(MESON_GEN_LLVM_STUB),enabled,disabled) \ -Dcpp_rtti=false \ -Dlmsensors=disabled \ + -Dandroid-libbacktrace=disabled \ MESON_BUILD := PATH=/usr/bin:/bin:/sbin:$$PATH ninja -C $(MESON_OUT_DIR)/build From f103f773b69c2acc95964d679ab79bc169493755 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Tue, 31 Oct 2023 10:13:52 +0100 Subject: [PATCH 082/356] radeonsi: Fix offset for linear surfaces on GFX < 9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: 86262b6eac0 ("radeonsi,radv: fix usages of surf_pitch") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9949 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10073 Reviewed-by: Marek Olšák Part-of: (cherry picked from commit bf364cbdb40f044d2a11b6fe5636e8a039fdad81) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/si_texture.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 8429aa363e3..28a61b306e9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -64,7 +64,7 @@ "description": "radeonsi: Fix offset for linear surfaces on GFX < 9", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "86262b6eac0c232f4b3085cfc86cff9b7de7d11b", "notes": null diff --git a/src/gallium/drivers/radeonsi/si_texture.c b/src/gallium/drivers/radeonsi/si_texture.c index 16948db41a7..6003b71f40f 100644 --- a/src/gallium/drivers/radeonsi/si_texture.c +++ b/src/gallium/drivers/radeonsi/si_texture.c @@ -640,7 +640,9 @@ static bool si_resource_get_param(struct pipe_screen *screen, struct pipe_contex if (resource->target == PIPE_BUFFER) { *value = 0; } else { - uint64_t level_offset = tex->surface.is_linear ? tex->surface.u.gfx9.offset[level] : 0; + uint64_t level_offset = 0; + if (sscreen->info.gfx_level >= GFX9 && tex->surface.is_linear) + level_offset = tex->surface.u.gfx9.offset[level]; *value = ac_surface_get_plane_offset(sscreen->info.gfx_level, &tex->surface, plane, layer) + level_offset; } From 984d8051ef4546c8515b6911b0fc60ec9ede69fb Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Sun, 5 Nov 2023 19:28:49 +0100 Subject: [PATCH 083/356] rusticl/queue: do not send empty lists of event to worker queue This saves us a few CPU cycles and makes properly fixing implicit flushes less expensive. Fixes: 8616c0a52c7 ("rusticl/event: flush queues from dependencies") Signed-off-by: Karol Herbst Reviewed-by: @LingMan <18294-LingMan@users.noreply.gitlab.freedesktop.org> Part-of: (cherry picked from commit 52e41d4c97947a1b0c2c86c3b6491958716e998b) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/core/queue.rs | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 28a61b306e9..cd4535db7a4 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -54,7 +54,7 @@ "description": "rusticl/queue: do not send empty lists of event to worker queue", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "8616c0a52c776ecc7d0e946207ab35213b5ba985", "notes": null diff --git a/src/gallium/frontends/rusticl/core/queue.rs b/src/gallium/frontends/rusticl/core/queue.rs index 4a4cb223949..8fa9e5fcd53 100644 --- a/src/gallium/frontends/rusticl/core/queue.rs +++ b/src/gallium/frontends/rusticl/core/queue.rs @@ -10,6 +10,7 @@ use mesa_rust_util::properties::*; use rusticl_opencl_gen::*; use std::collections::HashSet; +use std::mem; use std::sync::mpsc; use std::sync::Arc; use std::sync::Mutex; @@ -131,19 +132,20 @@ impl Queue { pub fn flush(&self, wait: bool) -> CLResult<()> { let mut state = self.state.lock().unwrap(); + let events = mem::take(&mut state.pending); // Update last if and only if we get new events, this prevents breaking application code // doing things like `clFlush(q); clFinish(q);` - if let Some(last) = state.pending.last() { + if let Some(last) = events.last() { state.last = Arc::downgrade(last); + + // This should never ever error, but if it does return an error + state + .chan_in + .send(events) + .map_err(|_| CL_OUT_OF_HOST_MEMORY)?; } - let events = state.pending.drain(0..).collect(); - // This should never ever error, but if it does return an error - state - .chan_in - .send(events) - .map_err(|_| CL_OUT_OF_HOST_MEMORY)?; if wait { // Waiting on the last event is good enough here as the queue will process it in order // It's not a problem if the weak ref is invalid as that means the work is already done From b328f0194214421cec62d4bfa79f20929bd28538 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Sun, 5 Nov 2023 15:01:22 +0100 Subject: [PATCH 084/356] rusticl/queue: fix implicit flushing of queue dependencies Needed by Davinci Resolve. There are two parts to this fix: 1. flush dependencies also on flush, not just finish 2. move the dependency checking logic into Queue::flush as otherwise we miss required implicit flushes. Fixes: 8616c0a52c7 ("rusticl/event: flush queues from dependencies") Signed-off-by: Karol Herbst Reviewed-by: @LingMan <18294-LingMan@users.noreply.gitlab.freedesktop.org> Part-of: (cherry picked from commit 8cbb84dc428ff805abc514d810faebe64bb03cdb) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/api/queue.rs | 8 +----- src/gallium/frontends/rusticl/core/queue.rs | 27 ++++++++++++--------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index cd4535db7a4..fb3efa87850 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -44,7 +44,7 @@ "description": "rusticl/queue: fix implicit flushing of queue dependencies", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "8616c0a52c776ecc7d0e946207ab35213b5ba985", "notes": null diff --git a/src/gallium/frontends/rusticl/api/queue.rs b/src/gallium/frontends/rusticl/api/queue.rs index 01e8e115639..ff1e09a00d7 100644 --- a/src/gallium/frontends/rusticl/api/queue.rs +++ b/src/gallium/frontends/rusticl/api/queue.rs @@ -212,13 +212,7 @@ fn flush(command_queue: cl_command_queue) -> CLResult<()> { #[cl_entrypoint] fn finish(command_queue: cl_command_queue) -> CLResult<()> { // CL_INVALID_COMMAND_QUEUE if command_queue is not a valid host command-queue. - let q = command_queue.get_ref()?; - - for q in q.dependencies_for_pending_events() { - q.flush(false)?; - } - - q.flush(true) + command_queue.get_ref()?.flush(true) } #[cl_entrypoint] diff --git a/src/gallium/frontends/rusticl/core/queue.rs b/src/gallium/frontends/rusticl/core/queue.rs index 8fa9e5fcd53..bd58247b7d9 100644 --- a/src/gallium/frontends/rusticl/core/queue.rs +++ b/src/gallium/frontends/rusticl/core/queue.rs @@ -9,7 +9,6 @@ use mesa_rust::pipe::context::PipeContext; use mesa_rust_util::properties::*; use rusticl_opencl_gen::*; -use std::collections::HashSet; use std::mem; use std::sync::mpsc; use std::sync::Arc; @@ -133,6 +132,7 @@ impl Queue { pub fn flush(&self, wait: bool) -> CLResult<()> { let mut state = self.state.lock().unwrap(); let events = mem::take(&mut state.pending); + let mut queues = Event::deep_unflushed_queues(&events); // Update last if and only if we get new events, this prevents breaking application code // doing things like `clFlush(q); clFinish(q);` @@ -146,23 +146,28 @@ impl Queue { .map_err(|_| CL_OUT_OF_HOST_MEMORY)?; } - if wait { + let last = wait.then(|| state.last.clone()); + + // We have to unlock before actually flushing otherwise we'll run into dead locks when a + // queue gets flushed concurrently. + drop(state); + + // We need to flush out other queues implicitly and this _has_ to happen after taking the + // pending events, otherwise we'll risk dead locks when waiting on events. + queues.remove(self); + for q in queues { + q.flush(false)?; + } + + if let Some(last) = last { // Waiting on the last event is good enough here as the queue will process it in order // It's not a problem if the weak ref is invalid as that means the work is already done // and waiting isn't necessary anymore. - state.last.upgrade().map(|e| e.wait()); + last.upgrade().map(|e| e.wait()); } Ok(()) } - pub fn dependencies_for_pending_events(&self) -> HashSet> { - let state = self.state.lock().unwrap(); - - let mut queues = Event::deep_unflushed_queues(&state.pending); - queues.remove(self); - queues - } - pub fn is_profiling_enabled(&self) -> bool { (self.props & (CL_QUEUE_PROFILING_ENABLE as u64)) != 0 } From 45368572c8fbb8003847947991f13d626c8a3c79 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Tue, 7 Nov 2023 13:27:57 +0000 Subject: [PATCH 085/356] .pick_status.json: Update to aa33ca0a52591961f8ae01dc253354462ed17c18 --- .pick_status.json | 1030 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1030 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index fb3efa87850..9d7debc1f93 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,1034 @@ [ + { + "sha": "aa33ca0a52591961f8ae01dc253354462ed17c18", + "description": "nir/loop_analyze: Fix inverted condition handling in iterations calculation", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "99a7a6648de38f79aa06dabad010ec191aae18f4", + "notes": null + }, + { + "sha": "385b81c8c25360a3838958cf6af9b31871a96d29", + "description": "panfrost: use perf_debug instead of open-coding", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "bc55d150a915d5b2e91cd6ee11af4992d18fcf4f", + "notes": null + }, + { + "sha": "054188bff821f490b157dc0a4740d72793b97212", + "description": "vulkan: Fix pipeline layout allocation scope", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fd08d90d2a77ed7b9055ab2325e9f661ee41978a", + "description": "nir: Don't skip lower_alu if only bit_count needs lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "02bd6bea03e041f08aa04cad8fe85d0989ce0443", + "description": "etnaviv: drm: don't update cmdstream timestamp when skipping submit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "abf8b47e0282690937c81e19983e43ddca4fb979", + "description": "intel/dev: Rename mtl-p to mtl-h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e04e491cc7e85757995144642842bb9b9016cf52", + "description": "intel/dev: Rename mtl-m to mtl-u", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f81c84f08073b4ae4a56e35a779a97787cd99ded", + "description": "intel/dev/wa: Raise error if mesa_defs.json contains unknown platforms", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ba4f6e87c7bd7a638407bbc948367e3c0a1c876f", + "description": "ci/gitlab_gql: stop re-compiling regex now that all users pre-compile it", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "94655ff8111ee3d3f30d991fa7a937837570c60b", + "description": "ci_run_n_monitor: compile target_jobs_regex only once", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a5cb331c6429c9fed32c72e12a67099ce6ad256f", + "description": "gitlab_gql: strip newline at the end of the token file", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea6502d7cc4172550ca560398503b88c75add8a5", + "description": "asahi: Implement ARB_base_instance", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "643428bd7f2852c136d9f16529445e7472722081", + "description": "agx: Emit stack_adjust in the entrypoint", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a5cdc86da0588f22fbf2629ce846b885b60e1c5e", + "description": "agx: Add stack adjust opcode", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "588fd6dfd6f8e9c8a7e9f7c5cc58ceab23a9e495", + "description": "agx: Implement scratch load/store", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c15115de6bfb003f9dc9d96e2094fa7dc707a457", + "description": "agx: Add stack load and store opcodes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "67d0f035ae5791bd08ebb6adffa4307fcf24bf6c", + "description": "docs: Mark timer queries as done on asahi", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "49225db140a29d0e79aa9c2aafe356694f8051cb", + "description": "asahi: Implement timer queries", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bc8232c4a2dae00f24441a56063068844c131802", + "description": "asahi: clc: Handle doorbell and stack mapping intrinsics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "514d432e50941f7cfb3d763c54bdf188fab3fa05", + "description": "agx: Handle doorbell and stack mapping intrinsics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ee0e7b8347eaf245908d02838c53852344c9f8d9", + "description": "agx: Add doorbell and stack mapping opcodes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0aa414897845d45ad22357e69ba21f63498c6454", + "description": "nir: Add AGX-specific doorbell and stack mapping opcodes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5d279ecd04965173e87bbc1ac29c83739ed75c3b", + "description": "asahi: Advertise ARB_clip_control", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c5dddd1d53c8c06eb904432f6bd71456b04eb76d", + "description": "asahi: Plumb clip_halfz bit from RS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fdb995c204c95eae3ecce2509a670f6f12b17f47", + "description": "asahi: Don't use OpenGL clip bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "695aef7f5afad636d1a7df7bc15e2135953412a2", + "description": "asahi: rm unused deqp debug flag", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3270556eaabfec012e8f5b46d7a176a7df1db26c", + "description": "asahi: Advertise geometry shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c6a118b654caecf2c30d6e9a872783eae46a00d2", + "description": "asahi: Wire up geometry shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fe7650bcf7067ee4a4be50f892471687f239be7c", + "description": "asahi: Add GS lowering pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "43e134b106cb09be4626e45de853ce6e17c28495", + "description": "asahi: Add helpers for lowering GS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6a67e220b8de30704319ff2b35432e3144df37a7", + "description": "asahi: Add data structures for geometry shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0b96b62348fa77e385b6e87d6be3a1fb5d4cfd55", + "description": "asahi: Make encoder_allocate public", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c9dd59fef37d2866956df78cf4770e1496228e32", + "description": "asahi: Factor out agx_launch", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "212f71734e194eeb2007a94ead2ecbe476fe772b", + "description": "asahi: Refactor encoder data structure", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "82e3eb4b74680bb5d9904609be25049fc3be6903", + "description": "asahi: Don't hazard track fake resources", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "949741d4c322e5dd6454c7d34586a1ef721684aa", + "description": "asahi: Upload tex/samplers properly with merged shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "21d3c1e0afbab334b9f356f8ea97054fe3dec676", + "description": "asahi: Use the sampler heap", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dc44619c6275eafd7b41b1f2f6ab4e2b5de71ed4", + "description": "asahi: Add sampler heap data structure", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9c575eb18a9532c9207eb9fd1f615635ccd21115", + "description": "asahi: Handle load_sampler_handle", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "df2c145c9149c69332faeb215fa638e1d9fc5420", + "description": "agx: Handle bindless samplers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ca42562c7f48beb44075c1dcb9246e5b15e21346", + "description": "agx: Lower LOD bias earlier", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "972f289740669862c76d8b1d7fb74a8ea2e7ac37", + "description": "asahi: Lower samplers to bindless if needed", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "111e526f19946597b11c6c412d3a24fe47f7d4ab", + "description": "agx: Allow drivers to lower texture handles", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b69ab37bdc269879e6b3bd4ec2647292916fc6e3", + "description": "asahi: Pack non-border colour sampler desc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a74fbb38402c37fd2870a3dc6b25792cc2b53d1d", + "description": "agx: Translate simple subgroup ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "77bb446e901956745302d7250744e21d31ccea6d", + "description": "agx: Add scaffolding for subgroup ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5b754410dac8ce951374bd3ef29ccbd7d883ce08", + "description": "agx: Require 32-bit alignment for EOT offset", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7d7f5013f854090fe27cb52b9a63ff146fbbea1a", + "description": "agx: Cleanup 8-bit math before lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3b84f371a81908e762cb8af2495ddedba18f1717", + "description": "docs/features: Mark ARB_mdi done on asahi", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b18181d924dc607bc0206b65280adc6cbf0a3dc0", + "description": "agx: Check for spilling in release builds", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7b92c6310586e3b17eb922b442561b64cb3b1aff", + "description": "agx: Fix fragment side effects scheduling", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "119e5b9719a1e1cb0cb7e8e74d7b607633bd3ee0", + "notes": null + }, + { + "sha": "e928f45735d671d6d8e588715ae006f30c583246", + "description": "agx: Re-index nir defs to reduce memory usage", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b6b01aa1f255cca3237098ec1dd99b9d4ccd35c9", + "description": "agx: Legalize image MS index", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "019a52fff0d1ac8979937deeec3cda1d01aabb73", + "description": "asahi: Clamp 8-bit integer RTs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8d9d9d02078e83f1aa00617d68b0d6ab9bb65b5d", + "description": "nir/print: handle adjacency", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d0a4a8cda0e767dd3f81c8dc70fb264b9e345bdd", + "description": "nir: Add intrinsics for lowering bindless textures/samplers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "33e80918de614d6576a377d69bd60a21c1b14990", + "description": "nir: Add intrinsics for lowering GS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cc3f20ca6c159c09bb06d4c6db0a499a853c1a54", + "description": "nir: Also gather decomposed primitive count", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b65636ca408585c5172085203985657402a8e710", + "description": "nir/lower_gs_intrinsics: Count decomposed primitives too", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0a35aa3a2b2916c78a21d91ef0e9d844058f4021", + "description": "nir/lower_gs_intrinsics: Append EndPrimitive", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f157a3de4e2aa58b7d4e579b269f4b6540674f09", + "description": "nir/lower_gs_intrinsics: Include primitive counts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a147801f9b3e2f5910efb73d4825b507e2dfd7e7", + "description": "compiler: Make u_decomposed_prims_for_vertices available to CL", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "64f7b70763db56e3c3aebd391726e8c2a9566517", + "description": "compiler: Inline mesa_vertices_per_prim", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7cfe2ecb33e6d2d6e1096b14887e7379336f3af6", + "description": "compiler: Make shader_enums.h CL-safe", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1519ff7ebd65af25dbbd61d8ef27f878fbeb98f9", + "description": "rusticl/memory: fix new clippy::needless-borrow warning", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "98df65a8752571f174d5e8714d34fd76822b9e69", + "description": "rusticl: only support the matching device for gl_sharing", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "57dfc013a6693736ee431224a5983f4fc7224c74", + "notes": null + }, + { + "sha": "6cd78281f646d51e03ecca0473ef595b671b673b", + "description": "aco: deduplicate Format definition", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6e0bf33a89c777dd7ea0887b20adf0a0ab814a69", + "description": "aco: deduplicate instr_class definition", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bdd81c6be7f96ce161868c2c90aa4d580be210ea", + "description": "aco: namespace aco_opcode", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b9a3b74661f0637d52f98d2275aa5387c6dc1b6", + "description": "aco: stop using cstdint", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "04956d54ce5b623e7e9276a0eead49c5db15965a", + "description": "aco: force uniform result for LDS load with uniform address if it can be non uniform", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a4597777fe75e9968a3c8f5c0b9b9bc636199ff7", + "description": "ci: restore sanity (aka. Revert \"ci: don't run sanity in Marge pipelines\")", + "nominated": false, + "nomination_type": 2, + "resolution": 4, + "main_sha": null, + "because_sha": "fac60c140ba57ceebbdcd5278812fe4fa9f737df", + "notes": null + }, + { + "sha": "ab87831ae8bfddba9527b2e3479c87ef7380e3a5", + "description": "aco, radv: vectorize f2f16 if rounding mode is rtz", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b781bd478c10c4468b633e23a0d799b776286584", + "description": "zink+radv/ci: ensure renderer is \"zink on radv\"", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cd600868b4d9ba579868db90e0b36181bb418b6d", + "description": "zink+radv/ci: simplify deqp config", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d1009481c8c4c73aa85c35fd3796c618c5c5c326", + "description": "venus: Add use_guest_vram capset to enable guest-based blob alloc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f71f5cf8562da4d13d5eb9220edecb6dad5b8ccf", + "description": "venus: skip bind sparse info when checking for feedback query", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "7fbf608f2dac486b23030d3b48dd10bb453d9eb8", + "notes": null + }, + { + "sha": "bae7538a020b354c2954461bf5e4788aa1ff34bb", + "description": "r600/sfn: Remove unused sampler reference in emit_tex_lod", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4f86353f4fb1cd36473a2b6bce858a3bc41549c3", + "description": "r600/sfn: Change sampler_index to texture_index in buffer txs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2e83aed8b38d9cf20e01c696fb76e0a3d3ac46dc", + "description": "vk/graphics_state: Add vk_pipeline_flags_feedback_loops helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a02d1cfa9e999c513c5b9544695c77966ebbae7d", + "description": "vk/graphics_state: Support VK_EXT_attachment_feedback_loop_dynamic_state", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "55f3f952aa2f736360d9bb9d2c65e8541cd6de94", + "description": "vk/graphics_state, tu: Rewrite renderpass flags handling", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2b62d90158821f16a9b223a04b2b5a7641b98f34", + "description": "vk/graphics_state: Support VK_KHR_maintenance5", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e6f5d7222c4ce9176c2e508e6abcab542aabc03e", + "description": "vk,lvp,tu,radv,anv: Add common vk_*_pipeline_create_flags() helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cac194ff38140b09e16ebc9d04c438a1addae105", + "description": "panfrost: look at correct blendable format version", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2771245443c4a9367926356cdf72d6eee29d365", + "description": "panfrost: store blendable_formats in panfrost_device", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "40656b6fa05faaa6582a3fc40abdc3a9d99dcf85", + "description": "panfrost: pass blendable formats to pan_pack_color", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f69b573dfc0c7f4e2eab5261fe82861843fc0690", + "description": "panfrost: bypass format-table for null-textures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7d3ef1a0571208a5ba9bdef405b9ee4a5a3399c8", + "description": "panfrost: allow packing formats outside of pan_format.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ac342f68517c06c7505ac0eb723f6cb0a418e059", + "description": "rpi4/ci: skip more timing out tests in the dEQP-VK.ssbo.layout.* group", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "208f94f7ecf14d939dd0a2e3a48b279ef728181e", + "description": "vc4/ci: add piglit \"full run\" variant of vc4-rpi3-gl:arm32 as a manual job", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4c00cff2d21c5e270651e1e8499a443964e88b00", + "description": "v3dv/ci: add \"full run\" variant of v3dv-rpi4-vk:arm64 as a manual job", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "725a4338fcbb2364f975fa38b064483e2d347b64", + "description": "v3d/ci: add \"full run\" variant of v3d-rpi4-gl:arm64 as a manual job", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "85ecf9d487ed2bd8817aea60fc091b32502118c5", + "description": "v3dv/ci: add manual variant of .v3dv-rules", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ca683fb127e280f0d9fb87974f57866eea438a4", + "description": "vc4/ci: add manual variant of .vc4-rules", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8803d6d9d93274ceb846aa05f61f27081d453248", + "description": "broadcom/ci: split broadcom-common manual rules to .broadcom-common-manual-rules", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "692b779f673fd47c18fe306265ab458436eb2d76", + "description": "broadcom/ci: fix list indentation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "be1eb0f6d22cca9d09c80549f75fd060a269a0e9", + "description": "Revert \"ci: disable Collabora's LAVA lab for maintance\"", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9349b7d2fb1d76a3d2ca323033956e36f3314684", + "description": "broadcom/ci: merge gl test lists to use a single deqp instance", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "790fabd38e608a8a1b343d2c36fdd74706806ff2", + "description": "radv: advertise VK_EXT_device_fault", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8097becc7f1be886d91727b87abbdab03dd1d6a1", + "description": "radv: add initial VK_EXT_device_fault support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1dd1c9d610dbe0fffd8708977afc0aa88d4a457c", + "description": "pvr: Fix VK_EXT_texel_buffer_alignment", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "649ebbb0fb7a429034314d12622da23065c2a88d", + "notes": null + }, + { + "sha": "abfd208cb047b24802938576d0f5bd1a7f809eb6", + "description": "nir: fix inserting the break instruction for partial loop unrolling", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "7d6f9ccfbeab050c26775d5e03578a01526cbfcb", "description": "ci: disable Collabora's LAVA lab for maintance", From cf3bd8bedc533a227eb66a0cc8cc507f57ae08ae Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 2 Nov 2023 10:40:00 +0100 Subject: [PATCH 086/356] nir: fix inserting the break instruction for partial loop unrolling If the break in the original loop isn't in the first top-level if, this would have re-inserted it in the wrong block. Fixes this by re-inserting the break block to the corresponding break block in the new loop by using the remap hashtable. fossils-db (NAVI21): Totals from 88 (0.11% of 79330) affected shaders: Instrs: 109602 -> 109929 (+0.30%); split: -0.10%, +0.40% CodeSize: 570968 -> 573332 (+0.41%); split: -0.08%, +0.49% Latency: 1682510 -> 1682505 (-0.00%); split: -0.01%, +0.01% Copies: 12832 -> 12746 (-0.67%); split: -1.54%, +0.87% Branches: 2879 -> 2930 (+1.77%) Deathloop and F1 2023 are affected but I'm not aware of any issues for these two games. Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10001 Signed-off-by: Samuel Pitoiset Reviewed-by: Rhys Perry Part-of: (cherry picked from commit abfd208cb047b24802938576d0f5bd1a7f809eb6) --- .pick_status.json | 2 +- src/compiler/nir/nir_opt_loop_unroll.c | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 9d7debc1f93..cce18ab5e13 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1024,7 +1024,7 @@ "description": "nir: fix inserting the break instruction for partial loop unrolling", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/compiler/nir/nir_opt_loop_unroll.c b/src/compiler/nir/nir_opt_loop_unroll.c index 221775071a5..2d342fbb9ce 100644 --- a/src/compiler/nir/nir_opt_loop_unroll.c +++ b/src/compiler/nir/nir_opt_loop_unroll.c @@ -760,12 +760,8 @@ partial_unroll(nir_shader *shader, nir_loop *loop, unsigned trip_count) /* Insert break back into terminator */ nir_jump_instr *brk = nir_jump_instr_create(shader, nir_jump_break); - nir_if *nif = nir_block_get_following_if(nir_loop_first_block(new_loop)); - if (terminator->continue_from_then) { - nir_instr_insert_after_block(nir_if_last_else_block(nif), &brk->instr); - } else { - nir_instr_insert_after_block(nir_if_last_then_block(nif), &brk->instr); - } + nir_block *break_block = _mesa_hash_table_search(remap_table, terminator->break_block)->data; + nir_instr_insert_after_block(break_block, &brk->instr); /* Delete the original loop header and body */ nir_cf_delete(&lp_header); From 1357b742927ce155fae0bbcbc611ea4e81a48dcf Mon Sep 17 00:00:00 2001 From: Vlad Schiller Date: Thu, 2 Nov 2023 08:08:01 +0000 Subject: [PATCH 087/356] pvr: Fix VK_EXT_texel_buffer_alignment In the commit that enabled the extension, I forgot to add the required properties, which made some tests to fail. Fixes: 649ebbb0fb7 ("pvr: Implement VK_EXT_texel_buffer_alignment") Signed-off-by: Vlad Schiller Reviewed-by: Frank Binns Part-of: (cherry picked from commit 1dd1c9d610dbe0fffd8708977afc0aa88d4a457c) --- .pick_status.json | 2 +- src/imagination/vulkan/pvr_device.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index cce18ab5e13..5bfc8a75eec 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1014,7 +1014,7 @@ "description": "pvr: Fix VK_EXT_texel_buffer_alignment", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "649ebbb0fb7a429034314d12622da23065c2a88d", "notes": null diff --git a/src/imagination/vulkan/pvr_device.c b/src/imagination/vulkan/pvr_device.c index e533b7ca549..de995688680 100644 --- a/src/imagination/vulkan/pvr_device.c +++ b/src/imagination/vulkan/pvr_device.c @@ -591,6 +591,12 @@ static bool pvr_physical_device_get_properties( /* Vulkan 1.2 / VK_KHR_timeline_semaphore */ .maxTimelineSemaphoreValueDifference = UINT64_MAX, + + /* Vulkan 1.3 / VK_EXT_texel_buffer_alignment */ + .storageTexelBufferOffsetAlignmentBytes = 16, + .storageTexelBufferOffsetSingleTexelAlignment = true, + .uniformTexelBufferOffsetAlignmentBytes = 16, + .uniformTexelBufferOffsetSingleTexelAlignment = false, }; snprintf(properties->deviceName, From c531ae3c8083b9a7876a736e5967ca84f86b5cd1 Mon Sep 17 00:00:00 2001 From: Mary Guillemard Date: Fri, 3 Nov 2023 12:23:25 +0100 Subject: [PATCH 088/356] venus: skip bind sparse info when checking for feedback query Fix an assertion when using vkQueueBindSparse. Fixes: 7fbf608f2da ("venus: append query feedback at submission time") Signed-off-by: Mary Guillemard Reviewed-by: Juston Li Part-of: (cherry picked from commit f71f5cf8562da4d13d5eb9220edecb6dad5b8ccf) --- .pick_status.json | 2 +- src/virtio/vulkan/vn_queue.c | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5bfc8a75eec..953eb1798e0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -764,7 +764,7 @@ "description": "venus: skip bind sparse info when checking for feedback query", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "7fbf608f2dac486b23030d3b48dd10bb453d9eb8", "notes": null diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index fd1ad4e23ae..57c0670f24e 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -270,12 +270,15 @@ vn_queue_submission_count_batch_feedback(struct vn_queue_submission *submit, } bool batch_has_feedback_query = false; - uint32_t cmd_count = vn_get_cmd_buffer_count(submit, batch_index); - for (uint32_t i = 0; i < cmd_count; i++) { - struct vn_command_buffer *cmd = vn_command_buffer_from_handle( - vn_get_cmd_handle(submit, batch_index, i)); - if (!list_is_empty(&cmd->builder.query_batches)) - batch_has_feedback_query = true; + + if (submit->batch_type != VK_STRUCTURE_TYPE_BIND_SPARSE_INFO) { + uint32_t cmd_count = vn_get_cmd_buffer_count(submit, batch_index); + for (uint32_t i = 0; i < cmd_count; i++) { + struct vn_command_buffer *cmd = vn_command_buffer_from_handle( + vn_get_cmd_handle(submit, batch_index, i)); + if (!list_is_empty(&cmd->builder.query_batches)) + batch_has_feedback_query = true; + } } if (batch_has_feedback_query) From ae337176ef0ce0012b5d5f2d970723d03623747a Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 12 Oct 2023 15:45:28 -0400 Subject: [PATCH 089/356] agx: Fix fragment side effects scheduling We can't move discards across side effects, or the side effect might not happen. Fixes KHR-GLES31.core.shader_image_load_store.basic-allFormats-load-fs regression. Sigh. CI is up next. Fixes: 119e5b9719a ("agx: Schedule for register pressure") Signed-off-by: Alyssa Rosenzweig Part-of: (cherry picked from commit 7b92c6310586e3b17eb922b442561b64cb3b1aff) --- .pick_status.json | 2 +- src/asahi/compiler/agx_pressure_schedule.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 953eb1798e0..60bcc59cedc 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -504,7 +504,7 @@ "description": "agx: Fix fragment side effects scheduling", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "119e5b9719a1e1cb0cb7e8e74d7b607633bd3ee0", "notes": null diff --git a/src/asahi/compiler/agx_pressure_schedule.c b/src/asahi/compiler/agx_pressure_schedule.c index a58509a191a..9dd940f8e8d 100644 --- a/src/asahi/compiler/agx_pressure_schedule.c +++ b/src/asahi/compiler/agx_pressure_schedule.c @@ -81,6 +81,8 @@ create_dag(agx_context *ctx, agx_block *block, void *memctx) assert(dep != AGX_SCHEDULE_CLASS_INVALID && "invalid instruction seen"); bool barrier = dep == AGX_SCHEDULE_CLASS_BARRIER; + bool discards = + I->op == AGX_OPCODE_SAMPLE_MASK || I->op == AGX_OPCODE_ZS_EMIT; if (dep == AGX_SCHEDULE_CLASS_STORE) add_dep(node, memory_load); @@ -94,6 +96,10 @@ create_dag(agx_context *ctx, agx_block *block, void *memctx) if (dep == AGX_SCHEDULE_CLASS_COVERAGE || barrier) serialize(node, &coverage); + /* Make sure side effects happen before a discard */ + if (discards) + add_dep(node, memory_store); + if (dep == AGX_SCHEDULE_CLASS_PRELOAD) serialize(node, &preload); else From 43540839e7b47e2a0c14aaf1d6ab287d7d13e669 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Mon, 6 Nov 2023 12:51:48 +0100 Subject: [PATCH 090/356] panfrost: use perf_debug instead of open-coding We don't need to open-code perf_debug here... Fixes: bc55d150a91 ("panfrost: Add support for AFBC packing") Part-of: (cherry picked from commit 385b81c8c25360a3838958cf6af9b31871a96d29) --- .pick_status.json | 2 +- src/gallium/drivers/panfrost/pan_resource.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 60bcc59cedc..66eaba23385 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -14,7 +14,7 @@ "description": "panfrost: use perf_debug instead of open-coding", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "bc55d150a915d5b2e91cd6ee11af4992d18fcf4f", "notes": null diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index ad19ad767b7..6f4b5c14ccc 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -1532,9 +1532,8 @@ panfrost_pack_afbc(struct panfrost_context *ctx, if (ratio > screen->max_afbc_packing_ratio) return; - if (dev->debug & PAN_DBG_PERF) { - printf("%i%%: %i KB -> %i KB\n", ratio, old_size / 1024, new_size / 1024); - } + perf_debug(dev, "%i%%: %i KB -> %i KB\n", ratio, old_size / 1024, + new_size / 1024); struct panfrost_bo *dst = panfrost_bo_create(dev, new_size, 0, "AFBC compact texture"); From b419916e7f5a7b250004564ae1aaff340505f197 Mon Sep 17 00:00:00 2001 From: Sviatoslav Peleshko Date: Fri, 3 Nov 2023 03:13:50 +0200 Subject: [PATCH 091/356] nir/loop_analyze: Fix inverted condition handling in iterations calculation In the tagged commit, we stopped actually inverting the condition, and instead relied on the "invert_cond" flag. But we missed a few places where this flag should've been handled too. Also, add a few more tests to make sure this won't regress in the future. Fixes: 99a7a664 ("nir/loop_analyze: Change invert_cond instead of changing the condition") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10012 Signed-off-by: Sviatoslav Peleshko Reviewed-by: Lionel Landwerlin Reviewed-by: Timothy Arceri Part-of: (cherry picked from commit aa33ca0a52591961f8ae01dc253354462ed17c18) --- .pick_status.json | 2 +- src/compiler/nir/nir_loop_analyze.c | 43 ++++++++++++++++--- src/compiler/nir/tests/loop_analyze_tests.cpp | 41 ++++++++++++++++++ 3 files changed, 80 insertions(+), 6 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 66eaba23385..9ec91cce3bd 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4,7 +4,7 @@ "description": "nir/loop_analyze: Fix inverted condition handling in iterations calculation", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "99a7a6648de38f79aa06dabad010ec191aae18f4", "notes": null diff --git a/src/compiler/nir/nir_loop_analyze.c b/src/compiler/nir/nir_loop_analyze.c index b7114ca9a67..4c39de9d949 100644 --- a/src/compiler/nir/nir_loop_analyze.c +++ b/src/compiler/nir/nir_loop_analyze.c @@ -820,14 +820,46 @@ try_eval_const_alu(nir_const_value *dest, nir_alu_instr *alu, return true; } +static nir_op +invert_comparison_if_needed(nir_op alu_op, bool invert) +{ + if (!invert) + return alu_op; + + switch (alu_op) { + case nir_op_fge: + return nir_op_flt; + case nir_op_ige: + return nir_op_ilt; + case nir_op_uge: + return nir_op_ult; + case nir_op_flt: + return nir_op_fge; + case nir_op_ilt: + return nir_op_ige; + case nir_op_ult: + return nir_op_uge; + case nir_op_feq: + return nir_op_fneu; + case nir_op_ieq: + return nir_op_ine; + case nir_op_fneu: + return nir_op_feq; + case nir_op_ine: + return nir_op_ieq; + default: + unreachable("Unsuported comparison!"); + } +} + static int32_t get_iteration(nir_op cond_op, nir_const_value initial, nir_const_value step, - nir_const_value limit, unsigned bit_size, + nir_const_value limit, bool invert_cond, unsigned bit_size, unsigned execution_mode) { nir_const_value span, iter; - switch (cond_op) { + switch (invert_comparison_if_needed(cond_op, invert_cond)) { case nir_op_ine: /* In order for execution to be here, limit must be the same as initial. * Otherwise will_break_on_first_iteration would have returned false. @@ -1060,8 +1092,8 @@ calculate_iterations(nir_def *basis, nir_def *limit_basis, assert(nir_src_bit_size(alu->src[0].src) == nir_src_bit_size(alu->src[1].src)); - iter_int = get_iteration(alu_op, initial, step, limit, bit_size, - execution_mode); + iter_int = get_iteration(alu_op, initial, step, limit, invert_cond, + bit_size, execution_mode); break; case nir_op_fmul: /* Detecting non-zero loop counts when the loop increment is floating @@ -1087,7 +1119,8 @@ calculate_iterations(nir_def *basis, nir_def *limit_basis, if (iter_int < 0) return -1; - if (alu_op == nir_op_ine || alu_op == nir_op_fneu) + nir_op actual_alu_op = invert_comparison_if_needed(alu_op, invert_cond); + if (actual_alu_op == nir_op_ine || actual_alu_op == nir_op_fneu) return iter_int; /* An explanation from the GLSL unrolling pass: diff --git a/src/compiler/nir/tests/loop_analyze_tests.cpp b/src/compiler/nir/tests/loop_analyze_tests.cpp index 2735d4cbcd4..f7c3c41d750 100644 --- a/src/compiler/nir/tests/loop_analyze_tests.cpp +++ b/src/compiler/nir/tests/loop_analyze_tests.cpp @@ -284,6 +284,7 @@ COMPARE_REVERSE(ishl) } INOT_COMPARE(ilt_rev) +INOT_COMPARE(ine) #define KNOWN_COUNT_TEST(_init_value, _cond_value, _incr_value, cond, incr, count) \ TEST_F(nir_loop_analyze_test, incr ## _ ## cond ## _known_count_ ## count) \ @@ -476,6 +477,26 @@ KNOWN_COUNT_TEST(0x00000000, 0x00000001, 0x00000001, uge, iadd, 1) */ KNOWN_COUNT_TEST(0x00000000, 0x00000000, 0x00000001, ine, iadd, 1) +/* uint i = 0; + * while (true) { + * if (!(i != 6)) + * break; + * + * i++; + * } + */ +KNOWN_COUNT_TEST(0x00000000, 0x00000006, 0x00000001, inot_ine, iadd, 6) + +/* uint i = 0; + * while (true) { + * i++; + * + * if (!(i != 8)) + * break; + * } + */ +KNOWN_COUNT_TEST_INVERT(0x00000000, 0x00000001, 0x00000008, inot_ine, iadd, 7) + /* uint i = 0; * while (true) { * if (i == 1) @@ -486,6 +507,26 @@ KNOWN_COUNT_TEST(0x00000000, 0x00000000, 0x00000001, ine, iadd, 1) */ KNOWN_COUNT_TEST(0x00000000, 0x00000001, 0x00000001, ieq, iadd, 1) +/* uint i = 0; + * while (true) { + * if (i == 6) + * break; + * + * i++; + * } + */ +KNOWN_COUNT_TEST(0x00000000, 0x00000006, 0x00000001, ieq, iadd, 6) + +/* uint i = 0; + * while (true) { + * i++; + * + * if (i == 6) + * break; + * } + */ +KNOWN_COUNT_TEST_INVERT(0x00000000, 0x00000001, 0x00000006, ieq, iadd, 5) + /* float i = 0.0; * while (true) { * if (i != 0.0) From 4d887245b94b2e8ef43d7738bf1fe4a9dff83103 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 8 Nov 2023 11:56:14 +0000 Subject: [PATCH 092/356] .pick_status.json: Update to a77ea9555aa00cc12f3d1c440252e940ff552500 --- .pick_status.json | 750 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 750 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 9ec91cce3bd..08f5bf762d4 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,754 @@ [ + { + "sha": "a77ea9555aa00cc12f3d1c440252e940ff552500", + "description": "blorp: WA 16014538804 for DG2, MTL A0", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "de6653dc5d0bd5269772648c0f5edabf74a3877f", + "description": "anv: WA 16014538804 for DG2, MTL A0", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1da1bcd038342a07616a4e743997efd5ba86bd94", + "description": "iris: pull WA 22014412737 into emit_3dprimitive_was", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ce3b99bc143e7c4c65e9f5149e3131e70f44d83", + "description": "iris: Wa 16014538804 for DG2, MTL A0", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b03acb26ba0ee0798b3f1f83cb22f90b9246ddd", + "description": "blorp,anv,iris: refactor blorp functions into something more generic", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "09eb6e31066bd118dad5c6e227db9eae407e3971", + "description": "aco/tests: fix tests with LLVM 18", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e4d9f6fb505d6591d5c6dbfd99439460cb1bda71", + "description": "aco/tests: fix tests with LLVM 17", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9f7e57ce98aa9609d90336b015e15924b9012e68", + "description": "fast_urem_by_const: #ifdef DEBUG an assertion.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c2e6569b4601b8b9a6f581d84eb158efb9e8c18d", + "description": "ci: re-apply two mesh/task query fixes for VKCTS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f8b83520221fa52a4f661f5bbf118d60e3468881", + "description": "ci/bin: Print a summary list of dependency and target jobs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e74238af4233f8db3431d8612a770a3ee7b81062", + "description": "ci/bin: Fix mypy errors in gitlab_gql.py", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b87e092489037daf45a54641e655b6838536ec9f", + "description": "ci/bin: Fix gitlab_gql methods that uses needs DAG", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "c7b67d86191659c4c5b1adc0306e2a1381400178", + "notes": null + }, + { + "sha": "278fc1c22a71a880b41e70a17a143218fb40704d", + "description": "ci/bin: gql: Improve queries for jobs/stages retrieval", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "664e6addeabd3ce209b05a454616c3df4a09b2b7", + "description": "ci/bin: gql: Implement pagination", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c4b8c030125a9c69fdd6804f6258d937359363f9", + "description": "ci/bin: gql: Log the caching errors", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "aa2586b3150b982dbb287626984999e783f90966", + "description": "ci/bin: gql: make the query cache optional", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "609b4bfef84a365fe4a35d02a88ce4798d8c86df", + "description": "ci/bin: Replace AIOHTTPTransport with RequestsHTTPTransport", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "46b033a9bff0008588ace78800bd4e6cfc59debb", + "description": "ci/bin: Fix find_dependency function calls", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "94655ff8111ee3d3f30d991fa7a937837570c60b", + "notes": null + }, + { + "sha": "533082f38470311e59d01c19c72e628c7bdf5ec0", + "description": "iris: Add iris_bufmgr_get_pat_entry_for_bo_flags()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f25043feb44ed312cc6e6d9fdfdc3857440cc5dc", + "description": "anv: Remove anv_bo flags that can be inferred from alloc_flags", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7bdfabb641109437af6c9db1179161f6d5c9043f", + "description": "anv: Calculate mmap mode based on alloc_flags", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "58301c00da873ddae78cdd9dd1dfdd75d6572d4c", + "description": "anv: Change default PAT entry to WC", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ccde1dc18ea81f20139d4f1933b0bf73147a654a", + "description": "anv: Move PAT entry selection to common code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "66dce74d741dd1ede7d05de14d1c1d85fa601c7c", + "description": "anv: Honor memory coherency of the memory type selected", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "740e596c62e98b0d795fe4f83cda048f05e32bbb", + "description": "intel: Add a write combining PAT entry", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0d668f50dc88f06100513abe2ef0fe379ed0ed27", + "description": "intel: Update MTL scanout PAT entry", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "29d4d2640677d3cba4fa32acbe4c6e1109999e1a", + "description": "intel: Add more information about the PAT entry used", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "72ba0677f824d46d0f656eef07b99f5b5ab6ebe5", + "description": "anv: Add missing ANV_BO_ALLOC_EXTERNAL flags when calling anv_device_import_bo()", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f4ed92a8236f611b5a8be9f542d81c5a5e11578a", + "description": "frontends/va: Remove wrong use of ProfileToPipe", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "0996ec3fc6ea3ec3c76392f9aa15a283060f95fa", + "notes": null + }, + { + "sha": "8e196214a0c3d90ed8c4fe53a9cf308402274d2b", + "description": "mesa: Use a switch for state_iter and be more precise about its type", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9c78a3f5ae01a919af8df8e82c5647d70a537d43", + "description": "gallivm/lp_bld_nir_aos: Use TGSI instead of PIPE enum", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "91761006f62678e315a29157e4c7662b74fb115b", + "description": "gallivm: Initialize indir_index to NULL before use", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5f2f75aa671eee2f0973945c7beba2a1380f4d7f", + "description": "mesa/ffvs: Use gl_state_index16 in helpers directly", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e61287888ddfa116f8711bb758b5a3f15f4eb1cf", + "description": "d3d12: GL4.3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a9f8a256a6e4151201a18588a97274dae8f7f10", + "description": "isl: Enable MCS compression on ACM platform", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4de0264010a69d491b734c8cdd0e3d18064c67f3", + "description": "iris: Disable CCS compression on top of MSAA compression on ACM", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e71a9e14f7217410d7654a45fb4575a62553b7ae", + "description": "iris: Disable auxiliary buffer if MSRT is bound as texture", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ba5c4da5da78535e21259258002afe2ebd99ef36", + "description": "d3d12: Use format casting for shader images", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "438be4f9a0890fd9afb8c80e9c539f1253708fa8", + "description": "d3d12: Support ARB_texture_view", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "56589cb02cf5c9b9b469360413ceb7681d3caf86", + "description": "d3d12: Change memory barrier implementation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3e36be7afe1a4ba33d119802d7320d5dfee38db8", + "description": "d3d12: Binding buffers as SSBO/storage image needs to add buffer ranges", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a3899c4530c26c1cbc0e204c71f417fb9ee4e132", + "description": "d3d12: Add a fallback for int clears where value can't be cast to float", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a07bdf0152f4a04ec0294c90675f4fe762f21bb6", + "description": "d3d12: Initialize shader key swizzle for non-int textures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8d04efcc6772e074d9f148bfedd7e426e794ccbc", + "description": "d3d12: Disable common state promotion for non-simultaneous-access textures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "405dead1b7f280a957c0af26e31671b8b8dc479f", + "description": "microsoft/compiler: Set src/dest nir types on image intrinsics when deducing format", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2011b678c538b451eef5a1986adee7e25d6ee04f", + "description": "radv: disable gs_fast_launch=2 by default", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "28ebe62af2cb38f73790f31dce4b0448268eb2e1", + "notes": null + }, + { + "sha": "6a31c7a8416ea2c0d0d8d865073fa796bb37a5d5", + "description": "radeonsi: move SPI_SHADER_IDX_FORMAT into the preamble (it's immutable)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "15293217e24edb673d531ab14372a0be5d20a9a8", + "description": "radeonsi: remove num_params variable from gfx10_shader_ngg", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8edb0c70387b9e1ed1a1e8a97948c6219cf9f696", + "description": "radeonsi: move emitting VGT_TF_PARAM into gfx10_emit_shader_ngg", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "870568b512632e4c636d20039cd52b55362d3031", + "description": "radeonsi: prettify code around PA_SC_LINE_STIPPLE", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "02f52bbca0867ad89d3ea77684521b4490faee9f", + "description": "radeonsi: cosmetic changes in si_emit_db_render_state", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "34b68c9017718409fd46f720c8fe6f3a9758f517", + "description": "radeonsi: don't check DCC compatibility on chips where it's no-op", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ba6595e41f48a1bdb7a5d60075e885c681fc6e7f", + "description": "radeonsi: don't call nir_lower_compute_system_values too many times", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6725edbd2ab31cd1b998892274ab545d6e3aa22f", + "description": "radeonsi/gfx11: use PKT3_SET_CONTEXT_REG_PAIRS_PACKED for PM4 states", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "308d3ad5c25215cf0770c670341063f80a57c3f3", + "description": "radeonsi: restructure blocks in si_emit_graphics_{shader,compute}_pointers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7ead9c4bb11e79796fe7b016f358a4d24d2a38e7", + "description": "radeonsi: restructure blocks in si_setup_nir_user_data", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d26568a6754972efc55f04d574a6a8255dff5133", + "description": "radeonsi: rewrite gfx11_*push*_sh_reg helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ac2244085990927aae79c98750b314cd11bc7f2b", + "description": "radeonsi: rename radeon_*push_*_sh_reg -> gfx11_*push_*_sh_reg", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4659d0dcc2038a7f031d1c4a5f1f27a8c9d3e0a1", + "description": "radeonsi: rename HAS_PAIRS -> HAS_SH_PAIRS_PACKED", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "626e1a01b02ce91c03d5b5412f3f208adb3f1491", + "description": "radeonsi: move buffered_xx_regs into a substructure", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "df87c593f8a55f0a95359dc10bb4652b9ba19cde", + "description": "radeonsi: rewrite PM4 packet building helpers with less duplication", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "65753fa2f9b9b56d193196ef653c33e215bea330", + "description": "radeonsi: upload shaders using a compute queue instead of gfx", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0c773325bb69405858059067a8b558fd8359b09f", + "description": "radeonsi: clean up si_set_streamout_targets", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e7c8d32bfcf8b4fcd80c7ba96694b79d920859dc", + "description": "ac/gpu_info,llvm: trivial cosmetic changes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b74d849a29df8b9de892d5ceb8094300076a669d", + "description": "ac/gpu_info: split has_set_pairs_packets into context and sh flags", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "551f61bdb3fc408809f3b15643f9f399bc19beac", + "description": "zink: apply can_do_invalid_linear_modifier to Venus", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "1c3db3e39a7c14a863358f476069849523cc6fe5", + "notes": null + }, + { + "sha": "a97cc64c44e9ead2c4d5cc53d4d6de9badf50acf", + "description": "meson: Only link libvdrm to Turnip with virtio KMD", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cede4e7ac3c481f872369a1e4873597103b46897", + "description": "meson: Only include virtio when DRM available", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2dc452ec7cab6e71a4d43949d420760b502a4049", + "description": "anv: dynamically allocate utrace batch buffers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9ebb7721b5aafb3b73402ffdae6a57a2e706854b", + "description": "anv: skip engine initialization if vm control not supported", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "282ba9a467cc2e9c4e14c806bcaeec2fcd04c7db", + "description": "v3d/ci: run manual jobs in daily pipeline", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "f2dfb0f6ee1d9ad00097bf1a4361290cea3c8100", + "notes": null + }, + { + "sha": "15291cdefa9b6ee3e16573cf90311ec4c9883543", + "description": "mesa/ffvs: use unreachable instead of assert", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3626d07d66de7a257caa9b4c169acb3f291b25ac", + "description": "ci/etnaviv: Update ci expectation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5e44cee47dfb006923eba601b516ccd874105cd3", + "description": "ci: inject gfx-ci/linux S3 artifacts without rebuilding containers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b23423ce2e0828db4d75a18c8691fb683a9d78b8", + "description": "ci/nouveau: define a kernel and dtb, so we can fetch it from external sources", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "aa33ca0a52591961f8ae01dc253354462ed17c18", "description": "nir/loop_analyze: Fix inverted condition handling in iterations calculation", From 765cb46e2d5b178049cd0eba4b2b3fd3e989008f Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Mon, 6 Nov 2023 11:41:18 -0800 Subject: [PATCH 093/356] zink: apply can_do_invalid_linear_modifier to Venus This unblocks Xwayland with zink-on-venus + sommelier wayland proxy. - For glamor, zink uses linear modifier. - For Virgl clients, classic 3d resource is used and sommelier fixes the modifier and stride infos no matter wl-drm or dma-buf protocol. - For Venus clients: - via the legacy wl-drm protocol, invalid modifier is passed via sommelier, and host recovers the tiling in the way dealing with modifier unaware clients (e.g. I915_GEM_GET_TILING). For hosts unable to recover, they assume linear and venus forces linear on legacy path. - via the new zwp_linux_dmabuf_feedback_v1 (version 3/4) protocol, explicit modifier is used, and zink handles that without issues. This doesn't deserve a driconfig as zink-on-venus to support xserver itself already requires special enough integration beyond a config. Reported-by: Igor Torrente Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10066 Fixes: 1c3db3e39a7 ("zink: blow up broken xservers more reliably") Signed-off-by: Yiwei Zhang Reviewed-by: Ryan Neph Part-of: (cherry picked from commit 551f61bdb3fc408809f3b15643f9f399bc19beac) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_screen.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 08f5bf762d4..484d047be6e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -654,7 +654,7 @@ "description": "zink: apply can_do_invalid_linear_modifier to Venus", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "1c3db3e39a7c14a863358f476069849523cc6fe5", "notes": null diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 0edb8d5f35e..29a377acfb6 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -2879,6 +2879,7 @@ init_driver_workarounds(struct zink_screen *screen) /* these drivers can successfully do INVALID <-> LINEAR dri3 modifier swap */ switch (screen->info.driver_props.driverID) { case VK_DRIVER_ID_MESA_TURNIP: + case VK_DRIVER_ID_MESA_VENUS: screen->driver_workarounds.can_do_invalid_linear_modifier = true; break; default: From f30bd0074e229744b0c0ccf03d5979e3cbdc9835 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Fri, 3 Nov 2023 15:25:48 +0000 Subject: [PATCH 094/356] radv: disable gs_fast_launch=2 by default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This currently causes severe performance problems in Remnant 2 and Alan Wake 2. Signed-off-by: Rhys Perry Reviewed-by: Timur Kristóf Reviewed-by: Samuel Pitoiset Fixes: 28ebe62af2cb ("radv: enable mesh shader gs_fast_launch=2 and multi-row export") Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10071 Part-of: (cherry picked from commit 2011b678c538b451eef5a1986adee7e25d6ee04f) --- .pick_status.json | 2 +- docs/envvars.rst | 2 ++ src/amd/vulkan/radv_debug.h | 1 + src/amd/vulkan/radv_device.c | 3 ++- src/amd/vulkan/radv_instance.c | 1 + src/amd/vulkan/radv_pipeline.c | 5 +++++ src/amd/vulkan/radv_shader.h | 1 + 7 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 484d047be6e..808371d2157 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -454,7 +454,7 @@ "description": "radv: disable gs_fast_launch=2 by default", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "28ebe62af2cb38f73790f31dce4b0448268eb2e1", "notes": null diff --git a/docs/envvars.rst b/docs/envvars.rst index 4be7a1fe1f2..8660213bb54 100644 --- a/docs/envvars.rst +++ b/docs/envvars.rst @@ -1342,6 +1342,8 @@ RADV driver environment variables enable wave64 for ray tracing shaders (GFX10+) ``video_decode`` enable experimental video decoding support + ``gsfastlaunch2`` + use GS_FAST_LAUNCH=2 for Mesh shaders (GFX11+) .. envvar:: RADV_TEX_ANISO diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h index fb18bf0c8cb..91174c0323e 100644 --- a/src/amd/vulkan/radv_debug.h +++ b/src/amd/vulkan/radv_debug.h @@ -88,6 +88,7 @@ enum { RADV_PERFTEST_NGG_STREAMOUT = 1u << 11, RADV_PERFTEST_VIDEO_DECODE = 1u << 12, RADV_PERFTEST_DMA_SHADERS = 1u << 13, + RADV_PERFTEST_GS_FAST_LAUNCH_2 = 1u << 14, }; bool radv_init_trace(struct radv_device *device); diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 4aa4b930c82..17ead40604c 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -940,7 +940,8 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr device->pbb_allowed = device->physical_device->rad_info.gfx_level >= GFX9 && !(device->instance->debug_flags & RADV_DEBUG_NOBINNING); - device->mesh_fast_launch_2 = device->physical_device->rad_info.gfx_level >= GFX11; + device->mesh_fast_launch_2 = (device->instance->perftest_flags & RADV_PERFTEST_GS_FAST_LAUNCH_2) && + device->physical_device->rad_info.gfx_level >= GFX11; /* The maximum number of scratch waves. Scratch space isn't divided * evenly between CUs. The number is only a function of the number of CUs. diff --git a/src/amd/vulkan/radv_instance.c b/src/amd/vulkan/radv_instance.c index 03d647ad5a5..ffe4bb3a32a 100644 --- a/src/amd/vulkan/radv_instance.c +++ b/src/amd/vulkan/radv_instance.c @@ -99,6 +99,7 @@ static const struct debug_control radv_perftest_options[] = {{"localbos", RADV_P {"ngg_streamout", RADV_PERFTEST_NGG_STREAMOUT}, {"video_decode", RADV_PERFTEST_VIDEO_DECODE}, {"dmashaders", RADV_PERFTEST_DMA_SHADERS}, + {"gsfastlaunch2", RADV_PERFTEST_GS_FAST_LAUNCH_2}, {NULL, 0}}; const char * diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index d18f5b04875..c855025858c 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -214,6 +214,11 @@ radv_generate_pipeline_key(const struct radv_device *device, const VkPipelineSha key.vertex_robustness1 = 1u; } + for (uint32_t i = 0; i < num_stages; i++) { + if (stages[i].stage == VK_SHADER_STAGE_MESH_BIT_EXT && device->mesh_fast_launch_2) + key.mesh_fast_launch_2 = 1u; + } + return key; } diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index f902d3e1e94..0582e6b1e47 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -99,6 +99,7 @@ struct radv_pipeline_key { uint32_t mesh_shader_queries : 1; uint32_t vertex_robustness1 : 1; + uint32_t mesh_fast_launch_2 : 1; struct radv_shader_stage_key stage_info[MESA_VULKAN_SHADER_STAGES]; From b8112ed6db7e0363dda5eb40832395f5786d8bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20No=C3=ABl?= Date: Mon, 6 Nov 2023 14:29:56 +0100 Subject: [PATCH 095/356] frontends/va: Remove wrong use of ProfileToPipe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `context->templat.profile` variable is already of enum pipe_video_profile. Fixes: 0996ec3fc6e ("frontends/va: Add profile param when querying PIPE_VIDEO_CAP_ENC_QUALITY_LEVEL") Signed-off-by: Corentin Noël Reviewed-by: Erik Faye-Lund Part-of: (cherry picked from commit f4ed92a8236f611b5a8be9f542d81c5a5e11578a) --- .pick_status.json | 2 +- src/gallium/frontends/va/picture.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 808371d2157..4ed98686374 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -284,7 +284,7 @@ "description": "frontends/va: Remove wrong use of ProfileToPipe", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "0996ec3fc6ea3ec3c76392f9aa15a283060f95fa", "notes": null diff --git a/src/gallium/frontends/va/picture.c b/src/gallium/frontends/va/picture.c index 4c9339ff481..ffedf77d0c8 100644 --- a/src/gallium/frontends/va/picture.c +++ b/src/gallium/frontends/va/picture.c @@ -1148,7 +1148,7 @@ vlVaEndPicture(VADriverContextP ctx, VAContextID context_id) context->desc.h264enc.frame_num_cnt++; /* keep other path the same way */ - if (!screen->get_video_param(screen, ProfileToPipe(context->templat.profile), + if (!screen->get_video_param(screen, context->templat.profile, context->decoder->entrypoint, PIPE_VIDEO_CAP_ENC_QUALITY_LEVEL)) { From 9d8e3aac70c44440dfc5b959e96112f9a1d36c15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Thu, 12 Oct 2023 13:38:57 -0700 Subject: [PATCH 096/356] anv: Add missing ANV_BO_ALLOC_EXTERNAL flags when calling anv_device_import_bo() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This flag is required to properly calculate the PAT index of the imported BO. Cc: mesa-stable Signed-off-by: José Roberto de Souza Reviewed-by: Lionel Landwerlin Part-of: (cherry picked from commit 72ba0677f824d46d0f656eef07b99f5b5ab6ebe5) --- .pick_status.json | 2 +- src/intel/vulkan/anv_allocator.c | 1 + src/intel/vulkan/anv_android.c | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 4ed98686374..eae46bc0166 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -274,7 +274,7 @@ "description": "anv: Add missing ANV_BO_ALLOC_EXTERNAL flags when calling anv_device_import_bo()", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c index 56073b42899..f527aa8d036 100644 --- a/src/intel/vulkan/anv_allocator.c +++ b/src/intel/vulkan/anv_allocator.c @@ -1646,6 +1646,7 @@ anv_device_import_bo(struct anv_device *device, assert(!(alloc_flags & (ANV_BO_ALLOC_MAPPED | ANV_BO_ALLOC_SNOOPED | ANV_BO_ALLOC_FIXED_ADDRESS))); + assert(alloc_flags & ANV_BO_ALLOC_EXTERNAL); struct anv_bo_cache *cache = &device->bo_cache; diff --git a/src/intel/vulkan/anv_android.c b/src/intel/vulkan/anv_android.c index 9dd3114f621..2cea3fc9f36 100644 --- a/src/intel/vulkan/anv_android.c +++ b/src/intel/vulkan/anv_android.c @@ -348,6 +348,7 @@ anv_image_init_from_gralloc(struct anv_device *device, * */ result = anv_device_import_bo(device, dma_buf, + ANV_BO_ALLOC_EXTERNAL | ANV_BO_ALLOC_IMPLICIT_SYNC | ANV_BO_ALLOC_IMPLICIT_WRITE, 0 /* client_address */, @@ -431,6 +432,7 @@ anv_image_bind_from_gralloc(struct anv_device *device, */ struct anv_bo *bo = NULL; VkResult result = anv_device_import_bo(device, dma_buf, + ANV_BO_ALLOC_EXTERNAL | ANV_BO_ALLOC_IMPLICIT_SYNC | ANV_BO_ALLOC_IMPLICIT_WRITE, 0 /* client_address */, From 41b7bd398c906ba2d372c19269335c5ca842cc02 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 8 Nov 2023 18:20:43 +0000 Subject: [PATCH 097/356] .pick_status.json: Mark 227300345ed38377190b0eaf08694d5c42ee7e60 as denominated --- .pick_status.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index eae46bc0166..64b330fbf71 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2894,7 +2894,7 @@ "description": "radv: stop using vk_render_pass_state::render_pass", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 2, "main_sha": null, "because_sha": null, "notes": null From 65109bc8ac33e24af77c1b28b712dae414111ebb Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 8 Nov 2023 18:50:58 +0000 Subject: [PATCH 098/356] VERSION: bump for 23.3.0-rc3 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index c3c48c1b23b..6a1f4f7ca05 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -23.3.0-rc2 +23.3.0-rc3 From 928e9db00863fa229af57633b5666011d301cd20 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Fri, 10 Nov 2023 14:42:58 +0000 Subject: [PATCH 099/356] .pick_status.json: Update to 56451ce773c11094a8c08fdc6b500bb8bdcf37e1 --- .pick_status.json | 510 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 510 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 64b330fbf71..48005d69e54 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,514 @@ [ + { + "sha": "56451ce773c11094a8c08fdc6b500bb8bdcf37e1", + "description": "v3d: Don't implicitly clear the content of the imported buffer", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "656afd8ede86c1203836f6c2e402ad89f638965b", + "description": "bin/gitlab_gql: fix command in example", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2cf031155b1e8f4f3655856d3f01706ce7142cb1", + "description": "gitlab_gql: make `--rev` optional, defaulting to `HEAD`", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cc37af8fbc363f72e007ec569f30d32a5e299e5b", + "description": "bin/gitlab_gql: resolve sha locally to be able to use things like `HEAD`", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "781e1a34cf6409d66ec9741bf740dad3b657a029", + "description": "radv/ci: fix `vkcts-navi21-valve` execution", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "5e44cee47dfb006923eba601b516ccd874105cd3", + "notes": null + }, + { + "sha": "05fb6b9c7d768b95c75a1f6cd2885cb6e12dcb95", + "description": "Android.mk: be able to build radeonsi without llvm", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "04ffef15da1903c7f2497e24d96f742e476b3e8d", + "description": "ir3/ra: Don't swap killed sources for early-clobber destination", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "d4b5d2a0204f8c09a2e8c4dc022f0f05adafa50b", + "notes": null + }, + { + "sha": "aba837ef710d1267ce8a16b84d59a712a2da1863", + "description": "radv+zink/ci: add navi10 flakes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5819e0a52738e2f64c8482cfef25a06772f7a0c4", + "description": "radv+zink/ci: add polaris10 flakes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "37c7ffb958b00500210e133b7ee1286358aee750", + "description": "radv/ci: add polaris10 flakes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3af19432e97f3ed8c4a925795b918f5c84eefb39", + "description": "radv/ci: add vega10 flakes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d42d2ee3a56a4e0faef8d9828fd707250dc8a8cb", + "description": "radv/ci: add navi21 flakes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d4499c4cb26b87876f0ee16562a4c5b2bd4f8860", + "description": "isl: disable MCS compression on R9G9B9E5", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "631dc5b5e6ca6fdc566a8b55039a5df0e81edb0f", + "description": "drirc: enable `vk_wsi_force_swapchain_to_current_extent` for \"The Talos Principle VR\"", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "29400a56d51d9da19eb0eccdc4b5563ee8510ade", + "description": "tu: Fix getting VkDescriptorSetVariableDescriptorCountLayoutSupport", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "17e135d3d4a4bb1d835aba6ffdf1997e23360843", + "description": "vulkan: fix potential memory leak in create_rect_list_pipeline()", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "514c10344e6f2e99776c4bcc907d500f0837dc2b", + "notes": null + }, + { + "sha": "7d85656fa70b731da4f01ec7598c43706a1325cd", + "description": "ci: tag sanity, rustfmt and clang-format job as a \"placeholder\" job", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b89467b1a527b6ac5c712710cd37b493042bd937", + "description": "gitlab: make commit more commit-like formatted", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4b9e80a9255bcd91c7ba345ef8062d1f7b7d97e8", + "description": "gallium: Add udl (DisplayLink) to the list of kmsro drivers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "720c8293417b69c9633a43b2c734be2a6325d698", + "description": "gallium: Add more TinyDRM drivers to the list of kmsro drivers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b3803639382445f5a61f8ed8737c40a28f5908ed", + "description": "tu: Make sure copies to half-float formats are bit exact", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3d3176aa1776d7784e3ed63136472d05314b488e", + "description": "tu/a7xx: Fix occlusion queries on pre-A740 GPUs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cca5a4191d9c68f572287a44ccdf59becfa55742", + "description": "ci: disable lima farm as it appears to be down", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8e7df505fc8537ea58e25b31d6d132db81b066f6", + "description": "tu: Fix order of rasterizer_discard check", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "40e74ed5d3c4da4f7ac1b5a682a9150411ff5e83", + "description": "tu: Assume no raster-order attachment access with NULL DS/blend state", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "236da520f4251a5122976194ac247a36ce1f19ca", + "description": "intel/common/xe: Re implement xe_gem_read_render_timestamp() with xe_gem_read_correlate_cpu_gpu_timestamp()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "feae70f608236096b91b145b4967ebc917833773", + "description": "intel/ds: use improved timestamp correlation if available", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b2bf141b6af24575e90fb9953114c4bd80f24a4d", + "description": "perfetto/pps-producer: add optimized cpu/gpu timestamp correlation support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fdec724bd17c2f245e9385ddc193395839785a0b", + "description": "anv: Make use of intel_gem_read_correlate_cpu_gpu_timestamp()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "01aafa14d4f6c9dfd4e74d033dcd7c34a1a59b33", + "description": "anv: Reduce ifdefs in anv_GetCalibratedTimestampsEXT()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ae0df368a80d526b71ff135380995cb0399b7714", + "description": "intel/common: Add intel_gem_read_correlate_cpu_gpu_timestamp()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b6dbbd3ff79e861bf9605d92049c8906942916e2", + "description": "radeonsi/ci: document new failures and flakes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "02942d6e7ec5c8e3fa6f55918603ca63620ec5d0", + "description": "aco: Update printed block kinds", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "073b87653943b95fb286f41fbbff301230fb678c", + "description": "intel/fs/xe2+: Don't special case SEL_EXEC in inferred_exec_pipe().", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "23e14a6c2711abe7b93858a1feef8dd736cc7040", + "description": "intel/eu/xe2+: Add definition for size of GRF space on Xe2.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ff3814abdd791c2ff7ab0dd0cbb4dbaa513208eb", + "description": "intel/fs/xe2+: Handle extended math instructions as in-order in SWSB pass.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5fb6760f11089c9cbcd1ffa76d34e807bbb1d613", + "description": "intel/fs/xe2+: Teach SWSB pass about the behavior of double precision instructions.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9e446c9282319de961c10d67f859fa9ac37e3ac4", + "description": "intel/fs/xe2+: Add comment reminding us to take advantage of the 32 SBID tokens.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "15d6c6ab1102e933d2bd6b419946b163e0596116", + "description": "intel/eu/xe2+: Add support for 10-bit SWSB representation on Xe2+ platforms.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "40416850f186615d4d2cce95323137262a6789ba", + "description": "intel/compiler: Re-enable opt_zero_samples() in many cases for Gfx12.5", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "daeab51a628a61dade7bac0c6d06361714f57e1b", + "description": "intel/compiler: Re-enable opt_zero_samples() for Gfx7+", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ef8553082eec11c0148c3decec139285e1527c5f", + "description": "intel/compiler: Rework opt_split_sends to not rely/modify LOAD_PAYLOAD", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e017bcae59ace7972e35571974d32b25c3381cd5", + "description": "intel/compiler: Clarify the asserts in nir_load_workgroup_id lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "534323f2af632e09314522059df551925a148900", + "description": "ci/zink: disable nheko trace, as it sometimes crashes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fa7ec4226bdf48bf63438e303af83ecd58ec95f2", + "description": "Revert \"ci/freedreno: disable antichambers trace\"", + "nominated": true, + "nomination_type": 2, + "resolution": 0, + "main_sha": null, + "because_sha": "f562e37c9325cc107d4f02026946acc14c75b323", + "notes": null + }, + { + "sha": "b1fc5390c6d7422adcc74020d45e8e590c4241ae", + "description": "freedreno/a6xx: Fix antichamber trace replay assert", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b33aa7b01a2240f6eca0bc7082640ec9a5f1fa6a", + "description": "aco: don't CSE v_permlane across exec", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a9bdf58c36e6d520b3bfccfcfa06543e932374a6", + "description": "freedreno/a6xx: Assume MOD_INVALID imports are linear", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "33de58154f801eea84e5a9cdbda9cb6010e5ed47", + "notes": null + }, + { + "sha": "f4601d82c134fbffea4f153277300d8e98f96f84", + "description": "intel/compiler: Remove unused parameter from brw_nir_analyze_ubo_ranges()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d2125dac859607ceef1586730d7b9797d76b7cd7", + "description": "intel/compiler: Take more precise params in brw_nir_optimize()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c4be90b4ba361360f811787a0c84e7ed9d27cfe1", + "description": "intel/compiler: Remove unused parameter from brw_nir_adjust_payload()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "a77ea9555aa00cc12f3d1c440252e940ff552500", "description": "blorp: WA 16014538804 for DG2, MTL A0", From e59c24f6b89a0992a4a7a43831f96e3421dc306f Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Fri, 10 Nov 2023 14:45:03 +0000 Subject: [PATCH 100/356] .pick_status.json: Mark fa7ec4226bdf48bf63438e303af83ecd58ec95f2 as denominated --- .pick_status.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 48005d69e54..97780ecf826 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -444,7 +444,7 @@ "description": "Revert \"ci/freedreno: disable antichambers trace\"", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 2, "main_sha": null, "because_sha": "f562e37c9325cc107d4f02026946acc14c75b323", "notes": null From 8d9fa8ef99ae2699a9a365d71f281865ae717e84 Mon Sep 17 00:00:00 2001 From: Paulo Zanoni Date: Fri, 8 Sep 2023 15:10:33 -0700 Subject: [PATCH 101/356] vulkan: fix potential memory leak in create_rect_list_pipeline() I was playing around with possible improvements to STACK_ARRAY(), and one of my experiments made gcc point us that we were not freeing 'stages'. Fixes: 514c10344e6f ("vulkan/meta: Add a concept of rect pipelines") Reviewed-by: Karmjit Mahil Reviewed-by: Faith Ekstrand Signed-off-by: Paulo Zanoni Part-of: (cherry picked from commit 17e135d3d4a4bb1d835aba6ffdf1997e23360843) --- .pick_status.json | 2 +- src/vulkan/runtime/vk_meta.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 97780ecf826..164c39fe3e9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -154,7 +154,7 @@ "description": "vulkan: fix potential memory leak in create_rect_list_pipeline()", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "514c10344e6f2e99776c4bcc907d500f0837dc2b", "notes": null diff --git a/src/vulkan/runtime/vk_meta.c b/src/vulkan/runtime/vk_meta.c index 1ea4dc77b0e..f1570908fb9 100644 --- a/src/vulkan/runtime/vk_meta.c +++ b/src/vulkan/runtime/vk_meta.c @@ -398,6 +398,7 @@ create_rect_list_pipeline(struct vk_device *device, pipeline_out); STACK_ARRAY_FINISH(dyn_state); + STACK_ARRAY_FINISH(stages); return result; } From 193256f9e77f7ca4be29926dcf84abdcf6737b8d Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Wed, 8 Nov 2023 16:40:49 +0200 Subject: [PATCH 102/356] isl: disable MCS compression on R9G9B9E5 Not supported according to the docs and will trigger an assert isl_get_render_compression_format(). Signed-off-by: Lionel Landwerlin Cc: mesa-stable Reviewed-by: Sagar Ghuge Part-of: (cherry picked from commit d4499c4cb26b87876f0ee16562a4c5b2bd4f8860) --- .pick_status.json | 2 +- src/intel/isl/isl.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 164c39fe3e9..c796fc086ed 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -124,7 +124,7 @@ "description": "isl: disable MCS compression on R9G9B9E5", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c index d96879c6f00..e8216ae138f 100644 --- a/src/intel/isl/isl.c +++ b/src/intel/isl/isl.c @@ -2774,6 +2774,13 @@ isl_surf_get_mcs_surf(const struct isl_device *dev, if (intel_device_info_is_dg2(dev->info)) return false; + /* On Gfx12+ this format is not listed in TGL PRMs, Volume 2b: Command + * Reference: Enumerations, RenderCompressionFormat + */ + if (ISL_GFX_VER(dev) >= 12 && + surf->format == ISL_FORMAT_R9G9B9E5_SHAREDEXP) + return false; + /* The following are true of all multisampled surfaces */ assert(surf->samples > 1); assert(surf->dim == ISL_SURF_DIM_2D); From 30135c2a89aeb430adc92939e5b6f985193c05ff Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Thu, 2 Nov 2023 12:03:35 +0100 Subject: [PATCH 103/356] ir3/ra: Don't swap killed sources for early-clobber destination We have an optimization to try to swap regular live intervals with killed sources when evicting them fails in order to make a contiguous space for the destination to fit in, but this doesn't work when the destination is early-clobber. Fixes dEQP-GLES31.functional.synchronization.inter_invocation.image_atomic_read_write on a650+. Fixes: d4b5d2a ("ir3/ra: Use killed sources in register eviction") Closes: #8886 Part-of: (cherry picked from commit 04ffef15da1903c7f2497e24d96f742e476b3e8d) --- .pick_status.json | 2 +- src/freedreno/ci/freedreno-a660-fails.txt | 4 ---- src/freedreno/ir3/ir3_ra.c | 8 ++++++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index c796fc086ed..48fb97fdf8a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -64,7 +64,7 @@ "description": "ir3/ra: Don't swap killed sources for early-clobber destination", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "d4b5d2a0204f8c09a2e8c4dc022f0f05adafa50b", "notes": null diff --git a/src/freedreno/ci/freedreno-a660-fails.txt b/src/freedreno/ci/freedreno-a660-fails.txt index 1b9f84e05c8..975102e9cee 100644 --- a/src/freedreno/ci/freedreno-a660-fails.txt +++ b/src/freedreno/ci/freedreno-a660-fails.txt @@ -5,10 +5,6 @@ KHR-GL46.shader_image_load_store.basic-allTargets-store,Fail KHR-GL46.shader_subroutine.control_flow_and_returned_subroutine_values_used_as_subroutine_input,Fail KHR-GL46.tessellation_shader.single.max_patch_vertices,Fail -# https://gitlab.freedesktop.org/mesa/mesa/-/issues/8886 -dEQP-GLES31.functional.synchronization.inter_invocation.image_atomic_read_write,Crash - - # Fails when TU_DEBUG=forcebin is set gmem-dEQP-VK.spirv_assembly.instruction.graphics.variable_pointers.graphics.writes_two_buffers_vert,Fail diff --git a/src/freedreno/ir3/ir3_ra.c b/src/freedreno/ir3/ir3_ra.c index 0ec4530d48e..6ad5b8c1902 100644 --- a/src/freedreno/ir3/ir3_ra.c +++ b/src/freedreno/ir3/ir3_ra.c @@ -879,9 +879,13 @@ try_evict_regs(struct ra_ctx *ctx, struct ra_file *file, if (evicted) continue; - /* If we couldn't evict this range, we may be able to swap it with a - * killed range to acheive the same effect. + /* If we couldn't evict this range, but the register we're allocating is + * allowed to overlap with a killed range, then we may be able to swap it + * with a killed range to acheive the same effect. */ + if (is_early_clobber(reg) || is_source) + return false; + foreach_interval (killed, file) { if (!killed->is_killed) continue; From 81ab4a3a01536495329d38d060734fc00ade77ea Mon Sep 17 00:00:00 2001 From: Roman Stratiienko Date: Thu, 9 Nov 2023 23:27:46 +0200 Subject: [PATCH 104/356] v3d: Don't implicitly clear the content of the imported buffer v3d driver will implicitly clear the buffer's content on the first write operation. This clearing operation is helpful for allocated buffers, initializing them with zeros instead of having memory garbage. Also, this avoids reading the buffer from the RAM to the GPU cache before rendering, making the first write operation slightly faster. The clearing operation should not happen for imported buffers where the buffer may already contain valuable data and the user may want to render into the buffer only partially. Reviewed-by: Iago Toral Quiroga Signed-off-by: Roman Stratiienko Part-of: (cherry picked from commit 56451ce773c11094a8c08fdc6b500bb8bdcf37e1) --- .pick_status.json | 2 +- src/gallium/drivers/v3d/v3d_resource.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 48fb97fdf8a..591188caac8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4,7 +4,7 @@ "description": "v3d: Don't implicitly clear the content of the imported buffer", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/v3d/v3d_resource.c b/src/gallium/drivers/v3d/v3d_resource.c index d9a79614dd1..d4cccdb148d 100644 --- a/src/gallium/drivers/v3d/v3d_resource.c +++ b/src/gallium/drivers/v3d/v3d_resource.c @@ -1017,6 +1017,9 @@ v3d_resource_from_handle(struct pipe_screen *pscreen, slice->stride = whandle->stride; } + /* Prevent implicit clearing of the imported buffer contents. */ + rsc->writes = 1; + return prsc; fail: From c6a9afc57a96815391a3adba6b7b3ffcc8d2345d Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Mon, 13 Nov 2023 20:04:53 +0000 Subject: [PATCH 105/356] .pick_status.json: Update to 08f851f4361cfbdb211dc70d03cf3ebff331c3ee --- .pick_status.json | 460 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 460 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 591188caac8..12d874cc5b1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,464 @@ [ + { + "sha": "08f851f4361cfbdb211dc70d03cf3ebff331c3ee", + "description": "anv: Bring back the non optimized version of build_load_render_surface_state_address()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c5ccd55a8e48fc484d7c365b4d0473ea528dd962", + "description": "v3d/ci: add new failures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8e03c189147cd226177bd5134dc1eb11cf6791c8", + "description": "frontends/va: add intra-refresh in VAAPI interface", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7fae1c46adcb33829786686c5232664a95ec10cf", + "description": "radonesi/vcn: enable intra-refresh in vcn encoders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5524faa22c8bac715c8e5c4d2e30de144bfd35de", + "description": "radeonsi/vcn: change intra-ref name", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "66c75b0ca2321d375ae56fb62f6a7e0a9d067d83", + "description": "radeonsi/vcn: preparation for enc intra-refresh", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f69863fd5a75fdd2c5906707c7ed9c289b4abcd8", + "description": "radv/radeonsi: Forward correct GPU instance to umr.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fd801407234e7311146490e495b4415f42fc6291", + "description": "radv: set prolog as_ls if has_ls_vgpr_init_bug=true", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b70c235e4afde19099d7aaf0d039e40d8f43e318", + "description": "aco: skip LS VGPR initialization bug workaround if the prolog exists", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "967c52097e841700daf845557875b8ccd3e08cfc", + "description": "aco: workaround LS VGPR initialization bug in RADV prologs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ad4b82e1920401acd83cda3f6d081d38c221ae78", + "description": "radv: Pre-mask misaligned_mask for VS prolog.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "55d21f2f12dd65a5e298fdb674227043ddd3da2b", + "description": "radv, aco: Inline struct aco_vs_input_state.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3fc3a94bce6c542cc5c23eca832b6a5c45ac5c79", + "description": "radv, aco: Rework VS prolog key handling.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5cc7f54f15c1691719f95408e46912140473c502", + "description": "radv: Remove last VS prolog reuse logic.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d8a5b76307fda99e49c0d929c211a1f82e7bbc9f", + "description": "aco: Replace aco_vs_input_state.divisors with bitfields.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9b840df9f6549bb01aa3e71133d63423cc0614be", + "description": "radv: add drirc options to force re-compilation of shaders when needed", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fe159c85de81a12e895342d003821aa4f25db8d5", + "description": "zink: Check for VK_EXT_extended_dynamic_state3 before setting A2C", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "736577871b939573af400e4e64ebfe18863d49af", + "notes": null + }, + { + "sha": "88cbe32048aff3d7a873474bebc2d1068c21ce46", + "description": "radv: add support for RGP queue events", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "33f430779677f0550932573e2f629a76993072af", + "description": "radv: add radv_write_timestamp() helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "aa75538674f61dbc58ad5562153b351809bbcb30", + "description": "ac/rgp: update dumping queue event records to the capture", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "661d28cfece72d4e08d1d5057be283f21cbab2f5", + "description": "radv: restore sampling CPU/GPU clocks before starting SQTT trace", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "55e48d7e0f2898f12006e06f35e18d1f325a9472", + "description": "radv: enable DGC preprocessing when all push constants are inlined", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d067413a725136a02caf03bdea0a7c68bbed9461", + "description": "radv: optimize emitting inlined push constants with DGC", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c8140e4c0eff5f5926fed5135a7c93a8628156ff", + "description": "radv: emit individual SET_SH_REG for inlined push constants with DGC", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0112a245f56d324db10cadd2a92f56ced0bcfbbf", + "description": "radv: add a helper to determine if it's possible to preprocess DGC", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d04538653bdfd5317dc8cf45528e017a7362b205", + "description": "v3d: implement support for PIPE_CAP_NATIVE_FENCE_FD", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a8d6f250d1a6c1a4f177eec7156de86cf8d09fb8", + "description": "docs: Fix typo in OpenGL 3.3 support on Asahi", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4807c1e173e8aef4cba7ba60e6ed38248cb4d7a9", + "description": "freedreno: Always attach bo to submit", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "b43e5aec0d2ce542d4ba68da947e3ad752855979", + "notes": null + }, + { + "sha": "3ca5f3bf00ed11017022685346ed002b2e3f179c", + "description": "freedreno/drm: Fix mmap leak", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "53ccb421a272ec88598fb942bcb0bcd19cba11fa", + "notes": null + }, + { + "sha": "3f3fa5ee0c30a35e0f9b7bbcae287151f05e57a2", + "description": "freedreno/a6xx: Rework wave input size", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a07705def6d080de3faf3cac83dbf7a313d5e093", + "description": "freedreno/a6xx: Don't set patch_vertices if no tess", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0976dfeca29527c2175c6925d46cba84391910c3", + "description": "nir/zink: drop NIH helper in favor of `mesa_vertices_per_prim`", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f4f4d80096c360f86a2594f84034c086fb498b99", + "description": "bin/gitlab_gql: only get the pipeline when a pipeline is needed", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "b87e092489037daf45a54641e655b6838536ec9f", + "notes": null + }, + { + "sha": "325d650c6e9bc61bfecfbc3f4ce3aeda60d85d0c", + "description": "radv: Use sizeof(flags) instead of hardcoded size in radv_hash_shaders.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ef414a82315768f047d204a46597f53f6145e2c8", + "description": "radv: Fix mis-sizing of pipeline_flags in radv_hash_rt_shaders.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "768c5934d0d761d4f3f031f1a197b2b9a202c21f", + "description": "radeonsi: fix piglit image coherency test when use aco", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7dcca9d0efb2553bfb730351c70a672ccda74026", + "description": "radeonsi: use PRIu64 instead of %lu for uint64_t formatting", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "aff7df717df3f2304e73f5c56b412fc864cb5d5b", + "description": "radeonsi/ci: update failures for gfx103", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "09c513a31ac6e42ff653e6d2748eddf69bb89146", + "description": "radeonsi: don't dma-upload shaders on APUs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3f108e7615213051466af4ed688e94ce6ddde065", + "description": "radeonsi/gfx11: don't set OREO_MODE to fix rare corruption", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "19a59f05a47901a237b506154f2cfedfab9066bc", + "notes": null + }, + { + "sha": "2ac6816b70d7bb4658ed3236ede78a4dfa104e58", + "description": "radeonsi/gfx11: use SET_CONTEXT_REG_PAIRS_PACKED for other states", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9579503befaaca5b64578cb85fad1c700a10a869", + "description": "radeonsi: adjust the total viewport area", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3af5af429e0f40a78a9d0bac73e2175d41caa7a1", + "description": "nir: Optimize boolean ieq/ine with an immediate", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2d49f834b20d705d901414f6fc2b1fec019689c4", + "description": "vulkan: use instance allocator for `object_name` in some objects", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fcd025c1ce658f1efd18b2e0072ef5c82862db2b", + "description": "intel/compiler: Remove is_tex()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "424df6a68d286171d14886d0383685ea65cca1bc", + "description": "tu: Fix KHR_present_id and KHR_present_wait being used without initialization", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "56451ce773c11094a8c08fdc6b500bb8bdcf37e1", "description": "v3d: Don't implicitly clear the content of the imported buffer", From a28ea69d0a54597f72be77f9c5ff6308fd15071f Mon Sep 17 00:00:00 2001 From: antonino Date: Mon, 6 Nov 2023 22:52:35 +0100 Subject: [PATCH 106/356] vulkan: use instance allocator for `object_name` in some objects The allocator passed to VkDevice won't be available once it is destroyed and thefore it cannot be used to allocate `object_name` for instance level objects such as `VkInstance` or `VkPhysicalDevice` or else there would be no way of deallocating it when those objects are destroyed. Cc: mesa-stable Reviewed-by: Lionel Landwerlin Reviewed-by: Mark Collins Part-of: (cherry picked from commit 2d49f834b20d705d901414f6fc2b1fec019689c4) --- .pick_status.json | 2 +- src/vulkan/runtime/vk_debug_report.c | 4 ++-- src/vulkan/runtime/vk_debug_utils.c | 7 +++++-- src/vulkan/runtime/vk_instance.c | 6 +++--- src/vulkan/runtime/vk_object.c | 23 ++++++++++++++++++++++- src/vulkan/runtime/vk_object.h | 18 ++++++++++++++++++ src/vulkan/runtime/vk_physical_device.c | 2 +- 7 files changed, 52 insertions(+), 10 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 12d874cc5b1..b8443fb1346 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -434,7 +434,7 @@ "description": "vulkan: use instance allocator for `object_name` in some objects", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/vulkan/runtime/vk_debug_report.c b/src/vulkan/runtime/vk_debug_report.c index ea9aebf5930..6712ba6d1c8 100644 --- a/src/vulkan/runtime/vk_debug_report.c +++ b/src/vulkan/runtime/vk_debug_report.c @@ -58,8 +58,8 @@ vk_common_CreateDebugReportCallbackEXT(VkInstance _instance, if (!cb) return VK_ERROR_OUT_OF_HOST_MEMORY; - vk_object_base_init(NULL, &cb->base, - VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT); + vk_object_base_instance_init(instance, &cb->base, + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT); cb->flags = pCreateInfo->flags; cb->callback = pCreateInfo->pfnCallback; diff --git a/src/vulkan/runtime/vk_debug_utils.c b/src/vulkan/runtime/vk_debug_utils.c index 70bcf103dbf..3865fd66802 100644 --- a/src/vulkan/runtime/vk_debug_utils.c +++ b/src/vulkan/runtime/vk_debug_utils.c @@ -213,11 +213,14 @@ vk_common_SetDebugUtilsObjectNameEXT( vk_object_base_from_u64_handle(pNameInfo->objectHandle, pNameInfo->objectType); + assert(object->device != NULL || object->instance != NULL); + VkAllocationCallbacks *alloc = object->device != NULL ? + &object->device->alloc : &object->instance->alloc; if (object->object_name) { - vk_free(&device->alloc, object->object_name); + vk_free(alloc, object->object_name); object->object_name = NULL; } - object->object_name = vk_strdup(&device->alloc, pNameInfo->pObjectName, + object->object_name = vk_strdup(alloc, pNameInfo->pObjectName, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); if (!object->object_name) return VK_ERROR_OUT_OF_HOST_MEMORY; diff --git a/src/vulkan/runtime/vk_instance.c b/src/vulkan/runtime/vk_instance.c index d14b196b27b..2224caf5841 100644 --- a/src/vulkan/runtime/vk_instance.c +++ b/src/vulkan/runtime/vk_instance.c @@ -52,7 +52,7 @@ vk_instance_init(struct vk_instance *instance, const VkAllocationCallbacks *alloc) { memset(instance, 0, sizeof(*instance)); - vk_object_base_init(NULL, &instance->base, VK_OBJECT_TYPE_INSTANCE); + vk_object_base_instance_init(instance, &instance->base, VK_OBJECT_TYPE_INSTANCE); instance->alloc = *alloc; util_cpu_trace_init(); @@ -75,8 +75,8 @@ vk_instance_init(struct vk_instance *instance, if (!messenger) return vk_error(instance, VK_ERROR_OUT_OF_HOST_MEMORY); - vk_object_base_init(NULL, &messenger->base, - VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT); + vk_object_base_instance_init(instance, &messenger->base, + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT); messenger->alloc = *alloc; messenger->severity = debugMessengerCreateInfo->messageSeverity; diff --git a/src/vulkan/runtime/vk_object.c b/src/vulkan/runtime/vk_object.c index b46a0f77554..753640b77b8 100644 --- a/src/vulkan/runtime/vk_object.c +++ b/src/vulkan/runtime/vk_object.c @@ -25,6 +25,7 @@ #include "vk_alloc.h" #include "vk_common_entrypoints.h" +#include "vk_instance.h" #include "vk_device.h" #include "util/hash_table.h" #include "util/ralloc.h" @@ -38,6 +39,20 @@ vk_object_base_init(struct vk_device *device, base->_loader_data.loaderMagic = ICD_LOADER_MAGIC; base->type = obj_type; base->device = device; + base->instance = NULL; + base->client_visible = false; + base->object_name = NULL; + util_sparse_array_init(&base->private_data, sizeof(uint64_t), 8); +} + +void vk_object_base_instance_init(struct vk_instance *instance, + struct vk_object_base *base, + VkObjectType obj_type) +{ + base->_loader_data.loaderMagic = ICD_LOADER_MAGIC; + base->type = obj_type; + base->device = NULL; + base->instance = instance; base->client_visible = false; base->object_name = NULL; util_sparse_array_init(&base->private_data, sizeof(uint64_t), 8); @@ -48,8 +63,14 @@ vk_object_base_finish(struct vk_object_base *base) { util_sparse_array_finish(&base->private_data); - if (base->object_name != NULL) + if (base->object_name == NULL) + return; + + assert(base->device != NULL || base->instance != NULL); + if (base->device) vk_free(&base->device->alloc, base->object_name); + else + vk_free(&base->instance->alloc, base->object_name); } void diff --git a/src/vulkan/runtime/vk_object.h b/src/vulkan/runtime/vk_object.h index ad87121e15c..0728e894b58 100644 --- a/src/vulkan/runtime/vk_object.h +++ b/src/vulkan/runtime/vk_object.h @@ -57,6 +57,14 @@ struct vk_object_base { */ struct vk_device *device; + /** Pointer to the instance in which this object exists + * + * This is NULL for device level objects as it's main purpose is to make + * the instance allocator reachable for freeing data owned by instance + * level objects. + */ + struct vk_instance *instance; + /* True if this object is fully constructed and visible to the client */ bool client_visible; @@ -77,6 +85,16 @@ void vk_object_base_init(struct vk_device *device, struct vk_object_base *base, VkObjectType obj_type); +/** Initialize a vk_base_object for an instance level object + * + * :param instance: |in| The vk_instance this object was created from + * :param base: |out| The vk_object_base to initialize + * :param obj_type: |in| The VkObjectType of the object being initialized + */ +void vk_object_base_instance_init(struct vk_instance *instance, + struct vk_object_base *base, + VkObjectType obj_type); + /** Tear down a vk_object_base * * @param[out] base The vk_object_base being torn down diff --git a/src/vulkan/runtime/vk_physical_device.c b/src/vulkan/runtime/vk_physical_device.c index ea277516be2..188449f8c50 100644 --- a/src/vulkan/runtime/vk_physical_device.c +++ b/src/vulkan/runtime/vk_physical_device.c @@ -35,7 +35,7 @@ vk_physical_device_init(struct vk_physical_device *pdevice, const struct vk_physical_device_dispatch_table *dispatch_table) { memset(pdevice, 0, sizeof(*pdevice)); - vk_object_base_init(NULL, &pdevice->base, VK_OBJECT_TYPE_PHYSICAL_DEVICE); + vk_object_base_instance_init(instance, &pdevice->base, VK_OBJECT_TYPE_PHYSICAL_DEVICE); pdevice->instance = instance; if (supported_extensions != NULL) From 12ab5dfd520e92fb5eba343973e0fb1e4ca618ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 5 Nov 2023 11:42:33 -0500 Subject: [PATCH 107/356] radeonsi/gfx11: don't set OREO_MODE to fix rare corruption This is recommended by hw people. Fixes: 19a59f05a47 - radeonsi/gfx11: program db render control register Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: (cherry picked from commit 3f108e7615213051466af4ed688e94ce6ddde065) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/si_state.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index b8443fb1346..2ebb7bc1b12 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -394,7 +394,7 @@ "description": "radeonsi/gfx11: don't set OREO_MODE to fix rare corruption", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "19a59f05a47901a237b506154f2cfedfab9066bc", "notes": null diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index d7dfbff4d3d..b33626fb690 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -1570,8 +1570,7 @@ static void si_emit_db_render_state(struct si_context *sctx, unsigned index) max_allowed_tiles_in_wave = 15; } - db_render_control |= S_028000_OREO_MODE(V_028000_OMODE_O_THEN_B) | - S_028000_MAX_ALLOWED_TILES_IN_WAVE(max_allowed_tiles_in_wave); + db_render_control |= S_028000_MAX_ALLOWED_TILES_IN_WAVE(max_allowed_tiles_in_wave); } /* DB_COUNT_CONTROL (occlusion queries) */ From 3902e9302da061e8baadc8b3a3a38b30d6c20475 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Sun, 12 Nov 2023 11:08:28 -0800 Subject: [PATCH 108/356] freedreno: Always attach bo to submit Even if app triggers undefined behaviour by using a rsc on multiple contexts without a flush, we still should attach the bo to the batch. Fixes: b43e5aec0d2c ("freedreno/batch: Move submit bo tracking to batch") Signed-off-by: Rob Clark Part-of: (cherry picked from commit 4807c1e173e8aef4cba7ba60e6ed38248cb4d7a9) --- .pick_status.json | 2 +- src/gallium/drivers/freedreno/freedreno_batch.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 2ebb7bc1b12..9384d7962f6 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -274,7 +274,7 @@ "description": "freedreno: Always attach bo to submit", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "b43e5aec0d2ce542d4ba68da947e3ad752855979", "notes": null diff --git a/src/gallium/drivers/freedreno/freedreno_batch.c b/src/gallium/drivers/freedreno/freedreno_batch.c index 6af2c7af5b0..9c458e33e7d 100644 --- a/src/gallium/drivers/freedreno/freedreno_batch.c +++ b/src/gallium/drivers/freedreno/freedreno_batch.c @@ -549,8 +549,10 @@ fd_batch_resource_write(struct fd_batch *batch, struct fd_resource *rsc) * ctx dependencies and let the app have the undefined behavior * it asked for: */ - if (track->write_batch->ctx != batch->ctx) + if (track->write_batch->ctx != batch->ctx) { + fd_ringbuffer_attach_bo(batch->draw, rsc->bo); return; + } flush_write_batch(rsc); } @@ -599,6 +601,7 @@ fd_batch_resource_read_slowpath(struct fd_batch *batch, struct fd_resource *rsc) * by avoiding cross-ctx dependencies and let the app have the * undefined behavior it asked for: */ + fd_ringbuffer_attach_bo(batch->draw, rsc->bo); return; } From eb9f7db980fe9b7377364d0278e0f048a011a270 Mon Sep 17 00:00:00 2001 From: Mary Guillemard Date: Thu, 2 Nov 2023 06:37:31 -0400 Subject: [PATCH 109/356] zink: Check for VK_EXT_extended_dynamic_state3 before setting A2C Fix crashes for piglit alpha-to-coverage tests when VK_EXT_extended_dynamic_state3 is not supported (like on Venus) Fixes: 736577871b9 ("zink: check for cbuf0 writes before setting A2C") Signed-off-by: Mary Guillemard Reviewed-by: Antonino Maniscalco Part-of: (cherry picked from commit fe159c85de81a12e895342d003821aa4f25db8d5) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_program.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 9384d7962f6..3ce2a20b51f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -164,7 +164,7 @@ "description": "zink: Check for VK_EXT_extended_dynamic_state3 before setting A2C", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "736577871b939573af400e4e64ebfe18863d49af", "notes": null diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index c82607272d5..e50ad9c9c91 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -1871,7 +1871,8 @@ zink_bind_fs_state(struct pipe_context *pctx, if (cso) { shader_info *info = &ctx->gfx_stages[MESA_SHADER_FRAGMENT]->info; bool new_writes_cbuf0 = (info->outputs_written & BITFIELD_BIT(FRAG_RESULT_DATA0)) > 0; - if (ctx->gfx_pipeline_state.blend_state && ctx->gfx_pipeline_state.blend_state->alpha_to_coverage && writes_cbuf0 != new_writes_cbuf0) { + if (ctx->gfx_pipeline_state.blend_state && ctx->gfx_pipeline_state.blend_state->alpha_to_coverage && + writes_cbuf0 != new_writes_cbuf0 && zink_screen(pctx->screen)->info.have_EXT_extended_dynamic_state3) { ctx->blend_state_changed = true; ctx->ds3_states |= BITFIELD_BIT(ZINK_DS3_BLEND_A2C); } From 16ed2f180c3172d2e50e26af3ab78145f79c5489 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 15 Nov 2023 16:32:14 +0000 Subject: [PATCH 110/356] .pick_status.json: Update to 03a7cb261828b350dd9b56bd74850197ca9eba33 --- .pick_status.json | 5410 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 5410 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 3ce2a20b51f..96c65da5b57 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,5414 @@ [ + { + "sha": "03a7cb261828b350dd9b56bd74850197ca9eba33", + "description": "ac/gpu_info: Manually compute L3 size for Navi33", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "355242f0557c3f28ff1414b261eb086362e707db", + "notes": null + }, + { + "sha": "90f8cf0f36c046922ef42448232dc7d0a1647fef", + "description": "radv/sqtt: Handle monolithic RT pipelines", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b6e09dd5212503ab6369ba7fee9033c416347243", + "description": "radv/sqtt: Fix tracing acceleration structure commands", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "bfb55d026675779fa36aa86be578625a3ce2b3e0", + "notes": null + }, + { + "sha": "fa0476fa6e98b3ccdbcbe5d562ab8dbb7cba0c84", + "description": "meson: Update lua wrap to 5.4.6-4", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1eff68dd2a6d9fc8acd53078d609e92f693c2556", + "description": "ci/traces: drop the freedoom-phase2-gl-high.trace", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b12d7f10d45cc59df79bdd30cc23dda21c6e3d44", + "description": "aco: validate ALU operands and defs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "91539713bb3fb476be864bb4bc5fcb7c380c4843", + "description": "aco: add src/def count and size for all ALU opcodes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d9c3ba3b90989b89df24aa322d46d28b040de7db", + "description": "aco: use correct operand size for int tg4 wa", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1d167d187efe88fb84d60972f2e053c75379344b", + "description": "aco/gfx10+: don't use v_cmpx with VCC def", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "509ce19643f51555922947e9b8b5f12d6567fb5b", + "description": "aco: add missing scc def for SALU quad broadcast", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "18f6c2328f1ccb830188fba76fe3d0a97e7ece72", + "description": "aco: use lm for carry out in vsub32", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9acd9c01002b74b62d0025d581c1468465665dd2", + "description": "aco/tests: use correct operand size for some 64bit ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6a136b4e0500e470cb3dcf56d41637c4ccdc89c2", + "description": "aco/tests: add some missing scc defs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2f4e53b22ad2bf3a8a91d27b88aefbb25b3b0653", + "description": "aco: fix detecting sgprs read by SMEM hazard", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e49c413a86aa863ce9b3edf5162517357fbf45fd", + "description": "aco: use null operand for SOPK s_waitcnt", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bcf0425f7ffc2dbafdf3e660c976a8c27b3514e2", + "description": "ir3: correctly set bit size for 64b constant @load_ubo", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bb92c34c2859c2f5b42c9b6ba4f5603d79b72d33", + "description": "radv: set radv_zero_vram=true for Unreal Engine 4/5", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "627d59344381907bd13eeb48a6737bd2561e64d8", + "description": "radv: fix registering queues for RGP with compute only", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "930e77e9036a75196e080cb4b780c47104bf0ef2", + "notes": null + }, + { + "sha": "b66b299edac109d2bbfdb886f01ce5945f362289", + "description": "r600: Add missing dep on git_sha1.h", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "3ab51c7ebd1e7a65bd928b6142423123c7552927", + "notes": null + }, + { + "sha": "3916ee05b0a63cc77e9a7906bd003e2b88ad7284", + "description": "rusticl/api: workaround DPCPP fetching clSetProgramSpecializationConstant", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "924c8e7bcd62663c3a397e438ddfd232263704ff", + "description": "vtn: add hack for system values placed in CrossWorkgroup memory", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "41f814df6f25d0458ecf71e318045b831b085116", + "description": "nir: allow vec derefs on system values", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "23e1f3c373224ecc31c703657af1356debac9710", + "description": "nvk: Use nak_shader_info natively", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c074ea621548fcb46b87926b02f681352ca38e53", + "description": "nak: Handle the num_gpr offsetting inside nak", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d8551cd328bb77519a578d9105e55e2a0576c04f", + "description": "nak: Add a writes_layer bit to nak_shader_info::vtg", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a232050204a3eb86c3d9fc75f5a2c2350832e60d", + "description": "nak: Move clip, cull, and XFB into a nak_shader_info.vtg", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "440adf79702684efd927ecf09deb4adb27ba51eb", + "description": "nak: Properly prefix nak_xfb_info", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4e6e814f5ece2e0fcd10f9aed379076f2071bccc", + "description": "nak: Rename TLS to SLM", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a946071546819105fcf6a539e1e32d000968782c", + "description": "nvk: Use nak_fs_key instead of rolling our own", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0f086401e3809f3b91657de163bb8b1f22921f18", + "description": "nvk: Move even more lowering into nvk_codegen.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "67bb8e8165db3717a8515fa931dd3776610713e8", + "description": "nvk: Move the guts of nvk_compile_nir() to nvk_codegen.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0405f494e8aed11940f457c6db489dd0e9b884bf", + "description": "nvk: Move the optimization loop to the nvk_codegen.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7f8fbacb8a3318eaebd8d59f454d5b5d10aca2fa", + "description": "nvk: Move a bunch of codegen-specific lowering to helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c3a44f62647f54580675c3f4b912ae027a55fcc2", + "description": "nvk: Add a codegen helper for nir_shader_compiler_options", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "845e7d29117fcfbac98901a49269608be899a612", + "description": "nvk: Only lower outputs to temporaries", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "26bb5f4972546de4f255d5dd2a18f09999b64c82", + "description": "nak/nir: Lower indirect FS inputs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e507d703339eeaa0966e77b827f82ac09bb60a79", + "description": "nvk: Handle load_first_vertex in nvk_nir_lower_descriptors()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "82061b1b9d32ca0e319decd3e3dfcd9d3383c398", + "description": "nvk: Only advertise VK_KHR_shader_terminate_invocation if using NAK", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fcfa68a632e5711cc657b103c9a0384928e9bf49", + "description": "Revert \"frontends/va: Alloc interlaced surface for interlaced pics\"", + "nominated": true, + "nomination_type": 2, + "resolution": 0, + "main_sha": null, + "because_sha": "578e10e1571b40c86f3348f2f36e080f34d1a4ed", + "notes": null + }, + { + "sha": "eafeff6302f4eabed52d90aadd730c4492699ece", + "description": "gallium/auxiliary/vl: Support interleaved input in deinterlace filter", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "35b0ccd8554e8b46833cb5b57be91e6201754a4f", + "description": "gallium/auxiliary/vl: Scale dst_rect x0/y0 when rendering chroma plane", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "001358a97cce456d948bb57842ca099a73c10b06", + "notes": null + }, + { + "sha": "e9091b1f5c2ef50aba36f5e71fb6cf88ffc31cbb", + "description": "gallium/auxiliary: Fix coordinates clamp in util_compute_blit", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "7c8e1596d6ef12c27ffe713b173023b1e38e52cb", + "notes": null + }, + { + "sha": "ef0546152fd1aed1d4175097c6361860c42f459e", + "description": "gallium/auxiliary/vl: Fix coordinates clamp in compute shaders", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "a6a43963ed0648649d70bfe7998971c1927d9b51", + "notes": null + }, + { + "sha": "cd0cff951a5b7c74d704198b5abfdb40b267cbdc", + "description": "nir_lower_mem_access_bit_sizes: Fix write-mask-constrained 3-byte stores as atomics", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "c70d94a889709d181e9569d4089f2d017b5684fc", + "notes": null + }, + { + "sha": "bff7e4b69dce3356ba070f0eb87db9da65cad77a", + "description": "ci/zink: add spec@ext_timer_query@time-elapsed to flakes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "618bdb85718fbd54ff68b1d1581992cd7e22269f", + "description": "nak: Rework FS input interpolation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d3c5688cf570d424ed00874e33cfae6160bd9d4f", + "description": "nak: Plumb the nak_compiler through to lower_fs_input_intrin", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f5ba0751e27b52683f2e3b99044b87c2741e68e0", + "description": "nak: Make encode_sm75 a method of Shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a6376705e4807d6edd8329bf6d742608f03249e7", + "description": "nak: Make ALD/AST.PHYS a boolean", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8e00ee6fe875bae1cc4cc22437ebc264eeaa860b", + "description": "nak: Drop OpAtomCas in favor of OpAtom with atom_op == CmpExch", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea453b373db0c7b001073312da910c67eaf4e892", + "description": "nak: Fix copy-prop for OpPLop3 sources", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a65518b625487e093c79de61b0dfa365472764db", + "description": "nvk: Free NAK shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c4ee639ca0378f094e63738697812ecfa191bbf1", + "description": "docs: fix RADV_THREAD_TRACE_CACHE_COUNTERS default", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "dbab98d9d63d4de4307c28c0ea578b977ea3f0b7", + "notes": null + }, + { + "sha": "2f1cb799688d0da6c038ecb08e744663e61735ba", + "description": "d3d12: GL4.5", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5a5178d5a4293a71c33a6955d537960690240e77", + "description": "d3d12: Fix MSAA-disabling pass; sample mask should be 0 for helper lanes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ba06542c7ba91716430e6291e344153ab98c2471", + "description": "d3d12: Handle cull distance as an XFB target", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "263b56051d196e97a16831d90d1c2810d793f93a", + "description": "d3d12: PRIMITIVES_GENERATED for stream > 0 should only be an SO query", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "538ca7801aba1712e6fadd64d898dd39d0eb5827", + "description": "radv: Use shader part caching helpers for VS prolog and PS/TCS epilog.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "611545fbfe7648ea95bad28c7099cc775c3024c8", + "description": "radv: Implement helpers for shader part caching.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3cd6bb3e5d727596432622fc56c1efc7e3d521fb", + "description": "tu: Add a725 workaround dispatch at the start of each cmdbuf", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "37f11ff1d49469a6f2fba876fca6c2742d0aae4a", + "description": "freedreno/devices: Support Adreno 725", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "28f187b9a7c53359f45e05b0a5dc28d9a9868e12", + "description": "tu: Return error when GPU is unsupported", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a669147689a3253f4fe8dd80288d34124cbb2d02", + "description": "tu: Always print startup failure messages", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "76996e2a944a91c498b79198fbbb1df4cb2cff59", + "description": "rusticl: Use the `from_raw_parts` wrappers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "471d89c4fd4151344e0a61684093d38f027b01da", + "description": "rusticl/api: Add checking wrappers around `slice::from_raw_parts{_mut}`", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "572a96aa5943fcc6668e80e2ef0f5a5ba6c08f89", + "description": "rusticl: Turn pointers in enqueue_svm_memcpy_impl into slices", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7dd5a227354b38f171454fa49761d24cb808650e", + "description": "rusticl: Turn pointers in enqueue_svm_mem_fill_impl into proper Rust types", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fdbb5d5898367e6c11fc1f3c3000abecaca77ebd", + "description": "ci/valve-infra: ensure the correct farm picks up the job", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "898ccf771142b78e8ccc8d687b4d6c8c97f61852", + "description": "radeonsi/ci: update failures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "64352ae8e4341d57504478cf2e6315041f13d5e0", + "description": "mesa: restore call to _mesa_set_varying_vp_inputs from set_vertex_processing_mode", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "c97961a855ad1ae5c58d47634862b459e682e158", + "notes": null + }, + { + "sha": "dfc125d4239ef2f019a72ce6c226eda5ace12b9d", + "description": "radv: fix VRS subpass attachment when HTILE can't be enabled on GFX10.3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "648c0c159d865a8a30f0b524b33db6d932e4e234", + "description": "anv: Flush data cache while clearing depth using HIZ_CCS_WT", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e4db19afa72b3dc2a33acc6435f714176adc6df1", + "description": "iris: add data cache flush for pre hiz op", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4d95b4861e1478aa98ed23c47a595f82ce2ea7d2", + "description": "v3dv: implement VK_EXT_multi_draw", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "794b0496e9467d27211d11fe7f783db3ce6a349a", + "description": "anv: enable protected memory", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fd40134487c3f3ae2c0c108651041ff98bfea7da", + "description": "anv: allow protected GEM context creation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "be201008ca5f6735b44af649ff746d748d123684", + "description": "anv: Emit protection + session ID on protected command buffers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "be327b14522304c96d16ba2a791eb1f17860f547", + "description": "anv: allow creation of protected queues", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5f2c77a10a89de2ea53e7ab2e3de72b704f8c393", + "description": "anv: handle protected memory allocation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5ef8587b1eb820a4feed31485d4a7cdd24dc78fd", + "description": "intel: fix PXP status check", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ade73d2e7f86e550a6b390ee1724220144bba861", + "description": "nvk: Stop asserting 11-bit storage image handles", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "92cb4cc7f69161364fbc51d6bcf6a81fd7a5bc18", + "description": "nvk: Default to NAK on Turing+", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2495f47a718e3c0cef739f2c8d2f8579bfc45fd", + "description": "nvk: Use load_global_constant for ubo loads", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1d7e051a7fc9021c30fd61476766a4c76bd5eb0b", + "description": "nak: Add MemOrder::Constant", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a02a0d0b3f3eb29f6da4483c2f1a0ec3d0a4f6e", + "description": "nak: Bind nir_intrinsic_access", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dfb62604831c0f17054ea7913382bfffa0522b04", + "description": "nak: Specify MemScope on MemOrder::Strong", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "94ea8a5883d822332f7ca81dd0189d25b8dc20bc", + "description": "ci: Update the python env for ci_run_n_monitor.py", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6b8cdf84f0716700db0a5a9980ec00d9f33231a5", + "description": "ci: Add syn to --force-fallback-for", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "07e860d3a2b073305bb50c029bf89b5fdfac6c80", + "description": "ci: Bump container images for NAK dependencies", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f54b1f1e7727644fe15d3a17b484b6e9c9ca4024", + "description": "meson: Set build.rust_std", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e43e8f3f784be26d55474127a31a7e996ee5acb4", + "description": "nak: Require meson 1.3.0 and clean up a couple bits", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7feba721c51e4423fa68125941391341cd659117", + "description": "nak: Rely on Rust 1.73 for next_multiple_of() and div_ceil()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c7c73d6d17b38a2f4c899a34614eb3750eea6034", + "description": "nvk: Enable subgroups features", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4bd9c99ca0367ebf2faa42bccfe7eec5d9d75c82", + "description": "nak: Document a bit in encode_lds()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0177373e2dd47f79635fed78b8cb85701a38ca23", + "description": "nak: Insert an OpNop after OpBar", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e111bfdb5c938c7a3dfdc81ca0ab21acc42899b4", + "description": "nak: Emit MemBar before Bar", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bc58620e1eba84b9ea6bc98cf66b5f920f7aaef4", + "description": "nak: Use the simplified BAR.SYNC encoding", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4f2f9c6ab341cc20a67b91967793164c7e357202", + "description": "nak: Use strong ordering for Image load/store", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ec2c866a77662f7ab33c7cf368ecef122a2ee1af", + "description": "nak: Emit CCtl in barriers with acq/rel semantics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8781acba18d724e628aa1e3798fceb36871fd537", + "description": "nak: Allow 1-component image load/store", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ee11b473b5aa3690715cf87f5e24e6d5ec2d0bd8", + "description": "nak: Implement read_invocation and shuffle_*", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "edf015eb7f09860150d6ffb6de2a32708727067e", + "description": "nak: Fix the encoding of OpShfl", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5dd7a76c8be74ef49886a33b069db15304b9dfc9", + "description": "nak: Implement vote and ballot", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3df9065296a3abe8f41c030cb9a9ee2de6a997c7", + "description": "nak/nir: Zero-pad subgroup masks", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "37de14e2e23df826ba2d726d045e7a3dd555d1da", + "description": "nak/nir: Allow boolean vote_ieq", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "143d88dcc30a44ee4c4afb5b8607c6ce3c716fe7", + "description": "nak: Lower subgroup_id and num_subgroups", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "42a305416aada9290de8f5154f223216f671fbf9", + "description": "nak: Use nir_shader_intrinsics_pass for system values", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ce40d81d464affa628f306c9ec86ad62fa2b408e", + "description": "nak: Call nir_lower_subgroups()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bf8642e98466364ba0a905204003ec7453a382b0", + "description": "nak: Remove unnecessary control barriers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3468f70ca1dbe0ddb66bd18759cfa982f7bd026a", + "description": "nak: Use barriers for re-convergence", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "22468439ffada5ba9b66a30f23aa019bae0cf9c9", + "description": "nak: Handle control-flow barriers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "95f368a105af8b333f8ec543b5f5a97e4e2a9086", + "description": "nak: Add OpBreak", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3957124492f8ef4232021ede31c7d5483eb61f89", + "description": "nak/nir: Add a pass for adding convergence barriers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "eb0d9a1b88e5f1d8d0a5da59bc0ee696087d7442", + "description": "nir: Add nvidia barrier intrinsics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4ec66f3e5c53a803edaca0c3e4eca10f56722325", + "description": "nak: Don't print a range for one register", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f29b714ec93a005213ded6130a099054b1b6476e", + "description": "nak: Drop the final calc_max_live() after GPR spilling", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea27d57882aa4ff399a1d257c33002c137994ec6", + "description": "nak: Get rid of warnings in nak_sph.rs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bf04914315b738a7b61ae9c9a9c8de0c99db608d", + "description": "nak: Get rid of dead code warnings in RegFileSet", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9166b3354c4ea6d56eba4f4e2430735fa3e09fbf", + "description": "nak: Drop some unused helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d0b724aaacd437980518fa3b1fc3b5d4fdf48041", + "description": "nak: Add some #[allow(dead_code)]", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "eb8f9078554eaf64304bbf042f2f22cd8bcc0c33", + "description": "nak: Upgrade to more modern meson", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f757508d657ac7ad85b82069879f3ee77b715b4b", + "description": "nak: Move nir_lower_int64 after I/O lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "09d3871267e8b4bd3eea776c7cd9b15c345d56d1", + "description": "nak: Implement VK_KHR_shader_terminate_invocation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c32b73fdf2f21ba6c6273f2156e6cd2ba5b50150", + "description": "nak: A quick rustfmt fix", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2b4621b9d8d6a24bd860d61534b53bbcc163cd11", + "description": "nak: Use Src::From and Src::From", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0616003de9e1095f1dc6ed6d4891b768219d25ea", + "description": "nak: Rename lower_vec_split() to lower_ineg()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a43e6addca7934f1f3aa60c029f80d20dabb1a3a", + "description": "nak: Fix fneg to do fadd(-0, x)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2c1cc06d037ce5830c773ccef8c695a80cc4f05c", + "description": "nak: Support encoding -Zero", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a0b517ba3f3faf16469931ee19a819d4bd62cbc7", + "description": "nak: Ensure we allocate one barrier when using BAR.SYNC", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "29804bfd26f5f01a613566f328d6635c8596ffef", + "description": "nak/nir: Don't lower 1-bit phis", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8d802553a29b8c0eaa057282fe55536a42b292ee", + "description": "nak: Fix to_cssa()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed187b6e518050ee3ea07e2077d7de7ed58db65e", + "description": "nak: Fix parallel copy handling in spilling", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2ff6a36e2a8969a393f3116cbf2128ff9ee7bd66", + "description": "nak: Fix repair_ssa() for back-edges", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5839be3c4de02ee678054133b91046a5a004882b", + "description": "nak/sph: Round tls_size up to a multiple of 16", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "009ae6e7f52242bf924fa2cb0a5809a5f4d506e6", + "description": "nak/bitset: Fix next_set()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2cc51639aba1e0199430bce753ae1a93ebf52c81", + "description": "nak/bitset: Add an is_empty() helepr", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0f6d8640e1a0822e863f72e11eefc100cba82cbc", + "description": "nak/bitset: Improve set_words()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5b355ff25a769193cfe83af669e69d9e51f109ec", + "description": "nak: Fix opt_out", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "950db581320a6b9a14ed84a94bba345d81cea58f", + "description": "nak: Add geometry shader support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c87693a70031d2544cdf2312d912eacfe017aff6", + "description": "nak: Fix a bunch of warnings", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "09d78e8572151637facd6bc89aed6a3178dc9127", + "description": "nak: Memory order/scope encodings for Ampere", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ad0743c948117dd8246d8309d84e8fdbc190b3fd", + "description": "nak: Remove MemScope::Cluster", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "93f83a948f92f3b0b0b837e8f273a97607039111", + "description": "nak: Fix a warn(unused_must_use) by calling drop", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "590133b28d2cc9a6809926e177df1e03b9bc8d2d", + "description": "nak: add support for atomic cmpxcgh on images", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f85069ed57039b66dde7eef2bd9af8dea3d35eff", + "description": "nak: Use nak_nir_lower_vtg_io", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7ece220f968e1c8f9a7e09da1c0640dd8ff9f170", + "description": "nak/nir: Lower systm values before lowering I/O", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "abe9c1fea2d7ae613ce63a13828eaa0683047552", + "description": "nak: Add NIR lowering for attribute I/O", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c1ffdb3ee9a7aa75af3f0f19c71e5154b71a26a2", + "description": "nak/nir: Use count_vec4_slots instead of count_attribute_slots", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "498afcdb884540cd6187b7fb687a1e09a887a0f1", + "description": "HACK: Only emit OpBar in compute shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "611fe837bbf57ee68ab2a4320ec3819e33cc6cf0", + "description": "nak: Fix lowering for patch_vertices_in", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "efbbc3ed93b70cd7f818c613fb162824b73e8948", + "description": "nak: Implement load_tess_coord", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b5cb508523c3a28a4626783705fe7b82f5ea05c7", + "description": "nak,nvk: Plumb through tessellation info", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bd90031b5b65475b6bc1548524554d475cca3b0c", + "description": "nak/nir: Lower load_primitive_id", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c2768736c9167785f08a7f763ea8b509ca98b5d1", + "description": "nak: Implement more attribute I/O", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "091410c708eb7a3ee6d9bc9c6753329504c634ff", + "description": "nak: Add lowering for per-vertex I/O", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "aa76c860420e5d882e9706c6c01080a31f8a4d4e", + "description": "nak: Handle location_frac for FS outputs in nak_from_nir.rs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1251bb758828d487c70929a0f01b506f1ef6ba74", + "description": "nak: Set per patch attribute count both places in the SPH", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f097303a9956cb9744dbd0c5c3b6daf00c51d025", + "description": "nak: Rework OpALd and OpASt a bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f5805dadab3eca8076a66cfe98b2ac7ef2c63aba", + "description": "nak: NVIDIA calls them tessellation init shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dfbc03fa88478126607c69723a61280f6e9a011f", + "description": "spirv: Fix locations for per-patch varyings", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c6c2c1b2b28f0561d98915c9ec19338838a78510", + "description": "nak/nir: Lower tessellation and geometry I/O", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "93db2c12547de300314093d9d07ea9becaf18f15", + "description": "nak: Plumb clip/cull enables through nak", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d4d7f26151e27e59175f22d6d22214adcc9a7405", + "description": "nak: Add enums for sysvals and attributes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a4c1ec389225f2022cd1e54d14136c325eed887c", + "description": "nak: Implement From for SrcRef for more types", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0d725cccbdb96b481c30aca90f7229a9ecbee7d7", + "description": "nak: Implement NIR control barriers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5e6dd0412b83bd98fe15d018d86fc87e956ef790", + "description": "nak/builder: Return the instruction from push_*()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9b6a4aab8d0a24856b068f96eee38c3024df5fdc", + "description": "nak: Add barrier instructions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2514058c82fc0b8f2f39a020188b9bcc86c67035", + "description": "nak: Allow encoding Dst::None", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cc6f26b00579fe7b58689969618af724bc28bc00", + "description": "nak: Break indirect offset encoding into a helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a61e59bba52488241767cd498371394a840bc7b", + "description": "nak: Add OpNop which can have a label", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e3fa6f3557531ed70f7c55fc1b55591c22fe06b4", + "description": "nak: Add a Label struct for branch targets", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2e07cbab9c472f9d307f0249339ef5409475a63", + "description": "nvk: Plumb through XFB info from NAK", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "30f01c47c245e8ce2e8d8eaf1f53664a671f916f", + "description": "nak: Translate XFB info", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "62ac73d5e36aeb7a710e650514b70b0b7bf43bc2", + "description": "nouveau/parser: Dump SET_STREAM_OUT_CONTROL_* properly", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c2c010055ac7083bbaabd182204e089c567f5291", + "description": "nak: Handle non-constant I/O offsets", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "827dba398dd54ab5dcb6fcd9049151bc679b6599", + "description": "nak: Don't allocate bitsets in liveness data-flow", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "04658a2a11ffa8d554935aca635a8b959b58f374", + "description": "nak/bitset: Add a helper for modifying in-place", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "19e0c52837ac9c676abdef6a17cb2b86e53b374f", + "description": "nak: Run simple liveness data-flow bottom-up", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "046a2d50048c2d194d1e47595570eb1022042fb8", + "description": "nvk: Set clip/cull_enable for NAK shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a4ff5a9fc66b2b90caac87822d98f1622b5ecc33", + "description": "nak: Simplify I/O gathering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "32910d3016bbb0ead7f64d98273ac1b651b36963", + "description": "nak: rustfmt fixes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "40ec7efa0791adca3bb5dba4030d3d3a489ca90c", + "description": "nak: Move NIR enum translation out of nak_sph.rs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "145213fd2cd10038b8fa5eacb01300807fc41563", + "description": "nak: Restructure ShaderInfo", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "267a4f07d04e285ac042a7321ebd20c5833576a5", + "description": "nak: Remove encode_hdr_for_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a926c673352929a3515aa664756d96585c8a1a70", + "description": "nak: Collect information to create SPH", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8d07d033ae1ee0d6d2554503146c9935b7f3b057", + "description": "nak: Add a complete wrapper around SPH", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "97c249a353a0da3a36a7b094033a7bb2725109d7", + "description": "nak: Fix printing of OpASt", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a7eb42119ae09bc46b406b2cf024bffa54b8581e", + "description": "nak: Take component into account in store_output", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "330f3e6fa8066549ca2387b2104cc9ac64b835c8", + "description": "nvk: Lower more draw system values", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "263dfd48384655fa02e12cbddc53668296985331", + "description": "nvk: Add a helper for lowering system values to root table loads", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1a2bed819d453b1fe2af660a37e12af1433cbee4", + "description": "nak: Fix ALD/AST encoding for vtx and offset", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "66c9c40f68bcf738b1b5dd9a26d141d4c71e4522", + "description": "nak: Handle modifiers in dedup_srcs() in opt_lop()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b6962eb7e5bef7a67d1d64a3496ed4f319de8b1", + "description": "nak: Provide more detail when printing IR after passes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5654366a55793d82663d2ec9ac5d64a42ff8e4cf", + "description": "nak: Fold source modifiers in legalize", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6da06bf7d7fa8a6e108911fda0cc30a4c4e6348f", + "description": "nak/nir: Return one sample for gl_SampleMaskIn[0] when sample shading", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0e393f0d58f62fc59b62b519ff4f741f5e40f1df", + "description": "nak/nir: Interpolate gl_PointCoord", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "062735c1cc21c2fb0071f8ccef4dba31f0aed9b2", + "description": "nak/nir: Add a load_frag_w helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ec753749af28ea526fa5dff055ac35ae6298b9c", + "description": "nak/nir: Fix sample vs. pixel input interpolation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1ab35afc26ac3586cce2c19eed9f10cf15c73e96", + "description": "nak/nir: Move frag_coord/sample_pos lowering to FS input lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "460a0d8a4cafc4348bf31147bdd486a02e83b29c", + "description": "nak/nir: Plumb the FS key into lower_fs_input_intrin", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "580b98f353b5afc54e86408a23eac538dcfe159c", + "description": "nak: Gather global memory usage for ShaderInfo", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0afc6fa88077971a40a33a14286def1ebf1544f6", + "description": "nak: Add for_each_instr in Shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e9bad677af8e6f9016148688196a9e36ad7a9e1e", + "description": "nak: Plumb uses_kill through from nak_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "274d521c227fc8b3faf819cb4ee2183f0e6f7605", + "description": "nak: Take components into account in load_*input", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "543eebb272e7c0ecc45999cb62295ae6f22b7512", + "description": "nak: Handle interpolate_at_offset", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f5c41151f2e89dc4feeefa9ef5c5a043ef917e4c", + "description": "nak/nir: Use nir_shader_intrinsics_pass for FS inputs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "04911df9408f212be740f069ff0ea1acb0b245fb", + "description": "nak: Add support for fddx and fddy", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e174fc9ab327984119a797efca6121ab2d83e9c8", + "description": "nak/nir: Fix helper invocations", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4e14cefa70389bdaae6047481770ba87d92d7043", + "description": "nak: Add support for gl_FrontFace", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2c91587ac5b6cee0064e88058d7ab7e77d63770e", + "description": "nak: Saturate depth writes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6abbef04b076a613f6571348e7237ffb6d39ffba", + "description": "nvk/nak: Translate our new FS flags from NAK to nvk_shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "34cc225070bb18ea140f45af7e6235796491fe3a", + "description": "nak: Plumb more FS info through to the C API", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0ec283083cce17f419460e96375da8e7da655102", + "description": "nak: Re-plumb compute shader info", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9eeda9dd6d53e5d728b8b0139464eb9b67cc82c6", + "description": "nak: Rework FS outputs again", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7ce8470bd4f221288b4d2c9ad2d1422d02a13620", + "description": "nak: Stash a ShaderInfo in ShaderFromNir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3cdc26c1576a139d4bbc138115d94083b7956b7b", + "description": "nak: Pull sm, num_gprs, and tls_size into a ShaderInfo struct", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "141137ad14fe5d8df93b202ccdfa976aee26146f", + "description": "nak: Use count_attribute_slots for FS input var sizes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "64168e58cda8af3ace9101e6709b08ff64962a22", + "description": "nvk,nak: Plumb through the zs_self_dep key bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c54f622a93ffc33d988417b7f5625dd413ea9a7e", + "description": "nak: Set TLS size properly in the shader header", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cbb05f0e6b4c541633ab85d0525d530db1810b9d", + "description": "nak: Implement discard and demote", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "24c2728ca5169e6d793dda4e178f73df2e1b890c", + "description": "nak: Implement load_sample_id and load_sample_mask_in", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "595f03957cdfebd522c4a327ff4e87debe4d0206", + "description": "nak/nir: Several FS output fixes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea750f1ffd86e1397898776a6f4017e6db802b20", + "description": "nak: Handle empty OpFSOut", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ecf5c4c13b358124b7b4d734acc0190d4f0abf5a", + "description": "nak: Properly handle OpFSOut in RA and liveness", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c47488341ec39527af9e153aaaf918edcabd801d", + "description": "nak: Use load_interpolated_input for frag_coord", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0e327167a2ba00dcc973f7499add07cfdef6de93", + "description": "nak: do perspective divide for interp none as well", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ab80e1189f4bc04beabb34da3c76d1a1bf15a99a", + "description": "nak: Add support for centroid and sample interp modes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "850668c94285ddf83e27db750d269b3a152272ce", + "description": "nak: make ipa encoding match the order in codegen gv100", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dadc79d96fd97100abc3f5c638edfb39e7166def", + "description": "nak: Handle flat FS inputs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea6057deb4c5f73b3d0277674d567e9b555046d6", + "description": "nvk: Use sysvals for fragcoord etc. with NAK", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "073b2257ddb4f8c60682efd416d0f3e2e73d4268", + "description": "nak: Emit FS_OUT before EXIT", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a07aa29f6134267d6e2ddd2894368f77626bebab", + "description": "nak: Re-work Instr::get_latency()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3ad3f1376ce22917c672682a7894b24f96c0d3c6", + "description": "nak: Rework calc_delay.rs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2288b33a4809d6de40fb59fbf32dc2b6465d80c6", + "description": "nak: Rework the barrier insert pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "91ea23103a12c9a58f6346ace6545958d91e289a", + "description": "nak: Use the right number of predicates in RegTracker", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "57dde7f217962ce15c22f5ba937cc5fd15e1ca76", + "description": "nak: Implement Index[Mut] for RegTracker", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "405a9ccca8064c661ebc57bb9e9b25c2d437841f", + "description": "nak: Make PRMT selection a Src", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c38c456270170bec5e88be3158a8e8d72aa842ec", + "description": "nak: sm75: Fix panic when encoding MUFU with SQRT and TANH", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b869d2db5782fa27d9fa3ee3ce77699aa2d90af", + "description": "nak: Rename OpBFind to OpFlo", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "eb10a778fda5ed841bb13fdf9283ad7ba45e8548", + "description": "nak: Fix instruction ordering in nak_ir.rs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3e8344a4c804e563c714e9c38b239c765acbaa6b", + "description": "nak: Remap GLSL_SAMPLER_DIM_SUBPASS and SUBPASS_MS to 2D and MS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "80230731ec1476ea1f566e5b66d3ba194e5ec642", + "description": "nak: IMAD also has a destination predicate", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ab7a4b531d0fd99095cd1447fdc3a852aa307b62", + "description": "nak: Disable lower_image_size_to_txs for NAK", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "86c7bcc9e326af56ec7bad64548a75e2b96e842b", + "description": "nak/legalize: Fix too many IADD3 source modifiers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0222107699641d0cbad1d1577187a316355cda3a", + "description": "nak: Move all the IADD3 insanity to a new OpIAdd3X opcode", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c5b9d42ac2b895e4cecab0116a292821048bef52", + "description": "nak: Add an alloc_vec() to SSAValueAllocator", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "52acb12f75d235511222d2cf2e23ecba4ed09cea", + "description": "nak: Document spilling and RA", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a0bf406057805f2e67e33a15471aff99561e8dd8", + "description": "nak/spill: Tweak the construction of S sets", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea0ae395a981d3bc260819b9a92eb8453cdeb747", + "description": "nak/ra: Improve coalescing", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "46d489fa4d1511c580724a7608bf440b466e8272", + "description": "nak: Implement shader clock", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "84d176569098aac190bec8a908c4667f59ad422a", + "description": "nak: Add a debug flag to test spilling", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "07b9465b5dc580ef22308b5ae6260f8480c1b9dc", + "description": "nak: Spill registers before RA", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "aa9357891512c7e3df1301133ac3913db1e19552", + "description": "nak: Use the correct number of GPRs on Turing+", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bcad2add47359588095965b040b63ea667880406", + "description": "nak: Add a spilling pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a502a994e839c1299d187b322bab58bf8fe6a3f2", + "description": "nak: Add more NextUseLiveness helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "72a472141203f11bb041666f6bd8908b565da1e9", + "description": "nak: Add a RegFileSet filter to NextUseLiveness::for_function()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "002ee9e40e57c9108207fd5cd7894e91e1c8313c", + "description": "nak: Expose LiveSet for incremental liveness tracking", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8c04737a6a64bd83652e3772fe3485f727fac442", + "description": "nak/ra: Don't free killed for OpPhiSrcs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "efee3264b2bf2237ba551d97f8c0da49e45c4339", + "description": "nak/ra: Handle parallel copies as a special case", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4d5bf265b0d63d6a6a84e5a4bf119439501f5292", + "description": "nak/ra: Drop the pointless AssignRegs struct", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "57a7932bb55ac1387a01f35f6757cd0c33c4a779", + "description": "nak: Union find", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4a081059226e3379ae3763d5dbc50c5f1722fe02", + "description": "nak: Add an SSA repair pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "214b7e4b88437703fa4f4b0a2b3da5c09802fd97", + "description": "nak: Add a to-CSSA pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d574d29102aa78c0243738d905d59c08b7e359cc", + "description": "nak: Add helpers to BasicBlock to get phis", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2f9565e7259f6dcc1262ff6340b350592b2ba56e", + "description": "nak: Add a dominance check to CFG", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bef6c1095e2ed10bcc378fc618481735e85e3bc8", + "description": "nak: Add interference helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0fd3510166d566ba50d098a82c165b11d8167f2b", + "description": "nak: Restructure liveness construction", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2c3eb239f8fba35582438b974b6f0d3673828d33", + "description": "nak: Allow DCE on functions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "002022a0b14ebd65274fd2431bb1d4fd40a7782c", + "description": "nak: Handle RegFile::Mem in parallel copy lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4f05308ad99d4f8a1c527bcc0caedf914feee7f8", + "description": "nak: Add a Mem register file", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fe7ac83a94a9b6e44e418b40a9a3d89f8dcdd995", + "description": "nak: Use more OpCopy", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8185f3064ed4282c1b548b6f430ed162f9b51d67", + "description": "nak: Use OpCopy in legalize", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fc35dd6aba4d791d5e7fc44a36fc07f99e2d92a6", + "description": "nak: Use the builder for the legalize pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4c798afb25600dcc0784402c6854f7793fe75bb5", + "description": "nak: Add a new OpCopy instruction for parallel copy lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b78ccebf4b5aa97f2e7834ac9ce06695286ad011", + "description": "nak: Rework map_instrs()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "72f4cd3300fbaf85c95f66523d453a425b821f82", + "description": "nak: Use u32 for register indices", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5c3e7bf0b7d3f73abc9f780ebe1aadc35d669a48", + "description": "nak: Refactor nak_assign_regs a bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e6b0c3e220ed8b9dcc1dbeca615b2cf700f3ef27", + "description": "nak: Add a phi allocator", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "741f7067f1fb5953e84bac0fcb5c6c7df588df48", + "description": "nak: Add loop detection to the CFG", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a560356b717db8ee8348cc9e0a501229e772a186", + "description": "nak: Base liveness on CFG indices", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea9390cd21d0dfcc54f9f4d88ceecf9d08d950c9", + "description": "nak: Store the blocks in the CFG", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7ce3dfa43b6d41e691eca3edd5c3c9db490c58ad", + "description": "nak: Add a more awesome CFG data structure", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c1b62f1d151391d4a885ead7a104035dbe40d145", + "description": "nak: Emit if branches in the predecessor block", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0143f4566f72e8ab86c1c424522a5bd1b38cc9a9", + "description": "nak/nir: Add more helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "756d0c0ba3e99c0537e6b8346ac77bacaa1f10f9", + "description": "nak: Add a new VecPair type", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "67c13aea9e06c12bc857dd60afdd860171963c3a", + "description": "nak: Add more SSA iterator options", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dc26c826b98071b5ff88c17ed1d5ccb126695e1b", + "description": "nak: Add a RegFileSet struct", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2fd0a2e20704fbeb5ae094353c87feea76040e27", + "description": "nak: Accurately set num_gprs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e25bbc9b7b517ecb0caa966f14ba36b7876ba306", + "description": "nak: Add mum_gprs and tls_size to Shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8e9f5416bbfeac98fe52713d36bc3d52ad4b804b", + "description": "nak: Bring back bitset-based liveness", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "26748d6fbf4321007cac373e997b5f47aa83bb9d", + "description": "nak: Make calc_max_live a function of the Liveness trait", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "80d58b35211091b383cb480db1b2a30680906561", + "description": "nak: Handle dead destinations in RA", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "865d6c303f67e0c4d8fc26d08336e72a02cd9683", + "description": "nak: Require Rust 1.70.0", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "71c5bbc5a8813f56513b842d2a59d57a5ce65e6f", + "description": "nak: Break guts of liveness into traits", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f1cb99d06b6c6a36d916775fe3bd0a913c9c8cb9", + "description": "nak: Separate the CFG from liveness", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "497046412edc00888a84654413efa34512975b6a", + "description": "nak: Allocate the minimum number of GPRs.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d9c606fb08c428d8b91556a01678a2ece3a90fce", + "description": "nak/ra: Pass a PerRegFile num_regs into the allocator", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7b3d62e51a7db9b34a516d5a5bcaaab9cb7675e3", + "description": "nak: Print to stderr", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a7df0a03e9bd5f1be5aef0ac1c13e44daffecd6", + "description": "nak: fix backtrace crash running computeheadless", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d7d330754b260edb478a9ec76bd2a82a288f6aab", + "description": "nak: add support for nir_op_unpack_half_2x16_split_{x|y}", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "59c05e16e4f4f0f802738e01a58e29fd929445f2", + "description": "nak: add support for packhalf2x16_split", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1f10cdbbbee47e6cace8ac4d4e0beba8d9265654", + "description": "nak: add support for findmsb,findlsb", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e887c4d07a4ad49d37ca4cfb1aab2810d6d4936f", + "description": "nak: add support for nir_op_bitfield_reverse", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d27e271ba5d8c6eb566dd5adae7fa29c65ff99ff", + "description": "nak: Add support for nir_op_bitcount", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d133603c7d5d34303897c4807650609e91e29742", + "description": "nak: add support for nir_op_isign", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "22b4d1c559edb13a6023bf45fc16f016ba819db6", + "description": "nak: change ishl data type to I32", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "30824fa6a529d71b95addd00855b0354ff85b00e", + "description": "nak: more lowerings", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e03cc1f54246acb349224bc33eeb0bbc2d666016", + "description": "nak: Add some documentation for SSA values", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "11ca78f92324e72e26a21ddf502a1a0d9d20c3b2", + "description": "nak: run nir_lower_frexp and nir_opt_algebraic_late", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "394bd770bccababa84f3f96e04726cf80a2f2a45", + "description": "nak: add support for floor, ceil and trunc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4dd277e2338a84d717ea0fce241c3f73b542c42c", + "description": "nak: Rework RA a bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c9a6073754d80af89abb5a71d2e506f912ec5066", + "description": "nak: Use pcopy.push() in RA", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c0e6d8006398dd1648aa52a4517724e061920532", + "description": "nak: Use num_regs instead of max_reg in RA", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "19806cc9e493c9829d432a6b5380c23a86b1accd", + "description": "nak: Initialize RA with only live registers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ec47843ccafe12848450b0ba198930f03c9026c4", + "description": "nak: Record register pressure in liveness", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7c98dd8bfd57f7afa3a7dc829cc713360b59f229", + "description": "nak: Add a PerRegFile helper struct", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b661279e6e403e181893ed6f88788756516fa063", + "description": "nak: Rework liveness to add next-use information", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f67fecf1960dd7f0d6fd168651e306b21f28954e", + "description": "nak: Compute liveness in reverse block order", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "82f0c6cf7747089bf21b59bef3a3aee26269d52f", + "description": "nak: Use the builder in some lowering passes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2d69a2c1d72421d3ff239eff6e5de8829412b59a", + "description": "nak: Add a builder", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "063c9f41faf04ddd637d40a96a7c9d3bd4e0e5b9", + "description": "nak: Work in terms of bits for type sizes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ced6b44ba6aea0290d096d427875c8d79e3d5f6b", + "description": "nak: Follow memcpy semantics with OpParCopy", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "831d1ee2d6d1382d3194717c5b85e61609182536", + "description": "nak: Do not allocate vectors needlessly in optimization passes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5014b4697d515b5fbe9d85df55ca5a455f4d1f7b", + "description": "nak: Heap-allocate Instrs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fa0891d37c69f6e91e7bb2143c3a2384835b0c0f", + "description": "nak: Implement nir_op_b2b1 and nir_op_b2b32", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3bf0882ea85d26e19bddd48ac622305751bf67a8", + "description": "nak: Implement indirect UBO loads", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0ff7fbf093f27f05994ef84bcb9bf6c5c714382a", + "description": "nak: Rework cbufs a bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "86684fa9aa064d0dd2bfb8e409a1602077d4df94", + "description": "nak: Legalize everything", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9fcc0eaa8accea905b83c54eef8ad47d24598ed8", + "description": "nak: Fix multisampled textureing", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cc88a1c78edbb18d38fd0ea8f8309c7803ed76e3", + "description": "nak: Add a Pred struct move the enum to PredRef", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "38c9d6dfbb3e08968bff0048579e1ba29b8d7bdc", + "description": "nak: Add accum predicates to Op[FI]Setp", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c6edf43f70154ba98c4953998c101fa1863e9118", + "description": "nak: Delete unused imports and dead code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d48bea6638b1079b05227d96e9224faa97673eb2", + "description": "nak: Fold fsat into FAdd/FFma/FMul", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4c3a5b16e9202bed0ace00434a0d825856f41601", + "description": "nak: Rework source modifiers instructions a bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ba14292166a0f2ef1cb7b3e3ec03a95eed1ed14", + "description": "nak: DCE things with constant false predicates", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "818ec3242bed9cca2e5e73ab8340bae7cb42842f", + "description": "nak: Optimize OpLop3 and OpPLop3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "59f6d657f3aee5853d8be8b178700d32c6fe9d1a", + "description": "nak: Fix the 2nd predicate on LOP3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4367e0786b19aedd6b669d78d9978afb644d7781", + "description": "nak: Implement image atomics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "82e5b0dd93001cb9edd402d2d0f4b3682fcc32dc", + "description": "nak: Implement global/shared_atomic_comp_swap", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d359c64b2a64ac05c096a790bc9bdb8081a22434", + "description": "nak: Implement nir_intrinsic_shared_atomic_*", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d1c56b12b9cc574f4ae61aed67dd621198dbf629", + "description": "nak: Implement nir_intrinsic_global_atomic_*", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "18a11aa449449daf19fd8f18152ca2999640e859", + "description": "nak: Rework copy-prop to use soruce type decorations", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9bc2bdd78f9e73aae5b1ce610d5d61bda5d35f09", + "description": "nak: Add a Src::supports_src_type() helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "42d31b4bfda92d1e6810a92f54d633bb12c96ecd", + "description": "nak: Rework source modifiers a bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a2390fdbc1786ad4e094f1356ef10c15e85ade15", + "description": "nak: Only divide FS inputs by .w for smooth interpolation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7398a262da064b202ad2d560c43eca27b0583690", + "description": "nak: Decorate sources with types", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4def64545a15d4719c524f7a4eed123596d7b3d8", + "description": "nak: Add a mechanism for decorating sources with types", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3207f29a09b7f096e52b49d033a36fa880eacb43", + "description": "nak: Integers don't have abs() source modifiers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a2103d73b61b3cab86a9409f89c98904de3bb93", + "description": "nak: Implement load/store_shared", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "73976c3f317e9abbbfac56960b70e808929341f3", + "description": "nvk: Plumb num_barriers through from NAK", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4c2ce288f97f5081c48cafae5daba9fb90aec981", + "description": "nak: Implement barriers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "53a372ec3d03298679a4f1d995c25446b9b56948", + "description": "nak: Add F2F and implement fquantize16", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dc3b2c7d10c1d91dbaeca8a3c8fd254b878d2408", + "description": "nak: sin() and cos() require we divide by 2pi", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a6e1167a8398a4f3f13d86090a2f4eb87198c7ef", + "description": "nak: Don't allow r255 in texture or surface ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b70d99818084dbb709107ba6ec77ce6b0c8b6e64", + "description": "nak: compiler: replace Instr::new(..) with OpFoo {}.into()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ab9cf27c02911c77d42eabe31018361588add138", + "description": "nak: compiler: add From> for Instr", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e8f220f7a19642d0212811cdc32e08fd53d4d81f", + "description": "nak: Legalize Op[FI]Setp", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3bd42dd2540d49f0bd814702c4b8142dd6d407d5", + "description": "nak: Improve [FI]SETP encoding", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3ac03b043e13822f1f6e2cb22318fa9f1496dd82", + "description": "nak/nir: Lower image size and samples to txq", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6750d21e6591422a205cebf68d6a11913fbe9526", + "description": "nak: Legalize more stuff", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "854b4c0817aea04be124dbae8b469d21d4530138", + "description": "nak: Only put actually live SSA values in the ra.live_in sets", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "49f8fb0c038dc8e54da5fbcba62a52eb1f21eaa6", + "description": "nak: Legalize OpShf", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4e4548afc9e3819642f198ce46f98a15f11d4324", + "description": "nak: Improve RA failure messages", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3c7a837c5169bc19f4038bc939046de547f1e749", + "description": "nak: Add a smarter new_lop2 helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a36a614583a653167075f754eacc9808a91001f2", + "description": "nak: Implement nir_intrinsic_load/store_scratch", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a4ea83777bba70547c2ddcdeef0d39e2b6fa3a42", + "description": "nak: Wire up OpLd and OpSt for local and shared", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "840c0281ced493ca7dba5bacdf3ce265ec954dd9", + "description": "nak: Implement image load/store", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9d2b81e71d71480514c632394346c7186f63cb2e", + "description": "nak: Implement undef instructions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2387dfdf6bf39870f11e66aae8b6dcfb50a54f06", + "description": "nak: Implement nir_op_ixor", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6ab0d7ee23c8a1d325b032bd665f61c41f748c5b", + "description": "Revert \"HACK: nak: Lower iadd64 again\"", + "nominated": false, + "nomination_type": 2, + "resolution": 4, + "main_sha": null, + "because_sha": "88b14e4ab9e272bfb33bea4057aacbdd5a16ae5b", + "notes": null + }, + { + "sha": "6e5c96043481806fd66e8135705be6bace1ec73a", + "description": "nak: Implement nir_op[iu]mul_2x32_64", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "392d3791a8e4f8bed30444cc08c553f5531323d0", + "description": "nak: Much more believable try_find_unused_reg_range()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f3e1379bdf92964f35a6df4d9bfc7a2b2822a73f", + "description": "nak: Add a use tracker to RA", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "10deb1d62bc32195fc80993aee68bd79f1cb9a75", + "description": "nak: Legalize vector sources", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9ef47c89211865bc0fca64441f945f1a59ccc057", + "description": "nak: Rework vector handling", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a9e79994a734e99d1d930ebd909ed81ab0755de4", + "description": "nak: Add a debug flag to assign worst-case instruction deps", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e3222b22278b8e6722b0a34f63139137f3adb8d6", + "description": "nvk: Pass NAK flags through to shader cache UUIDs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a41ab7535e0a7d006d6f7c9e72bee3d8156fa570", + "description": "nvk: Drop printing of NAK shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9daa595ee31450ee44668e7b8a2608fad7174425", + "description": "nak: Add a NAK_DEBUG environment variable", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4c81f876701d99d87393505585ed5a8e11969ea4", + "description": "HACK: spirv: Add a MESA_SPIRV_DUMP_PATH environment variable", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "145f43a9a170914428e623b9320d0e8cf1021c9a", + "description": "nak: Simplify the (Srcs|Dsts)AsSlice proc macro", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "09216cd9f4189f708f48aaa7315f792b245845b4", + "description": "nak: make Instr::new() generic", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b44815192555c72bc62ffb16dfb5738c1aa0d49d", + "description": "nak: Simplify the FromVariants proc macro", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fc3ef0a25133ad27c7b82dd1dfcdaff9cbd24670", + "description": "nak: derive From for Op through a proc macro", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a70423944bd46d16d72c708ebc07f87e968cbbd2", + "description": "nak: Wire up texture ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9d7e1d515fbc252a1bb09830fb33201555dbdbfa", + "description": "nak: Use more core NIR texture lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ad01fbdda030d2c5d2dd09f02bbaa7ab3613b7ae", + "description": "nak: Add a NIR texture lowering pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "31ecffa3a3b8665d15666101880112802b16d5ed", + "description": "nak: Enable nir_lower_idiv", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c21550e596adbb190c795e3c9d27371e1419fba0", + "description": "nak: Implement nir_op_[iu]mul[_high]", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1825f54d793e2bab9de8e5ae5f71f3bffd8880ad", + "description": "nak: Implement right-shifts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "90a05b5591f95942126947138626e008dccc4ff3", + "description": "nak: Add more legalization", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b6596b0a5375615057696a06c1ebbea205f6b3b2", + "description": "nak: Wire up ffma", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c2f72a578224949246e4ff0a52ca7029a9bcc004", + "description": "nak: Implement f2[iu]32", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0943da1a371fcbb844e19d97460d8d6d0a600c5f", + "description": "nak: Implement OpFSOut with an OpParCopy", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d6912622f50b333beffba654ac0eca13b9610f38", + "description": "nak: Use immediage offsets for load/store_global", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "871bd62fe52e442420ecbbb5757a5d4456aa580f", + "description": "nak: Handle multiple vector destinations in RA", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8c358ce105a016f12c91f9c7f1cf8d6eda7ec630", + "description": "nak: Implement input interpolation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6595abc1e0dbcab5cad0f172dc2670f66ed1e619", + "description": "nak: Move nak_sysval_attr_addr/sysval_idx higher in the file", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "88f7056d095e0fd3abf61adef4f9936a486a5cc6", + "description": "nak: Implement MuFu and a bunch of float unops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f9f9399773e2235a76b5cac8559f94237446bbdf", + "description": "nak: Implement nir_op_vecN", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0c23df7da25414f06a311799508f1405db650fd3", + "description": "nak: Implement nir_op_u2f", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3acb1f80b8248a8b0ab164a5d108a33ec05629c4", + "description": "nak: Implement nir_op_(fmin|fmax)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d86e75e507d93e008ba44d8ba910c2975312f312", + "description": "nak: Implement nir_op_fmul", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2a7cda75a203527f74a8c7762cf9fab5986e7b8", + "description": "nak: Implement nir_op_[iu](min|max)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "63dcc7c75acf26cd40cf017c164f7a9e45668aaf", + "description": "nak: Predicates default to true", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0cbab15de597704ec9eef7a580ce4f087634c118", + "description": "nak: Fold [P]Lop3 sources", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed42571e83af9c8e68a20659863f7b1522bff548", + "description": "nak: Implement nir_op_i(eq|ne) for booleans", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3fd47a68a1004da9f238eecd7a533f7810d2882e", + "description": "nak: Handle token re-use in dep tracking", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "991fa18f6e4b65082bf04cab03abec0a34a55f08", + "description": "nak: Improve the dependency tracker", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "af752f73dcc25bb34803ff0a6c9c263fffec35e9", + "description": "nak: Add a non-trivial register allocator", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "40fbf6bed2872cbbdd7ccd69a7760b3d97976a2f", + "description": "nak: Add a liveness analysis pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3b39778fdddad2cacfe650123fef8af45c530651", + "description": "nak: Add a space to the end of vec and split arg lists", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8004416e38deebf21b6e94245f47e3b4dfb22c07", + "description": "nak: Rework phis", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "15a4b620b9065ac8de827165f2b6c8eff28ac1b2", + "description": "nak: Rework dead-code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ef45379bfa6e4e33b020ad02d0177d511bcad5e2", + "description": "nak: Add an SSAComp struct", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "552faf28649e604e4e44bf1c431c8932213f8572", + "description": "nak: Add a BitSet struct", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d10ff2bdcd888beb4d720a0a0ed15cfc05aad6f8", + "description": "nak: Rename BitSetView to BitView", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e1be53e26623403ccb4e1ce10a4f59d88918a212", + "description": "nak: Get rid of the BitSet and BitSetMut traits", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dadf34c620687bc68cbfebdad8fb75796130183c", + "description": "nak: Use OpParCopy for OpVec and OpSplit lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "df11e232d605763f8b018428f2b634413d01ae4e", + "description": "nak: Add a parallel copy in struction with lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "90c098e286392b80b0b8bf520e47da3adc4bbb19", + "description": "HACK: nak: Lower iadd64 again", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c68989e49c3da4ade817a233499f5c5f23f90419", + "description": "nak: Don't emit MOVs for overlapping vec and split src/dst", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b1423477974ac142028805ec8c2a8d54dbd77926", + "description": "nak: Drop the special cases for single-component vec/split", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3fee98d29064307a5b0c986a26e5030eda6268d6", + "description": "nak: Support both destinations in PLOP3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9261de692773fae3f3518c169fde0592f3c622ce", + "description": "nak: Handle phis with non-SSA sources", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "548cb292cf18439f2d7aa1484af3326dc1728b9b", + "description": "nak: Add separate True and False source types", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "29ecb7acf18228f34ffda45976529841d044a672", + "description": "nak: Rename Imm to Imm32", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "43e2f1080edb8e663014aab389e340f095ae9a06", + "description": "WIP: nak: Add a legalization pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "63707b37d660c9058e2cce59457f916e35cecbb0", + "description": "nak: Handle fadd funnyness in the emit code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "df07dd4996c37095fe3f751a274aa68647c1a880", + "description": "nak: Pass an SSAValueAllocator through to map methods", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9704772021856ff11bf61d8cc9cc8cf30ff91745", + "description": "nak: Add an SSAValueAllocator struct", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2b3a883e97ad21331070036cc96be51b44a1fd11", + "description": "WIP: nak: Rework the barrier assignment pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d0e0e02db75b60ba8f73127b134fb7335197da79", + "description": "nak: Implement unpack_64_2x32_split_*", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2bd71dd0f0f96a42c8491bc13b8dfdbc641efc2f", + "description": "nak: Print names of missing instructions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cb50296e3db800fff8e1c014406039c074e14b87", + "description": "nak: Lower global access to scalars as needed", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "10efdb47a75f170ade60e3b72cb9fbd9b1316219", + "description": "nak: Add a union-find implementation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "020a7ba8f5c8126c4db86f679f27a215fd0098e6", + "description": "nak: Implement phis", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "520ad0f4a7816d69114ef5db3b8f377adbb78f17", + "description": "nak: Implement iadd64", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cf533663c17ba138471dae9cb9571096e97f687b", + "description": "nak: Implement b2i32", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "05ba3f814496cf83934a6dc5d9f82a264481dcd7", + "description": "nvk: Pull the NIR options from NAK", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0e4480d8b3d7d99abd8ceff8d1fd79f9f7d8ccf0", + "description": "nak: Add a nir_shader_compiler_options to nak_compiler", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5a86cf2b804388e2b782893927af11408a4984e7", + "description": "nak: Move nak_compiler to nak_private.h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2bf9cafbe749cb2b89edc18448a7c273bb823624", + "description": "nak: Implement basic control-flow", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b3382b8617234cf47185d6f398586a3be238b0b", + "description": "nak: Add modifier propagation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "495b64be2b17d7046a383f078953a9bdac7dade4", + "description": "nak: Make Dst its own type", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea2c6c8ebe300db1972000f1ce7db3a71cd570f6", + "description": "nak: Implement Display for SSAValue", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f26228fca31e945107d98511336aba2d2f4e1bd2", + "description": "nak: One of the predicates in IADD3 is a destination", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9541036507c076c6048206ac2fca36c478490a4d", + "description": "nak: Rework source modifiers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fa8782733d2414a5f86621b2d4590d6eb0d6f528", + "description": "nak: Rework ALUSrc in emit code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f4c0ea24e5c74538b504a254ec050b46d488d79b", + "description": "nak: Implement fsign", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5ad06de4d3820e55a2ffe53228ccd3b52f7918b8", + "description": "nak: Allow iadd3 to take an immediate in srcs[2]", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "811ccc691774bfd38bfbcddfb9a5961a32a7e6ec", + "description": "nak: Implement unary float and integer ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4c057423e8c83530b218afa3bf7d131b1c3329a4", + "description": "nak: Implement nir_op_b2f32", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "708d928fbf31e1e1fff08a24037ded4f4421a1e1", + "description": "nak: Implement float comparisons", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d11c8268a2e0c31f4791ec4698dc1c557a91ff3e", + "description": "nak: Rework integer compare ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3a17c943da0b7b53cf301295040cdb80c37d2785", + "description": "nak: Implement fadd", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5935c62d4e59439f4f6ec456fe407a5572a613a3", + "description": "nak: Implement i2f", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8adeae1dc2342eb0f4ea111363c8b619018c46c4", + "description": "nak: Handle zeroes at emit time", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "17306009431f0b76e03a84e4d15c27d4a6d7cc5e", + "description": "nak: Use Src::Zero for load_const(0)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b41b4bd7f57813350e5a6351ceb8fb57ee308c62", + "description": "nak: Use a different inner struct type for each opcode", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e994acdb36091cc7c3c48517b5bea92d3d66fd61", + "description": "nak: Add a SrcModsAsSlice trait", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6e5f6476e31ad48f105d98bd7a2568533524e42d", + "description": "nak: Add SrcAsSlice and DstAsSlice traits", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5a80c2e89a7fa5ed5e494f00ff2ce7f6bf6af41d", + "description": "meson: Pull in syn from crates.io", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "384f4448e12f90f4b9de738f8c5d3a672d0f31a1", + "description": "nak: Get rid of meta instructions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "438c67c1cbb6f0f275b8b6a1b2e10840580bad49", + "description": "nak: Use Instr::num_srcs/dsts() less", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fafb72e2be31d846b9cb17e4dde7424782f5e021", + "description": "HACK: Support old meson", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "44243c4741d6e115b0ee3f6c4ea3c7b3d3f88bb1", + "description": "nak: Lower 8 and 16-bit types", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8f121036ea7e3197051ee1d06ebe9f32160228b2", + "description": "nak: Implement boolean logic ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "871bb598751d1ca17745894ea685a5fab0b5badd", + "description": "nak: Rework instruction encoding", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5207d9e3a07c97f7cc54e07ef2907ec71a726d94", + "description": "nak: Encode load/store correctly on SM80", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5daff0876f7869fdd8b9e09a0ac6d2f245d0c08c", + "description": "nak: Plumb the SM through to nak::Shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "611ed96557d0455f9a9b080fcefeb89a83c60b6b", + "description": "nvk: Pass an actual nak_compiler to nak_compile_shader()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bf72e78e0aa6880712fa55cc35f15b49501ac72e", + "description": "nak: Add nak_compiler_create/destroy", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c10aa56efb79573919b8e538042d8d7070bd4afa", + "description": "nak/meson: Use bindgen dependencies", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e69a30cecb8e998f29763caee3f7c0b5bda6a819", + "description": "nak: Rework ALU instruction encode", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0e755f99641da55baf52419a46f241f54ccc671a", + "description": "nak: Implement bcsel", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b3d6dafc7d8490b03761e760e265441d57cca3ed", + "description": "nak: Implement integer comparisons", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ac2a56f56f1389a1f3b4099b2cd5712a37a69eaf", + "description": "nak: Add support for instruction predicates", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "de073a10e6ee90658d2ff760d8fb0467d29656f8", + "description": "nak: Implement 32-bit logic ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8cf12d6a3fac05e1955f21ed5f60972a015759e8", + "description": "nak: Add a pass for computing instruction dependencies", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "93eb2f884a3eed76c1a2b3a1be1c6c8bde80313f", + "description": "nak: Implement iadd and ishl", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "241caaf5ff58aab37dc5168743d2c5c560eea964", + "description": "nak: Add an instruction fuzzing tool", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "90d3fd10e1dcca156a00b632100b07ba67c81b15", + "description": "nak: Zero out the .w component of descriptors", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c21250677198dac26214806103e825f11ffbb6e7", + "description": "nak: Implement load/store_global", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c76331fb51b78afa1106aab16f78996f1b7d189f", + "description": "nak: Implement load_ubo", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "62f5e65c809c7b693359f464defd24587ae38f04", + "description": "nak: Implement load_sysval_nv as S2R", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fb96aaf3fac434905b8366f84db058cdc21eae98", + "description": "nak: Lower system values to a new load_sysval_nak intrinsic", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "481a29a9128c5f126d15ab715f6faec0a367ce2e", + "description": "nak: Header stuff", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "80376146ed59fe623a197dd7cc32b9e9e41a0386", + "description": "nak: Encode program headers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "50b1deefa728e94be33cdd99fa32ec7c53708ba0", + "description": "nak: Add encoding for a few instructions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "83f8d6e2a766b60eaf49b91a05e50f931683a49b", + "description": "nak: Add bitset infrastructure", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "812255fc79c7857508f51410e5194d0a792305ba", + "description": "nak: Add a lowering pass for ZERO sources and destinations", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f694f1f8a88ac7c699d7e83bb8a5c42d40a9ea6e", + "description": "nak: Add a lowering pass for VEC and SPLIT instructions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d44b31f3bf7d0262117d35931cf02287164b7c34", + "description": "nak: Add a trivial register allocator", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "08eb9061115e288f3719e45e1973c9e69ee86f9d", + "description": "nak: Add a util library", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4e95cb908f58ce29d61c123db793f2d76404b05f", + "description": "nak: Add a dead-code pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9769f19c7e7ac72300c0a161f3ebf624dee617f0", + "description": "nak: Add a copy-prop pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5585f57c5c49f97a288f11b3bd52b3d8326a70ef", + "description": "nak: Add initial translation from NIR", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a4a5fe2270371dbbda55bbe4f753d27c48680ca9", + "description": "nak: Add Rust bindings for NIR", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "771d9c885644d16e3ce113d0f2fe21adf17c9ca3", + "description": "nak: Add the core IR", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "62695614d73570125935289a2101a8ddadc88aa7", + "description": "nvk: Run shaders through NAK", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "79ff2d9a33bdbe5e89578b10a96401ba2e6ebafc", + "description": "nak: Add initial stubs for rust code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c778d39fa4dd3ee5062ad5f1e919448add76e779", + "description": "nak: Add a bunch of shader lowering code in NIR", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b70f39ef67c23c78a9df94cd4ca4207830594c7", + "description": "nak: Copy the optimization loop from Intel", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "40f9327c8af69e562554a21bb24816a9755dc883", + "description": "nouveau: Add initial headers and meson for the new compoiler", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9ef621ec2ebc61ce89b6cb05608fb7961b5f67bc", + "description": "d3d12: ARB_query_buffer_object and GL4.4", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6384ccd1cd2b77a08275e7ce6e917ef0159e171a", + "description": "d3d12: Reference count queries in a batch", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9caea4c3e9ff245c05f77f2bf1d2eefcae0f49bd", + "description": "d3d12: Enable ARB_enhanced_layouts and ARB_texture_mirror_clamp_to_edge", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "707cdac7e7a6f22b7a454bcc88b874c7238b5a1e", + "description": "d3d12: Fix GS variant I/O slot counts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9fe88dd9b9f3bd075369fbc60689a835f20201a5", + "description": "d3d12: Support enhanced layouts for VS inputs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "72341747f48d17a5e17b29ab0d914e29d24d9717", + "description": "d3d12: Split dvec3 interpolatns into devc2 and double", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1aa56d486cbe22f4739b6122e35ef3650546471b", + "description": "d3d12: Fix location_frac_mask bitfield size", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c77f8b4db02665b418b8c4e3d9d598882110ed49", + "description": "microsoft/compiler: Stop lowering all I/O to temps", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d6dea13231295c56b2d7bc671a32473efab50022", + "description": "microsoft/compiler: When packing fractional inputs, find a row with space for it", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d7bc277726ad07214fb9ac04a81d37862f2c1d68", + "description": "microsoft/compiler: Don't use 64-bit types for signature entries", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2334ff67b70b737f6debe321d4c3daa399bd9c01", + "description": "microsoft/compiler: Don't declare PS output registers split across variables", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "adc7caa3ec73356e869c380d4541ac5ecf7004e5", + "description": "microsoft/compiler: Bump signature limits for 32 rows of 4 components", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ee48b12a8f56a171f0f8fc6ce6c5bc60aa103fe7", + "description": "anv: Avoid emitting PIPE_CONTROL command for copy/video queue", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8c9a7f77303b5acb4555a8c41b897da891fbe2da", + "description": "anv: Write timestamp using MI_FLUSH_DW on blitter", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "056b0cb87f2831715452f2754df8d1bc810c6155", + "notes": null + }, + { + "sha": "dcb68de6563d511ccf78ed12b76516038e452df4", + "description": "intel/compiler: Clear up block instructions before re-adding them", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a9f95bf687e8655607f7a6faf87388708fe92998", + "description": "intel/compiler: Reuse same scheduler for all pre-RA scheduling modes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0dd5378ffe9cc7c3eee4e5b400a2bb30c759efb7", + "description": "intel/compiler: Make scheduler classes take an external mem_ctx", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "04aa2df461d0fc08362ad0446f763eee79d50e84", + "description": "intel/compiler: Separate schedule_node temporary data", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "81594d0db180398f48634438c8c8b5b9ab6a227b", + "description": "intel/compiler: Move earlier scheduler code that is not mode-specific", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "73d4e4118afe155bd46a7ec993f12649b6176ee4", + "description": "intel/compiler: Tidy up code in scheduler related to reads_remaining", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4f246cf4e74f3d5a3a0a478aba82cc2a0f826515", + "description": "intel/compiler: Merge child/latency arrays in schedule_node", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e59a054203f5f93f1e7bf17d2c163f33676151ae", + "description": "intel/compiler: Move FS specific fields to fs_instruction_scheduler", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a6297d05ca938f416af0388df093eeddfdc89d94", + "description": "intel/compiler: Remove virtual calls from scheduler", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d76d58cf50c9698790abc6067f7c5e6b5effe899", + "description": "intel/compiler: Cache issue_time information", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ecd7ffcf787cd7c90568b62dd2011b54a45c318d", + "description": "intel/compiler: Extract scheduling related basic functions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8a8dd2db0c9e82b0b48ff90f01cdacfca3bc96b3", + "description": "intel/compiler: Add only available instructions to scheduling list", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ddff6428c51bef3d4dbcb83cdb64949e677737b9", + "description": "intel/compiler: Use array to iterate the scheduler nodes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fe6ac5a184fa143d95d471493f484bd1169a12a9", + "description": "intel/compiler: Allocate all schedule_nodes at once", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "be012055da9dd235b949ea3e393027856ad17fd9", + "description": "intel/compiler: Remove reference to brw_isa_info from schedule_node", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "698757173735904e13199ef714dfafb0d85143fb", + "description": "intel/compiler: Use linear allocator in parts of brw_schedule_instructions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "61203f60787b146606ceb5cf8541b8186f6f7171", + "description": "radv/ci: Update skips comments", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ffdad731cd8d8900c10810b61283afffa142f29", + "description": "vulkan: Don't use set_foreach_remove when destroying pipeline caches", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1cb3c349ff60115019673d807bce40a611463b85", + "description": "bin/gitlab_gql: give a better name to the --print-job-manifest argument value than PRINT_JOB_MANIFEST", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "22961fc45ab3f7b8de64a7d3c57f950c88538f53", + "description": "bin/gitlab_gql: deduplicate fetch_merged_yaml() logic between print branches", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ef63cc601774825df696fe3747a8e4c781c4db16", + "description": "bin/gitlab_gql: rename get_job_final_definition() to print_...() since that's what it actually does", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c6ef161bc14894b0622a659e73893e997c61dd47", + "description": "bin/gitlab_gql: only allow a single `--print-*` argument per invocation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "08f851f4361cfbdb211dc70d03cf3ebff331c3ee", "description": "anv: Bring back the non optimized version of build_load_render_surface_state_address()", From 7cf359fb57dd747c9ca0d933673bb2a993b2e4cf Mon Sep 17 00:00:00 2001 From: Friedrich Vock Date: Sun, 12 Nov 2023 21:00:04 +0100 Subject: [PATCH 111/356] vulkan: Don't use set_foreach_remove when destroying pipeline caches set_foreach_remove assumes no entries have been removed. That assumption only holds if no errors occur, since pipeline cache objects can get removed if an error occurs during deserialization. This fixes dEQP-VK.api.device_init.create_instance_device_intentional_alloc_fail.basic crashing on RADV. Cc: mesa-stable Reviewed-by: Bas Nieuwenhuizen Reviewed-by: Samuel Pitoiset Reviewed-by: Faith Ekstrand Part-of: (cherry picked from commit 8ffdad731cd8d8900c10810b61283afffa142f29) --- .pick_status.json | 2 +- src/vulkan/runtime/vk_pipeline_cache.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 96c65da5b57..6bbacbbc553 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -5364,7 +5364,7 @@ "description": "vulkan: Don't use set_foreach_remove when destroying pipeline caches", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/vulkan/runtime/vk_pipeline_cache.c b/src/vulkan/runtime/vk_pipeline_cache.c index d5988952a5b..71471dd0239 100644 --- a/src/vulkan/runtime/vk_pipeline_cache.c +++ b/src/vulkan/runtime/vk_pipeline_cache.c @@ -659,7 +659,7 @@ vk_pipeline_cache_destroy(struct vk_pipeline_cache *cache, { if (cache->object_cache) { if (!cache->weak_ref) { - set_foreach_remove(cache->object_cache, entry) { + set_foreach(cache->object_cache, entry) { vk_pipeline_cache_object_unref(cache->base.device, (void *)entry->key); } } else { From 828b3966fa5e4358006968ed33d173a38c8409cd Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 15 Nov 2023 16:34:18 +0000 Subject: [PATCH 112/356] .pick_status.json: Mark fcfa68a632e5711cc657b103c9a0384928e9bf49 as denominated --- .pick_status.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 6bbacbbc553..61a49dcb492 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -384,7 +384,7 @@ "description": "Revert \"frontends/va: Alloc interlaced surface for interlaced pics\"", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 2, "main_sha": null, "because_sha": "578e10e1571b40c86f3348f2f36e080f34d1a4ed", "notes": null From bbf099223efa728dd5de03118bceb4ead24c71c9 Mon Sep 17 00:00:00 2001 From: Sagar Ghuge Date: Wed, 8 Nov 2023 17:33:40 -0800 Subject: [PATCH 113/356] anv: Write timestamp using MI_FLUSH_DW on blitter On Blitter engine, we don't support PIPE_CONTROL, we have to update memory locations using the MI_FLUSH_DW command. v2: - Handle video queue (Lionel) Fixes: 056b0cb87f2 ("anv: add video engine support in various places") Fixes: 5112b421462 ("anv: Handle end of pipe with MI_FLUSH_DW on transfer queue") Signed-off-by: Sagar Ghuge Reviewed-by: Lionel Landwerlin Part-of: (cherry picked from commit 8c9a7f77303b5acb4555a8c41b897da891fbe2da) --- .pick_status.json | 2 +- src/intel/vulkan/genX_cmd_buffer.c | 6 ++++-- src/intel/vulkan/genX_query.c | 20 +++++++++++++++----- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 61a49dcb492..d6504a8ffaf 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -5184,7 +5184,7 @@ "description": "anv: Write timestamp using MI_FLUSH_DW on blitter", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "056b0cb87f2831715452f2754df8d1bc810c6155", "notes": null diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 424e917ee6a..5090e0fe1ec 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -8073,7 +8073,8 @@ void genX(cmd_emit_timestamp)(struct anv_batch *batch, * ANV_TIMESTAMP_REWRITE_COMPUTE_WALKER capture type are not set for * transfer queue. */ - if (batch->engine_class == INTEL_ENGINE_CLASS_COPY) { + if ((batch->engine_class == INTEL_ENGINE_CLASS_COPY) || + (batch->engine_class == INTEL_ENGINE_CLASS_VIDEO)) { assert(type != ANV_TIMESTAMP_CAPTURE_AT_CS_STALL && type != ANV_TIMESTAMP_REWRITE_COMPUTE_WALKER); } @@ -8087,7 +8088,8 @@ void genX(cmd_emit_timestamp)(struct anv_batch *batch, } case ANV_TIMESTAMP_CAPTURE_END_OF_PIPE: { - if (batch->engine_class == INTEL_ENGINE_CLASS_COPY) { + if ((batch->engine_class == INTEL_ENGINE_CLASS_COPY) || + (batch->engine_class == INTEL_ENGINE_CLASS_VIDEO)) { anv_batch_emit(batch, GENX(MI_FLUSH_DW), fd) { fd.PostSyncOperation = WriteTimestamp; fd.Address = addr; diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c index 69c5ac83041..1f194427669 100644 --- a/src/intel/vulkan/genX_query.c +++ b/src/intel/vulkan/genX_query.c @@ -1391,12 +1391,22 @@ void genX(CmdWriteTimestamp2)( bool cs_stall_needed = (GFX_VER == 9 && cmd_buffer->device->info->gt == 4); - genx_batch_emit_pipe_control_write - (&cmd_buffer->batch, cmd_buffer->device->info, WriteTimestamp, - anv_address_add(query_addr, 8), 0, - cs_stall_needed ? ANV_PIPE_CS_STALL_BIT : 0); - emit_query_pc_availability(cmd_buffer, query_addr, true); + if (anv_cmd_buffer_is_blitter_queue(cmd_buffer) || + anv_cmd_buffer_is_video_queue(cmd_buffer)) { + anv_batch_emit(&cmd_buffer->batch, GENX(MI_FLUSH_DW), dw) { + dw.Address = anv_address_add(query_addr, 8); + dw.PostSyncOperation = WriteTimestamp; + } + emit_query_mi_flush_availability(cmd_buffer, query_addr, true); + } else { + genx_batch_emit_pipe_control_write + (&cmd_buffer->batch, cmd_buffer->device->info, WriteTimestamp, + anv_address_add(query_addr, 8), 0, + cs_stall_needed ? ANV_PIPE_CS_STALL_BIT : 0); + emit_query_pc_availability(cmd_buffer, query_addr, true); + } + } From e194c6b9ba92d6d9c81c96876c91c16ef7448841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Mon, 31 Jul 2023 10:43:15 +0300 Subject: [PATCH 114/356] iris: add data cache flush for pre hiz op MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes various failing Piglit tests on DG2. Cc: mesa-stable Signed-off-by: Tapani Pälli Reviewed-by: Sagar Ghuge Part-of: (cherry picked from commit e4db19afa72b3dc2a33acc6435f714176adc6df1) --- .pick_status.json | 2 +- src/gallium/drivers/iris/iris_resolve.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index d6504a8ffaf..45648b3576e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -724,7 +724,7 @@ "description": "iris: add data cache flush for pre hiz op", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/iris/iris_resolve.c b/src/gallium/drivers/iris/iris_resolve.c index 14a6d95d583..525953b2544 100644 --- a/src/gallium/drivers/iris/iris_resolve.c +++ b/src/gallium/drivers/iris/iris_resolve.c @@ -679,6 +679,13 @@ iris_hiz_exec(struct iris_context *ice, //DBG("%s %s to mt %p level %d layers %d-%d\n", //__func__, name, mt, level, start_layer, start_layer + num_layers - 1); + /* A data cache flush is not suggested by HW docs, but we found it to fix + * a number of failures. + */ + unsigned wa_flush = intel_device_info_is_dg2(batch->screen->devinfo) && + res->aux.usage == ISL_AUX_USAGE_HIZ_CCS ? + PIPE_CONTROL_DATA_CACHE_FLUSH : 0; + /* The following stalls and flushes are only documented to be required * for HiZ clear operations. However, they also seem to be required for * resolve operations. @@ -695,6 +702,7 @@ iris_hiz_exec(struct iris_context *ice, iris_emit_pipe_control_flush(batch, "hiz op: pre-flush", PIPE_CONTROL_DEPTH_CACHE_FLUSH | + wa_flush | PIPE_CONTROL_DEPTH_STALL | PIPE_CONTROL_CS_STALL); From 2b38d1451e9b15ae51c8860bebe11044bf021068 Mon Sep 17 00:00:00 2001 From: Sagar Ghuge Date: Tue, 4 Jul 2023 19:06:24 -0700 Subject: [PATCH 115/356] anv: Flush data cache while clearing depth using HIZ_CCS_WT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Patch fxes ESO shadow pass ground corruption on Arc A750. In the colour pass where the rendering corruption first appears, the depth resource was used as a "PS - Texture". Immediately afterwards there's a Barrier where it goes from VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL => VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL immediately following that there's a Clear from vkCmdBeginRendering which appears to be a HiZ clear. Things work when using AUX_USAGE_HIZ but AUX_USAGE_HIZ_CCS_WT (XXX: and AUX_USAGE_HIZ_CCS?) doesn't work. current thinking is this is related to 14015264727 where we had to add HDC and DC flushes to CCS and MCS fast clears. Maybe HiZ clears with CCS also have similar problems? The docs don't appear to indicate that but the docs were also wrong for color clears until recently... Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9277 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9444 Signed-off-by: Sagar Ghuge Reviewed-by: Tapani Pälli Part-of: (cherry picked from commit 648c0c159d865a8a30f0b524b33db6d932e4e234) --- .pick_status.json | 2 +- src/intel/vulkan/anv_blorp.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 45648b3576e..60e3469b351 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -714,7 +714,7 @@ "description": "anv: Flush data cache while clearing depth using HIZ_CCS_WT", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index 796eb8c484d..f3bea7cdcb4 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -1788,11 +1788,18 @@ anv_fast_clear_depth_stencil(struct anv_cmd_buffer *cmd_buffer, * * Set CS stall bit to guarantee that the fast clear starts the execution * after the tile cache flush completed. + * + * There is no Bspec requirement to flush the data cache but the + * experiment shows that flusing the data cache helps to resolve the + * corruption. */ + unsigned wa_flush = intel_device_info_is_dg2(cmd_buffer->device->info) ? + ANV_PIPE_DATA_CACHE_FLUSH_BIT : 0; anv_add_pending_pipe_bits(cmd_buffer, ANV_PIPE_DEPTH_CACHE_FLUSH_BIT | ANV_PIPE_CS_STALL_BIT | - ANV_PIPE_TILE_CACHE_FLUSH_BIT, + ANV_PIPE_TILE_CACHE_FLUSH_BIT | + wa_flush, "before clear hiz_ccs_wt"); } From 85c0b6281cfc41b45c530aad47922e7d532628f9 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Tue, 14 Nov 2023 16:03:45 +0000 Subject: [PATCH 116/356] docs: fix RADV_THREAD_TRACE_CACHE_COUNTERS default Signed-off-by: Rhys Perry Reviewed-by: Samuel Pitoiset Fixes: dbab98d9d63d ("radv: enable RADV_THREAD_TRACE_CACHE_COUNTERS by default") Part-of: (cherry picked from commit c4ee639ca0378f094e63738697812ecfa191bbf1) --- .pick_status.json | 2 +- docs/envvars.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 60e3469b351..ac610ebbee4 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -524,7 +524,7 @@ "description": "docs: fix RADV_THREAD_TRACE_CACHE_COUNTERS default", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "dbab98d9d63d4de4307c28c0ea578b977ea3f0b7", "notes": null diff --git a/docs/envvars.rst b/docs/envvars.rst index 8660213bb54..4238cc3d586 100644 --- a/docs/envvars.rst +++ b/docs/envvars.rst @@ -1356,7 +1356,7 @@ RADV driver environment variables .. envvar:: RADV_THREAD_TRACE_CACHE_COUNTERS - enable/disable SQTT/RGP cache counters on GFX10+ (disabled by default) + enable/disable SQTT/RGP cache counters on GFX10+ (enabled by default) .. envvar:: RADV_THREAD_TRACE_INSTRUCTION_TIMING From f56bb3ec4b9cac2d12e889c38748320bb0b0db72 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Fri, 3 Nov 2023 09:43:45 -0700 Subject: [PATCH 117/356] nir_lower_mem_access_bit_sizes: Fix write-mask-constrained 3-byte stores as atomics The code here handled stores of actual 3-byte values (8-bit, 3-component), but didn't correctly handle stores of larger 8-bit vectors that were constrained by write mask to just 3 bytes. In that case, the pad-to-vec4 step was unnecessary and problematic. Seen in CL CTS test_basic vector_swizzle test group for char3 with CLOn12. Fixes: c70d94a8 ("nir_lower_mem_access_bit_sizes: Support unaligned stores via a pair of atomics") Reviewed-by: Faith Ekstrand Part-of: (cherry picked from commit cd0cff951a5b7c74d704198b5abfdb40b267cbdc) --- .pick_status.json | 2 +- .../nir/nir_lower_mem_access_bit_sizes.c | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index ac610ebbee4..86e4306d5b9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -434,7 +434,7 @@ "description": "nir_lower_mem_access_bit_sizes: Fix write-mask-constrained 3-byte stores as atomics", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "c70d94a889709d181e9569d4089f2d017b5684fc", "notes": null diff --git a/src/compiler/nir/nir_lower_mem_access_bit_sizes.c b/src/compiler/nir/nir_lower_mem_access_bit_sizes.c index 6d6d38f329b..c0b693a8b56 100644 --- a/src/compiler/nir/nir_lower_mem_access_bit_sizes.c +++ b/src/compiler/nir/nir_lower_mem_access_bit_sizes.c @@ -317,26 +317,26 @@ lower_mem_store(nir_builder *b, nir_intrinsic_instr *intrin, chunk_bytes = MIN2(max_chunk_bytes, requested_bytes - max_pad); unsigned chunk_bits = chunk_bytes * 8; - nir_def *chunk_value = value; - /* The one special case where nir_extract_bits cannot get a scalar by asking for - * 1 component of chunk_bits. - */ + nir_def *data; if (chunk_bits == 24) { - chunk_value = nir_pad_vec4(b, chunk_value); - chunk_bits = 32; + /* This is a bit of a special case because we don't have 24-bit integers */ + data = nir_extract_bits(b, &value, 1, chunk_start * 8, 3, 8); + data = nir_pack_bits(b, nir_pad_vector_imm_int(b, data, 0, 4), 32); + } else { + data = nir_extract_bits(b, &value, 1, chunk_start * 8, 1, chunk_bits); + data = nir_u2u32(b, data); } - nir_def *data = nir_u2u32(b, - nir_extract_bits(b, &chunk_value, 1, chunk_start * 8, - 1, chunk_bits)); nir_def *iand_mask = nir_imm_int(b, (1 << chunk_bits) - 1); if (chunk_align < requested.align) { nir_def *shift = nir_u2u32(b, nir_imul_imm(b, pad, 8)); data = nir_ishl(b, data, shift); - iand_mask = nir_inot(b, nir_ishl(b, iand_mask, shift)); + iand_mask = nir_ishl(b, iand_mask, shift); } + iand_mask = nir_inot(b, iand_mask); + switch (intrin->intrinsic) { case nir_intrinsic_store_ssbo: nir_ssbo_atomic(b, 32, intrin->src[1].ssa, chunk_offset, iand_mask, From 73b6b7497edb0ec28bf2fb635dab1f76585a1957 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Wed, 27 Sep 2023 14:40:12 +0200 Subject: [PATCH 118/356] gallium/auxiliary/vl: Fix coordinates clamp in compute shaders Fixes: a6a43963ed0 ("gallium/auxiliary/vl: Clamp coordinates in compute shaders") Acked-by: Thong Thai Part-of: (cherry picked from commit ef0546152fd1aed1d4175097c6361860c42f459e) --- .pick_status.json | 2 +- src/gallium/auxiliary/vl/vl_compositor_cs.c | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 86e4306d5b9..c7bd49231af 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -424,7 +424,7 @@ "description": "gallium/auxiliary/vl: Fix coordinates clamp in compute shaders", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a6a43963ed0648649d70bfe7998971c1927d9b51", "notes": null diff --git a/src/gallium/auxiliary/vl/vl_compositor_cs.c b/src/gallium/auxiliary/vl/vl_compositor_cs.c index 3f4f0cee79c..35755081f26 100644 --- a/src/gallium/auxiliary/vl/vl_compositor_cs.c +++ b/src/gallium/auxiliary/vl/vl_compositor_cs.c @@ -956,14 +956,10 @@ draw_layers(struct vl_compositor *c, drawn.translate_y = layer->viewport.translate[1]; drawn.sampler0_w = (float)layer->sampler_views[0]->texture->width0; drawn.sampler0_h = (float)layer->sampler_views[0]->texture->height0; - drawn.clamp_x = (float)samplers[0]->texture->width0 * - (layer->src.br.x - layer->src.tl.x) - 0.5; - drawn.clamp_y = (float)samplers[0]->texture->height0 * - (layer->src.br.y - layer->src.tl.y) - 0.5; - drawn.chroma_clamp_x = (float)sampler1->texture->width0 * - (layer->src.br.x - layer->src.tl.x) - 0.5; - drawn.chroma_clamp_y = (float)sampler1->texture->height0 * - (layer->src.br.y - layer->src.tl.y) - 0.5; + drawn.clamp_x = (float)samplers[0]->texture->width0 * layer->src.br.x - 0.5; + drawn.clamp_y = (float)samplers[0]->texture->height0 * layer->src.br.y - 0.5; + drawn.chroma_clamp_x = (float)sampler1->texture->width0 * layer->src.br.x - 0.5; + drawn.chroma_clamp_y = (float)sampler1->texture->height0 * layer->src.br.y - 0.5; drawn.chroma_offset_x = chroma_offset_x(s->chroma_location); drawn.chroma_offset_y = chroma_offset_y(s->chroma_location); set_viewport(s, &drawn, samplers); From b1833834ddbe5e1956d7cb646677b22cc252fd08 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Wed, 27 Sep 2023 16:17:51 +0200 Subject: [PATCH 119/356] gallium/auxiliary: Fix coordinates clamp in util_compute_blit Fixes: 7c8e1596d6e ("gallium/auxiliary: Fix util_compute_blit half texel offset with scaling") Acked-by: Thong Thai Part-of: (cherry picked from commit e9091b1f5c2ef50aba36f5e71fb6cf88ffc31cbb) --- .pick_status.json | 2 +- src/gallium/auxiliary/util/u_compute.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index c7bd49231af..69ce7230184 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -414,7 +414,7 @@ "description": "gallium/auxiliary: Fix coordinates clamp in util_compute_blit", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "7c8e1596d6ef12c27ffe713b173023b1e38e52cb", "notes": null diff --git a/src/gallium/auxiliary/util/u_compute.c b/src/gallium/auxiliary/util/u_compute.c index df00df52585..518f628d55d 100644 --- a/src/gallium/auxiliary/util/u_compute.c +++ b/src/gallium/auxiliary/util/u_compute.c @@ -106,8 +106,10 @@ void util_compute_blit(struct pipe_context *ctx, struct pipe_blit_info *blit_inf blit_info->dst.box.y, blit_info->dst.box.z, 0, - u_bitcast_f2u((blit_info->src.box.width - 0.5) / (float)src->width0), - u_bitcast_f2u((blit_info->src.box.height - 0.5) / (float)src->height0), + u_bitcast_f2u((blit_info->src.box.x + blit_info->src.box.width - 0.5) / + (float)src->width0), + u_bitcast_f2u((blit_info->src.box.y + blit_info->src.box.height - 0.5) / + (float)src->height0), 0, 0}; From 0680995b18adceee47cd2985eabfb4cfce8c5ff7 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Thu, 28 Sep 2023 17:23:59 +0200 Subject: [PATCH 120/356] gallium/auxiliary/vl: Scale dst_rect x0/y0 when rendering chroma plane This fixes incorrect chroma plane position when x0/y0 is not zero. Fixes: 001358a97cc ("vl/compositor: add a new function for YUV deint") Acked-by: Thong Thai Part-of: (cherry picked from commit 35b0ccd8554e8b46833cb5b57be91e6201754a4f) --- .pick_status.json | 2 +- src/gallium/auxiliary/vl/vl_compositor.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 69ce7230184..8493a1d145c 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -404,7 +404,7 @@ "description": "gallium/auxiliary/vl: Scale dst_rect x0/y0 when rendering chroma plane", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "001358a97cce456d948bb57842ca099a73c10b06", "notes": null diff --git a/src/gallium/auxiliary/vl/vl_compositor.c b/src/gallium/auxiliary/vl/vl_compositor.c index 91a10a678c4..4d791f1afb6 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.c +++ b/src/gallium/auxiliary/vl/vl_compositor.c @@ -691,6 +691,8 @@ vl_compositor_yuv_deint_full(struct vl_compositor_state *s, vl_compositor_render(s, c, dst_surfaces[0], NULL, false); if (dst_rect) { + dst_rect->x0 /= 2; + dst_rect->y0 /= 2; dst_rect->x1 /= 2; dst_rect->y1 /= 2; } @@ -727,6 +729,8 @@ vl_compositor_convert_rgb_to_yuv(struct vl_compositor_state *s, vl_compositor_render(s, c, dst_surfaces[0], NULL, false); if (dst_rect) { + dst_rect->x0 /= 2; + dst_rect->y0 /= 2; dst_rect->x1 /= 2; dst_rect->y1 /= 2; } From dbb2f6ed669b5effbecc82d920924a61033bbfb5 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Tue, 14 Nov 2023 13:29:47 -0500 Subject: [PATCH 121/356] r600: Add missing dep on git_sha1.h Bug: https://bugs.gentoo.org/917116 Fixes: 3ab51c7ebd1 ("r600: Add callbacks for get_driver_uuid and get_device_uuid") Part-of: (cherry picked from commit b66b299edac109d2bbfdb886f01ce5945f362289) --- .pick_status.json | 2 +- src/gallium/drivers/r600/meson.build | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 8493a1d145c..fde4e9acd3d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -184,7 +184,7 @@ "description": "r600: Add missing dep on git_sha1.h", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "3ab51c7ebd1e7a65bd928b6142423123c7552927", "notes": null diff --git a/src/gallium/drivers/r600/meson.build b/src/gallium/drivers/r600/meson.build index ae2081a2f8e..3555ea2edb0 100644 --- a/src/gallium/drivers/r600/meson.build +++ b/src/gallium/drivers/r600/meson.build @@ -174,7 +174,7 @@ endif libr600 = static_library( 'r600', - [files_r600, egd_tables_h], + [files_r600, egd_tables_h, sha1_h], c_args : [r600_c_args, '-Wstrict-overflow=0'], cpp_args: r600_cpp_args, gnu_symbol_visibility : 'hidden', From 0960a0c5dd4d4520369a8ea26b56b7ce717ab745 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 14 Nov 2023 08:35:58 +0100 Subject: [PATCH 122/356] radv: fix registering queues for RGP with compute only This crashes if the graphics queue isn't created. Fixes: 930e77e9036 ("radv/sqtt: add support for queue info") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10136 Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit 627d59344381907bd13eeb48a6737bd2561e64d8) --- .pick_status.json | 2 +- src/amd/vulkan/radv_sqtt.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index fde4e9acd3d..33f11b60df2 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -174,7 +174,7 @@ "description": "radv: fix registering queues for RGP with compute only", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "930e77e9036a75196e080cb4b780c47104bf0ef2", "notes": null diff --git a/src/amd/vulkan/radv_sqtt.c b/src/amd/vulkan/radv_sqtt.c index 6c3fa93861a..979b9f9d845 100644 --- a/src/amd/vulkan/radv_sqtt.c +++ b/src/amd/vulkan/radv_sqtt.c @@ -579,7 +579,9 @@ radv_unregister_queue(struct radv_device *device, struct radv_queue *queue) static void radv_register_queues(struct radv_device *device, struct ac_sqtt *sqtt) { - radv_register_queue(device, &device->queues[RADV_QUEUE_GENERAL][0]); + if (device->queue_count[RADV_QUEUE_GENERAL] == 1) + radv_register_queue(device, &device->queues[RADV_QUEUE_GENERAL][0]); + for (uint32_t i = 0; i < device->queue_count[RADV_QUEUE_COMPUTE]; i++) radv_register_queue(device, &device->queues[RADV_QUEUE_COMPUTE][i]); } @@ -587,7 +589,9 @@ radv_register_queues(struct radv_device *device, struct ac_sqtt *sqtt) static void radv_unregister_queues(struct radv_device *device, struct ac_sqtt *sqtt) { - radv_unregister_queue(device, &device->queues[RADV_QUEUE_GENERAL][0]); + if (device->queue_count[RADV_QUEUE_GENERAL] == 1) + radv_unregister_queue(device, &device->queues[RADV_QUEUE_GENERAL][0]); + for (uint32_t i = 0; i < device->queue_count[RADV_QUEUE_COMPUTE]; i++) radv_unregister_queue(device, &device->queues[RADV_QUEUE_COMPUTE][i]); } From a600a58f897a362657fb8d638d0a3c53feb0b72e Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 13 Nov 2023 18:35:29 +0100 Subject: [PATCH 123/356] radv: set radv_zero_vram=true for Unreal Engine 4/5 Unreal Engine seems to rely on uninitialized memory and RADV_DEBUG=zerovram fixes a bunch of issues. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9025 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9380 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9026 Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit bb92c34c2859c2f5b42c9b6ba4f5603d79b72d33) --- .pick_status.json | 2 +- src/util/00-radv-defaults.conf | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 33f11b60df2..90205531e6b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -164,7 +164,7 @@ "description": "radv: set radv_zero_vram=true for Unreal Engine 4/5", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/util/00-radv-defaults.conf b/src/util/00-radv-defaults.conf index df89a791df0..5678c5e011f 100644 --- a/src/util/00-radv-defaults.conf +++ b/src/util/00-radv-defaults.conf @@ -59,6 +59,7 @@ Application bugs worked around in this file: From 178c046b9e47c333c86070ffe8e705d820b672e6 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sun, 12 Nov 2023 19:40:32 +0100 Subject: [PATCH 124/356] aco: add missing scc def for SALU quad broadcast Cc: mesa-stable Reviewed-by: Rhys Perry Part-of: (cherry picked from commit 509ce19643f51555922947e9b8b5f12d6567fb5b) --- .pick_status.json | 2 +- src/amd/compiler/aco_instruction_selection.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 90205531e6b..fd110a81f39 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -94,7 +94,7 @@ "description": "aco: add missing scc def for SALU quad broadcast", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 0f7fd5b3c27..561f3cc02e0 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -8640,7 +8640,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr) src = bld.sop2(Builder::s_and, bld.def(bld.lm), bld.def(s1, scc), src, Operand(exec, bld.lm)); src = bld.sop2(Builder::s_and, bld.def(bld.lm), bld.def(s1, scc), mask_tmp, src); - bld.sop1(Builder::s_wqm, Definition(dst), src); + bld.sop1(Builder::s_wqm, Definition(dst), bld.def(s1, scc), src); } else if (instr->def.bit_size <= 32 || bool_use_valu) { unsigned excess_bytes = bool_use_valu ? 0 : 4 - instr->def.bit_size / 8; Definition def = (excess_bytes || bool_use_valu) ? bld.def(v1) : Definition(dst); From f12636cecf83acdf87cab707bd256e50fa128a99 Mon Sep 17 00:00:00 2001 From: David Heidelberg Date: Tue, 14 Nov 2023 23:02:54 +0100 Subject: [PATCH 125/356] ci/traces: drop the freedoom-phase2-gl-high.trace See https://gitlab.freedesktop.org/mesa/mesa/-/issues/8080#note_2154467 Fixes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8080 Cc: mesa-stable Signed-off-by: David Heidelberg Part-of: (cherry picked from commit 1eff68dd2a6d9fc8acd53078d609e92f693c2556) --- .pick_status.json | 2 +- src/broadcom/ci/traces-broadcom.yml | 5 ----- src/freedreno/ci/traces-freedreno.yml | 21 ------------------- .../drivers/crocus/ci/traces-crocus.yml | 7 ------- .../drivers/llvmpipe/ci/traces-llvmpipe.yml | 3 --- src/gallium/drivers/zink/ci/traces-zink.yml | 5 ----- src/intel/ci/traces-iris.yml | 13 ------------ src/panfrost/ci/traces-panfrost.yml | 5 ----- 8 files changed, 1 insertion(+), 60 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index fd110a81f39..9804b548c43 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -44,7 +44,7 @@ "description": "ci/traces: drop the freedoom-phase2-gl-high.trace", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/broadcom/ci/traces-broadcom.yml b/src/broadcom/ci/traces-broadcom.yml index 4808e2d3f82..0b1fa9a9628 100644 --- a/src/broadcom/ci/traces-broadcom.yml +++ b/src/broadcom/ci/traces-broadcom.yml @@ -27,11 +27,6 @@ traces: label: [unsupported] text: needs GL 4.1 - freedoom/freedoom-phase2-gl-high.trace: - broadcom-rpi4: - label: [unsupported] - text: needs GL 4.6 - glxgears/glxgears-2-v2.trace: broadcom-rpi4: label: [skip, flakes] diff --git a/src/freedreno/ci/traces-freedreno.yml b/src/freedreno/ci/traces-freedreno.yml index a870127b04f..2aca3af1dd7 100644 --- a/src/freedreno/ci/traces-freedreno.yml +++ b/src/freedreno/ci/traces-freedreno.yml @@ -704,27 +704,6 @@ traces: label: [skip, flakes] text: Inconsistent rendering, but looks good. - freedoom/freedoom-phase2-gl-high.trace: - freedreno-a306: - label: [unsupported] - freedreno-a530: - label: [unsupported] - text: needs GL 4.6 - freedreno-a618: - checksum: a2dbcd27c404a1bb0f7d60476d93d22c - freedreno-a630: - checksum: a2dbcd27c404a1bb0f7d60476d93d22c - zink-a618: - label: [crash] - text: |- - ../src/gallium/drivers/zink/zink_context.c:541: update_descriptor_state_ubo: - Assertion `ctx->di.ubos[shader][slot].range <= screen->info.props.limits.maxUniformBufferRange' failed. - zink-a630: - label: [crash] - text: |- - ../src/gallium/drivers/zink/zink_context.c:541: update_descriptor_state_ubo: - Assertion `ctx->di.ubos[shader][slot].range <= screen->info.props.limits.maxUniformBufferRange' failed. - unvanquished/unvanquished-lowest.trace: freedreno-a306: label: [skip] diff --git a/src/gallium/drivers/crocus/ci/traces-crocus.yml b/src/gallium/drivers/crocus/ci/traces-crocus.yml index 4da4f03293d..fac535e6009 100644 --- a/src/gallium/drivers/crocus/ci/traces-crocus.yml +++ b/src/gallium/drivers/crocus/ci/traces-crocus.yml @@ -164,13 +164,6 @@ traces: label: [unsupported] crocus-hsw: checksum: c07530897dc5a6882cbf35737334336b - freedoom/freedoom-phase2-gl-high.trace: - crocus-g41: - label: [unsupported] - crocus-hsw: - label: [skip, crash] - checksum: 997ec70d945fdbda8a98efe831000338 - text: "abort() called" unvanquished/unvanquished-lowest.trace: crocus-g41: label: [unsupported] diff --git a/src/gallium/drivers/llvmpipe/ci/traces-llvmpipe.yml b/src/gallium/drivers/llvmpipe/ci/traces-llvmpipe.yml index 0d4277a7c4a..fd85705189a 100644 --- a/src/gallium/drivers/llvmpipe/ci/traces-llvmpipe.yml +++ b/src/gallium/drivers/llvmpipe/ci/traces-llvmpipe.yml @@ -153,9 +153,6 @@ traces: gl-vmware-llvmpipe: label: [skip, broken] text: missing background, error Too many compute shader storage blocks (9/8) - freedoom/freedoom-phase2-gl-high.trace: - gl-vmware-llvmpipe: - label: [unsupported] unvanquished/unvanquished-lowest.trace: gl-vmware-llvmpipe: label: [unsupported] diff --git a/src/gallium/drivers/zink/ci/traces-zink.yml b/src/gallium/drivers/zink/ci/traces-zink.yml index 889020419ed..a94101a6230 100644 --- a/src/gallium/drivers/zink/ci/traces-zink.yml +++ b/src/gallium/drivers/zink/ci/traces-zink.yml @@ -22,11 +22,6 @@ traces: label: [skip, broken, flakes] checksum: 9b5090a236350f04cb2a61c5f0c0fe0f text: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8986 - freedoom/freedoom-phase2-gl-high.trace: - gl-zink-anv-tgl: - label: [skip] - text: "Fails on CI as well as when run locally" - checksum: 288b762ac80ed76e18f848649a618be1 glxgears/glxgears-2-v2.trace: gl-zink-anv-tgl: checksum: f53ac20e17da91c0359c31f2fa3f401e diff --git a/src/intel/ci/traces-iris.yml b/src/intel/ci/traces-iris.yml index 59cb3403cc5..7bc335c1738 100644 --- a/src/intel/ci/traces-iris.yml +++ b/src/intel/ci/traces-iris.yml @@ -514,19 +514,6 @@ traces: checksum: f11aa01f5ef3a563567e2a85998c418e gl-intel-cml: checksum: f11aa01f5ef3a563567e2a85998c418e - freedoom/freedoom-phase2-gl-high.trace: - gl-intel-apl: - checksum: b9951727c5c869d5ca510d83a557711b - gl-intel-glx: - checksum: b9951727c5c869d5ca510d83a557711b - gl-intel-amly: - checksum: b9951727c5c869d5ca510d83a557711b - gl-intel-kbl: - checksum: b9951727c5c869d5ca510d83a557711b - gl-intel-whl: - checksum: b9951727c5c869d5ca510d83a557711b - gl-intel-cml: - checksum: b9951727c5c869d5ca510d83a557711b unvanquished/unvanquished-lowest.trace: gl-intel-apl: checksum: 884096b6dd40e2f500d0837501287fac diff --git a/src/panfrost/ci/traces-panfrost.yml b/src/panfrost/ci/traces-panfrost.yml index 02125b98cb6..c14f25d6354 100644 --- a/src/panfrost/ci/traces-panfrost.yml +++ b/src/panfrost/ci/traces-panfrost.yml @@ -122,11 +122,6 @@ traces: label: [unsupported] gl-panfrost-t860: label: [unsupported] - freedoom/freedoom-phase2-gl-high.trace: - gl-panfrost-t760: - label: [unsupported] - gl-panfrost-t860: - label: [unsupported] unvanquished/unvanquished-lowest.trace: gl-panfrost-t760: label: [unsupported] From 313457b66ecb073a5f098eb546ca4c858c47c791 Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Sun, 12 Nov 2023 16:10:24 +0100 Subject: [PATCH 126/356] radv/sqtt: Fix tracing acceleration structure commands ApiRayTracingSeparateCompiled can only used by trace commands. Fixes: bfb55d0 ("ac/sqtt,radv/sqtt: Add and use marker for separate RT compilation") Reviewed-by: Friedrich Vock Reviewed-by: Samuel Pitoiset Part-of: (cherry picked from commit b6e09dd5212503ab6369ba7fee9033c416347243) --- .pick_status.json | 2 +- src/amd/vulkan/layers/radv_sqtt_layer.c | 25 +++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 9804b548c43..bf3e7175bce 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -24,7 +24,7 @@ "description": "radv/sqtt: Fix tracing acceleration structure commands", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "bfb55d026675779fa36aa86be578625a3ce2b3e0", "notes": null diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c b/src/amd/vulkan/layers/radv_sqtt_layer.c index 7584d624839..be64c6cd6d3 100644 --- a/src/amd/vulkan/layers/radv_sqtt_layer.c +++ b/src/amd/vulkan/layers/radv_sqtt_layer.c @@ -767,10 +767,10 @@ sqtt_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPoo flags); } -#define EVENT_RT_MARKER(cmd_name, ...) \ - EVENT_MARKER_BASE(cmd_name, Dispatch, cmd_name | ApiRayTracingSeparateCompiled, __VA_ARGS__); +#define EVENT_RT_MARKER(cmd_name, flags, ...) EVENT_MARKER_BASE(cmd_name, Dispatch, cmd_name | flags, __VA_ARGS__); -#define EVENT_RT_MARKER_ALIAS(cmd_name, event_name, ...) EVENT_MARKER_BASE(cmd_name, Dispatch, event_name, __VA_ARGS__); +#define EVENT_RT_MARKER_ALIAS(cmd_name, event_name, flags, ...) \ + EVENT_MARKER_BASE(cmd_name, Dispatch, event_name | flags, __VA_ARGS__); VKAPI_ATTR void VKAPI_CALL sqtt_CmdTraceRaysKHR(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR *pRaygenShaderBindingTable, @@ -779,8 +779,8 @@ sqtt_CmdTraceRaysKHR(VkCommandBuffer commandBuffer, const VkStridedDeviceAddress const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth) { - EVENT_RT_MARKER(TraceRaysKHR, commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, - pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth); + EVENT_RT_MARKER(TraceRaysKHR, ApiRayTracingSeparateCompiled, commandBuffer, pRaygenShaderBindingTable, + pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth); } VKAPI_ATTR void VKAPI_CALL @@ -791,14 +791,15 @@ sqtt_CmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress) { - EVENT_RT_MARKER(TraceRaysIndirectKHR, commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, - pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress); + EVENT_RT_MARKER(TraceRaysIndirectKHR, ApiRayTracingSeparateCompiled, commandBuffer, pRaygenShaderBindingTable, + pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress); } VKAPI_ATTR void VKAPI_CALL sqtt_CmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress) { - EVENT_RT_MARKER_ALIAS(TraceRaysIndirect2KHR, TraceRaysIndirectKHR, commandBuffer, indirectDeviceAddress); + EVENT_RT_MARKER_ALIAS(TraceRaysIndirect2KHR, TraceRaysIndirectKHR, ApiRayTracingSeparateCompiled, commandBuffer, + indirectDeviceAddress); } VKAPI_ATTR void VKAPI_CALL @@ -806,27 +807,27 @@ sqtt_CmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer, uint32_t i const VkAccelerationStructureBuildGeometryInfoKHR *pInfos, const VkAccelerationStructureBuildRangeInfoKHR *const *ppBuildRangeInfos) { - EVENT_RT_MARKER(BuildAccelerationStructuresKHR, commandBuffer, infoCount, pInfos, ppBuildRangeInfos); + EVENT_RT_MARKER(BuildAccelerationStructuresKHR, 0, commandBuffer, infoCount, pInfos, ppBuildRangeInfos); } VKAPI_ATTR void VKAPI_CALL sqtt_CmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR *pInfo) { - EVENT_RT_MARKER(CopyAccelerationStructureKHR, commandBuffer, pInfo); + EVENT_RT_MARKER(CopyAccelerationStructureKHR, 0, commandBuffer, pInfo); } VKAPI_ATTR void VKAPI_CALL sqtt_CmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR *pInfo) { - EVENT_RT_MARKER(CopyAccelerationStructureToMemoryKHR, commandBuffer, pInfo); + EVENT_RT_MARKER(CopyAccelerationStructureToMemoryKHR, 0, commandBuffer, pInfo); } VKAPI_ATTR void VKAPI_CALL sqtt_CmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR *pInfo) { - EVENT_RT_MARKER(CopyMemoryToAccelerationStructureKHR, commandBuffer, pInfo); + EVENT_RT_MARKER(CopyMemoryToAccelerationStructureKHR, 0, commandBuffer, pInfo); } VKAPI_ATTR void VKAPI_CALL From 4611aef8a85d5ef815ab5d3bdaa1786573876c2f Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 15 Nov 2023 21:36:49 +0000 Subject: [PATCH 127/356] VERSION: bump for 23.3.0-rc4 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 6a1f4f7ca05..4187e018954 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -23.3.0-rc3 +23.3.0-rc4 From 4c0233497b066dd861f87da3d4c807bd91cbf88b Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Sat, 18 Nov 2023 21:10:57 +0000 Subject: [PATCH 128/356] .pick_status.json: Update to f05688aa3299a27430119b27e45181a6f415bff8 --- .pick_status.json | 1570 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1570 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index bf3e7175bce..958abc7d99c 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,1574 @@ [ + { + "sha": "f05688aa3299a27430119b27e45181a6f415bff8", + "description": "util: Provide DRM_DEVICE_GET_PCI_REVISION definition", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5022a26b50ef912835049a32ac3904ea77656e43", + "description": "util: Include stdint.h in libdrm.h", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "e05abb1345530433681e2a4965588e4e2f51380b", + "notes": null + }, + { + "sha": "d487d9d05baa731dbf2494bea6f1b56c92a5ddeb", + "description": "radv: Use SDMA version instead of gfx_level where possible.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "24022d5680c33dee0132870c3176f50ea1ac2c30", + "description": "radv: Use GPU info for determining SDMA metadata support.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fd3cdf28ace83c95efad0d06430eb71f28ddcf32", + "description": "ac: Add sdma_version enum and use it for SDMA features.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d09ad16fd4a0596fb6c97cffaf0fdf031053b5a4", + "description": "ac: Remove CIK prefix from SDMA opcodes.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6413b860c4bc7ce748017b98d680629f783ceadc", + "description": "ac: Rename SDMA max copy size macros to reflect SDMA version.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "be9953ac2ca9ee39bbd93edb468dd7cfaa4824eb", + "description": "gallium: Avoid empty version scripts in pipe-loader", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "667de678a064da449969f2fa3da4aff850d91cf4", + "notes": null + }, + { + "sha": "0f978c34410283558afe9de5dab007f63a763c5e", + "description": "egl: ensure a render node is passed to _eglFindDevice()", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "2be404f5571ada32d3b2e9cfe9b769846f27d68f", + "notes": null + }, + { + "sha": "9b70096f5e9ab7be23abc9154c3fb83b710ccd6b", + "description": "egl: move dri2_setup_device() after dri2_setup_extensions()", + "nominated": true, + "nomination_type": 4, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b4ec0b51ce47d87d21609444dddd50c91968f26d", + "description": "egl: extract EGLDevice setup in dedicated function", + "nominated": true, + "nomination_type": 4, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dddab9fa778d85f9b2f11eeec2b635b02b46e54f", + "description": "intel/xe: Correct DRM_XE_EXEC_QUEUE_SET_PROPERTY's ioctl", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "275afe73f749790918a7acf1d20ec430fbb90a52", + "description": "nvk: Implement VK_KHR_fragment_shader_barycentric", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7fb91f22d5d261afbabfc4c17168da204e28fc7f", + "description": "nak: Add more bits discovered in SPH", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "60544cae07d8d7c32093f5984615b18cbf89b219", + "description": "nir: Add a ldtram_nv intrinsic", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "62006c2f96a158500f636d470bfa313837897d4b", + "description": "nvk: Advertise the rest of the subgroup ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1bc865ca8af1282a1a734686ef6ee469976e723c", + "description": "nak: Implement quad ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cca40086c6a43db1ad281d9b1e5f92f10f26acca", + "description": "nak: Lower scan/reduce in NIR", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "11bcce94615fe72a6e0ab76dc72db568762879e6", + "description": "nak: Use c == 0x0 for shuffle_up", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8c79d616bd67f1e73e0a8c2c529dfe43f40be166", + "description": "nak: Add builder helpers for a few ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c874db93817e66584d5e7c40807849f88939097d", + "description": "nak: Add the predicate destination to OpShfl", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3cc389f3da463974d6d0e00b326da5986fb06fa8", + "description": "nvk: Set the right API version in the ICD json files", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f011410c1c480829dde58f285023a3768686c9ee", + "description": "egl/dri2: increase NUM_ATTRIBS to fit all the attributes", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4dd287308f86af95d0bb6001592aeeb9d3926750", + "description": "radeonsi: \"get_blitter_vs\" shader in nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4a3cebaffc167c07d5a5a34e349048aa3d1057fb", + "description": "radeonsi: \"create_fmask_expand_cs\" shader in nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6584088cd5e6fe2538428b2ae13cbafc62604de2", + "description": "radeonsi: \"create_dma_compute\" shader in nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d54c140eb65ecf49d969c93ebbe8519c205a17c0", + "description": "venus: disable unsupported ExtendedDynamicState3Features", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "49e5b583154448bc9cf94022642a8c1001a8064e", + "notes": null + }, + { + "sha": "52ee4cf2292b5cf939e35507ae548e6485c2da8f", + "description": "nir/builder: Teach nir_pack_bits and nir_unpack_bits about 32_4x8", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "25743209c4ee17aef3591461496fe64c1233657c", + "description": "nir/lower_packing: Add lowering for nir_op_unpack_32_4x8", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7a1a9fb287384a7a130fcb63b029fe383dc17a6f", + "description": "nir/lower_packing: Don't generate nir_pack_32_4x8_split on drivers that can't handle it", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a76cb87602fc318e964f982cdee319b1b21f155c", + "description": "glsl: Use unsigned instead of enum type in ir_variable_data", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cb019ff9266b5985dd8d467f724d3310acd03ab6", + "description": "d3d12: GL4.6", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b0ba67144619613799ccf25fca95ccb55b825575", + "description": "d3d12: Enable some 4.6 extensions that were already implemented", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "eac2ce6e3be997bffe8b9f18dc792edfc716740f", + "description": "d3d12: Fixes for QBO shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "df4fc66649311adced0544d9ff025921157239a0", + "description": "nir: Add a flag to opt_if to prevent fighting with splitting 64bit phis", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bafc27583cf7c2d136fa05764e5e2145fedbc9cc", + "description": "venus: Make sure that guest allocated blobs from hostmem are mappable", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "892988956328ffdc1cc0cf181c2cd3b6394408e7", + "description": "venus: Tighten the conditions for guest_vram device memory alloc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "816f66cdfda8467fb22f74fcc280029c46657b9c", + "description": "venus: Use vk_object_id as blob_id for guest_vram device memory alloc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c853e259ab3070698c1c45dc6865d1782902a471", + "description": "anv+zink/ci: document new sparse failures", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "563678f310e51b28355f35d0c9763f39616d96e8", + "description": "anv/sparse: don't support YCBCR 2x1 compressed formats", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a0559768dbf8dbb03c87bc01bfaacbfe882ab03d", + "description": "anv: enable sparse by default on i915.ko", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fda5163f34a1ca8f3c65633497450b7d6443c165", + "description": "anv/trtt: properly handle the lifetime of TR-TT batch BOs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0f218362721b0e2a59f8c1102406dbe8334678af", + "description": "anv/trtt: add support for queue->sync to the TR-TT batches", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1534ee46b8d194b6214669ce31855b1445115745", + "description": "anv/trtt: add struct anv_trtt_batch_bo and pass it around", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "18bd00c024fc0f11a36da5b025b89a26ebd635e1", + "description": "anv/trtt: don't wait/signal syncobjs using the CPU anymore", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2206a0eb197438b6041603f023ece06236f49cd", + "description": "anv/xe: allow passing extra syncs to xe_exec_process_syncs()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4b435d69834d766d7acf5f0d500cb6ed7b6bf5e8", + "description": "anv/i915: extract setup_execbuf_fence_params()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d797d9233dff75774780a52dc50d59135097d695", + "description": "anv/sparse: process image binds before opaque image binds", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "040063c156c57d8e60b9b02ee5744578a2e81160", + "description": "anv/sparse: move waiting/signaling syncobjs to the backends", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cbf09b4254d6143f60e697b2a374b9e6428a6447", + "description": "anv/trtt: use 'queue' from anv_sparse_submission in the backend", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f6d28bec6d168e46becf2c0eca9e362112ed59b8", + "description": "anv/sparse: add 'queue' to anv_sparse_submission", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "576275907a1a1e20dd2318a00c9d591fb67f9ed1", + "description": "anv/sparse: pass anv_sparse_submission to the backend functions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6c7753ee0becf376ab1d816217c9e906eb26fcdf", + "description": "anv/sparse: join all submissions into a single anv_sparse_bind() call", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "11e9a700f615d0473856de4f4fa1aabc64aa0005", + "description": "anv/sparse: drop anv_sparse_binding_data from dump_anv_vm_bind()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b4fef9a7452531920dc1a49ad2e76df7ebf4fa42", + "description": "anv/trtt: also join the L3/L2 writes into a single MI_STORE_DATA_IMM", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "31f720fd6e3f6f5a56597b952cd82696f3b26837", + "description": "anv/trtt: join L1 writes into a single MI_STORE_DATA_IMM when possible", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ccb30ae0cd63edb4357f97d2897dc961f4d997b9", + "description": "anv/sparse: fix limits.sparseAddressSpaceSize when using vm_bind", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "04bfe828db8187bdda755d8c55ec2f8fbf3ae298", + "description": "anv/sparse: allow sparse resouces to use TR-TT as its backend", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a2797674241c1be0130e7e187f0148a792e02b56", + "description": "ac/gpu_info: update conformant_trunc_coord comment", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9e9eb87dd3a2ffe782ac85998a69623f59306caf", + "description": "radv: enable radv_disable_trunc_coord for vkd3d-proton/DXVK", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4d2a3b95730c4781234096778043f987234b6a4c", + "description": "radv: add radv_disable_trunc_coord option", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b18ca83facfeaa17fb271a61a0aaf133e595de1", + "description": "amd/ci: avoid re-running all the test jobs when changing the expectations for only one of them", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0f0f6c622713dd9b93a055530b320db13239ad87", + "description": "nir/validate: Specialize if source validation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "88d0fd03d67e34feecbbe114af1c8d264a535da8", + "description": "nir/validate: Split out validate_sized_src", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bfcc32395482b7f5ec30ea466c34853db7f57866", + "description": "nir/validate: Inline validate_ssa_src", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bfdb2862d64a500e7bea032012a2b90f6a29ea76", + "description": "nir/validate: Drop stale todo", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9f341cefbbda843263dbc62dc6ffcf40948efb14", + "description": "nir/validate: Don't check dimensions in validate_def", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d2b1e6bed02129db06ff82604f15fff7efaaacf5", + "description": "nir/validate: Use unlikely for validate_assert", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e9d185dccf59df3b6d742eee69913bcb74590338", + "description": "nir/validate: Don't validate out-of-bounds channels", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8d5a1e5a779100d92c79ec533437874644aef82f", + "description": "nir/validate: Don't spam nir_alu_instr_channels", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "178603202959c528c28b6c18739b2335477b4e09", + "description": "nir/validate: Optimize ssa_srcs set", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6d73f62e42df5b554b9a893f338278653ff0dbdf", + "description": "nir: Simplify nir_alu_instr_channel_used definition", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "667de678a064da449969f2fa3da4aff850d91cf4", + "description": "gallium: Fix undefined symbols in version scripts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c76cb19b010436dca2cb9a2570b1ae571b31e509", + "description": "anv/blorp: move helper function about BTI changes to blorp", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b6fe35ec800d366b9a57f8d3a8ffbb6605e25c2", + "description": "anv: get rid of the duplicate pipeline fields in command buffer state", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ec3f8c0d42f9e0a742c7aeb835aa56155ebb1faa", + "description": "intel/blorp: move Wa_18019816803 out of blorp code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6e85fa8a80ea65195549958809729083763f43f4", + "description": "intel/decoder: handle 3DPRIMITIVE_EXTENDED in accumulated prints", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9689607f10bb150df0a75d189fc02b522410887f", + "description": "anv: fix dirty state tracking for 3DSTATE_PUSH_CONSTANT_ALLOC", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "50f6903bd9c472eef2af2cbf62027df3bbe0ca8a", + "notes": null + }, + { + "sha": "1257d08bcb9d7068ec24acbcf281a388e7ff015f", + "description": "anv: fix CC_VIEWPORT pointer dirty after blorp/simple-shaders", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "50f6903bd9c472eef2af2cbf62027df3bbe0ca8a", + "notes": null + }, + { + "sha": "e517b1e095cf9a3edf68cf8d7a50d3756b538628", + "description": "anv: fix missing naming for dirty bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1a1747712c40e4ba29bdad3af2b27bf0aa56e107", + "description": "anv: fix source_hash propagation with libraries", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2bb7b185d846b1f157a3ee2f2c5d06840a39f0f", + "description": "aco: delete instruction selection for boolean subgroup operations", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "88afbbba1152bd9dd8dd7058eba18540f485fbf8", + "description": "nir: optimize open-coded quadVote* directly to new nir_quad intrinsics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0d186d356ced17d002459b49a8d8eeed4f7dc01a", + "description": "amd: Enable boolean subgroup lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1dab2c5bd234706c29e5a0ca8a5bbb6f1feb3d2f", + "description": "nir/subgroups: Add option to lower Boolean subgroup reductions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "387e698bde75b3f6ae7475d3f79e161d47d4b689", + "description": "amd: Implement quad_vote intrinsics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1cfb0ae92cdb2b6b248aebd528f0c28d238f7930", + "description": "nir: Add quad vote intrinsics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "27734c52eb0c19c02d363a620f27cf2ec5c8b059", + "description": "nir/lower_subgroups: optimize reductions with cluster_size == 1", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9ac3117e3ee85f6e63fc0889cc512cc46e2b47ea", + "description": "panfrost: Emit image attribs for compute in panfrost_update_shader_state()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3db963a13592c5b215bb776e0365d4c0d70d5286", + "description": "panfrost: Emit attribs in panfrost_update_state_3d() on bifrost/midgard", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ac486a0115e7b5775d8e78d9dc78f51112ee9a1e", + "description": "panfrost: Kill unused panfrost_batch::polygon_list field", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ed471a339543072e0683308ac1ee1a4faad41fb", + "description": "panfrost: Flag the right shader when updating images", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "fab1fabb4f0b807b4a9fb1fb5d7180fb8d8e3a45", + "notes": null + }, + { + "sha": "1d4fa05b786dd31e765d51c70e4c00e06690450c", + "description": "pan/decode: Fix the pan_unpack() call for JUMP instruction unpacking", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "238f9a4498a5d7bde6c13a3b75fcd5f6b605a3ab", + "description": "pan/decode: Make CSF decoding more robust to NULL pointers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7dd610f9088956e151ea2aa22ec3d35c9051f2ad", + "description": "pan/decode: Print the resource table label", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "408b3f3cedec946e4578a60a460db00d134c09bf", + "description": "pan/genxml: Fix 'Shader Program' descriptor definition on v9 and v10", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "790d4422b2b4ec5f5e8025e4cf06ccfca3c767de", + "description": "pan/bo: Make sure we catch refcnt underflows", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "46d2748a93d0d6274051490c97e9859c48cbf81a", + "description": "panfrost: Fix format_minimum_alignment() for v6-", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6e166af59ea32e4afda60d6ded5a44730d0c71dc", + "description": "pan/genxml: Fix \"{Last,First} Heap Chunk\" field position", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c5e6edcddf230b2ba6a371d8336d9571d7a593cd", + "description": "radv: check earlier if a graphics pipeline can force VRS per vertex", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "61c3796a958990db1ef772ce27b00f7e4f8e5d29", + "description": "radv: remove redundant check when forcing VRS rates", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d679d123591da2b2fbbd3786a67de040bc532c59", + "description": "aco: remove useless nir_intrinsic_load_force_vrs_rates_amd", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d01b7b0fd43aec11c62b719a7fd37da1e861eb43", + "description": "zink/ci: add a manual job on radv-navi31", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a5e20a5c31b1af9b2b9ea42acc02d6da32ee46f4", + "description": "ci_run_n_monitor: require user to add an explicit `.*` at the end if jobs like `*-full` are wanted", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ce7cda417f7596f96a99d9b4e48c104afca8551b", + "description": "intel/dev: use libdrm.h wrapper to support builds without libdrm", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4eb4197d27aed6f5e71195a971145b2945d78330", + "description": "intel/nir/rt: fix reportIntersection() hitT handling", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "303378e1dd4119e04e0f6cb623766115a00c2eea", + "notes": null + }, + { + "sha": "6dbb5f1e07b11be0cc6ac764bf1b51feaa7fa623", + "description": "intel/fs: rerun divergence analysis prior to convert_from_ssa", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cd543c94fda257636077dc015ea113ceac1c0dc9", + "description": "nvk: Advertise VK_KHR_synchronization2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7f6d3b82c8a2120e525cef5ff69e6e5f732f85c2", + "description": "nvk: Implement bufferDeviceAddressCaptureReplay", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b4cfac64c8a98026d3698a2231c09a21bbe5a2f4", + "description": "nvk: Add a separate VMA heap for BDA capture/replay", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "78eee47471d5dd88c099e2ccda576c4f724d9e5d", + "description": "nvk: Handle VMA allocation failure", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0052f1a6fed802e2e2ecda58fea3eeb87b5e4280", + "description": "nvk: Rework error handling in nouveau_ws_bo_new() and from_dma_buf()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ce1cccea98d6257f2015b32b92d826e4ebc0a7f9", + "description": "nvk: Drop nouveau_ws_bo_new_tiled()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fbc9811241c3528b07f0e8bf6b6512a207f5d471", + "description": "vulkan/video: fix a typo", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "d46162981a78e24850dca085b2da95857c56a158", + "notes": null + }, + { + "sha": "7e00380445c8d300defb0e697705222c3de5835b", + "description": "nvk: Implement VK_KHR_pipeline_executable_properties", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3b3b157961cec37cf6846f13898acfa90f63551e", + "description": "nvk: Don't set pipeline->base.type manually", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "faadac57d5e2c9684b05d2121924fbe2e049eefb", + "description": "nak: Support dumping shader assembly as part of compile", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ae171458827bb8fceb232b3a13f61920e87a0d3a", + "description": "nak: Rewrite nir_intrinsic_load_sample_pos and implement nir_intrinsic_load_barycentric_at_sample", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8d8d93fab934ef96305ddcc78dae7d79698c7bd0", + "description": "nak: Pass offset to load_frag_w", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "618bdb85718fbd54ff68b1d1581992cd7e22269f", + "notes": null + }, + { + "sha": "1f582bad0ac3ae18de4eb3f1a94a1ecf95204bdf", + "description": "nak: Stop passing undefs to ipa_nv", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "618bdb85718fbd54ff68b1d1581992cd7e22269f", + "notes": null + }, + { + "sha": "5499e857a33411e4f992aac7bbb5dc470bb2d608", + "description": "intel/ci: fix gl/vk dependencies in hsw jobs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a08d33abff3d18746ca30a5a4d9af8b4015ff554", + "description": "docs: apply permanent redirect", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "014e51251ecd0eb6b6233295d561cb3a6a0d8be0", + "description": "intel: Sync xe_drm.h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e1cf75b411759db0c49673b89b5325fb0442d547", + "description": "zink: Remove now unused dead_framebuffers.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a71f06f2938678d89d5ed1372cda6a7b55d964d", + "description": "zink: allow software rendering only if selected", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "8cd44b8843877a2f7d559d123eb3694841f16fdc", + "notes": null + }, + { + "sha": "99fed1f9b3f7a2b66b7d1f1fef59b66dc5e5faec", + "description": "lima: drop unused lima_get_absolute_timeout()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9c62aee027d69b9ecc9260885e2a50d922c97a9e", + "description": "util/xmlconfig: drop default SYSCONFDIR & DATADIR values", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5f4253e096de76651d3bd2bbd447abb1e9cb624f", + "description": "panfrost: Support parameter queries for main planes", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d679154dc021feb1333bf7207d8a26d9db75b921", + "description": "util: Add new helpers for pipe resources", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "94e867e4a682305e28efbacafc01551172f5a11a", + "description": "zink: Fix waiting for texture commit semaphores.", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "d1456a6b0ad0dee9936caa52c9fd915c4bfaa61b", + "notes": null + }, + { + "sha": "729ce08815a8a18d03c0e3827f5e185c6050fcd4", + "description": "zink: Defer freeing sparse backing buffers.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3ee283e45557066c29fdb2000f7627d8996aeed0", + "description": "zink: Fix missing sparse buffer bind synchronization.", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "d1456a6b0ad0dee9936caa52c9fd915c4bfaa61b", + "notes": null + }, + { + "sha": "8b36d230bbe089b184cb2c23aca742a80e200e42", + "description": "anv: workaround XeSS for Satisfactory", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "83ed419cd0a55fc0ee9f5ccce8f7ac03711bbf71", + "description": "zink: fix dereference before NULL check", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "9de455bc4323d6bb484c1beed77454381e48b432", + "notes": null + }, + { + "sha": "ec82b4294432aa6da40517655a4f8af2767176a2", + "description": "radv: add a missing async compute workaround for Tonga/Iceland", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f695a9fed2b0eac39acdaca132f5fc8c43c9f7d7", + "description": "intel/compiler: use nir_lower_fp16_casts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ae30edd2a7bbeb5aad05996f4fd954314508222d", + "description": "aco: remove f16<->f64 conversions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a31c928c4f4e8f5da6a30bdc63a5229c32f345ac", + "description": "radv: use nir_lower_fp16_casts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0e1e6c244b561a2345bb2ee98863674cafd14344", + "description": "radeonsi: use nir_lower_fp16_casts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "288e9db05397822cdf22315c48b43d5a3810dc63", + "description": "nir/lower_fp16_casts: add option to split fp64 casts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fce434818a6d48a0541c7bc181ad201ae5d6503c", + "description": "nir/lower_fp16_casts: correctly round RTNE f64->f16 casts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4239e13ff658f7e4746779b8b4c4954b9437533c", + "description": "radv: fix a descriptor leak with debug names and host base descriptor set", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "904015ae855a6a3ae4d25a38e593410be60d1aa5", + "description": "ac/surface/tests: Remove duplicate variable block_size_bits", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "44eaf50a34b22dfdbdf67ae5f32e3ff0b9543504", + "notes": null + }, + { + "sha": "49e5b583154448bc9cf94022642a8c1001a8064e", + "description": "venus: enable VK_EXT_extended_dynamic_state3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "417437c71568254b5d1895c6d2d7ff3b12139529", + "description": "venus: pipeline fixes for VK_EXT_extended_dynamic_state3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e3de4a9852caeb7dec1b2e18d091deb3d49ed66d", + "description": "venus: sync protocol for VK_EXT_extended_dynamic_state3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d5efa3f204cef8c090e6e0f7107fbadf4029eb96", + "description": "docs: update calendar for 23.3.0-rc{2,3,4} and add another release candidate", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c905aeb4e496a7cb81a405d2118588b618d0ee93", + "description": "ac: be careful with stencil_offset override", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7718bad47466e9dac7c2ab05a8a4b327d2ee70d3", + "description": "radv: minor clean up to image view extent override", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2533d0a0e29cb85e98aaaf44e665e091bf36d980", + "description": "radv: fix image view extent override for astc", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "f97b449e9e332026a4b352423f71c6031e5f9e8b", + "notes": null + }, + { + "sha": "295734bf88dbff12fe8e109162590357ed11a86d", + "description": "intel/fs: fix residency handling on Xe2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0bd23d626312369938e1deb8c8adb07917fbce8e", + "description": "nak: Enable SM70 for Volta", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "01046cd6add64323a2914ddffa2277f63d92b73e", + "description": "anv/drirc: add option to disable FCV optimization", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "aedf9113c48e9c6c5eea412c604d7f348b760e63", + "description": "nak: Set \"evict first\" from ACCESS_NON_TEMPORAL", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "adc3fd4c99e541b86daa704236166a967169c6cb", + "description": "nak: Add encodings for cache eviction priorities", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "df9a95a813cfda7504ab38ce2e7ffc4fbe79c3db", + "description": "gallium/auxiliary/vl: NIR compute shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "848811f98aed4641034302773a1474fe9f78dafa", + "description": "gallium/auxiliary: NIR blit_compute_shader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "03a7cb261828b350dd9b56bd74850197ca9eba33", "description": "ac/gpu_info: Manually compute L3 size for Navi33", From 0ecb0ec428d3f8ca4df844bb096d865d047420a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Mon, 13 Nov 2023 09:56:25 +0200 Subject: [PATCH 129/356] anv/drirc: add option to disable FCV optimization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There are rendering issues with FCV on DG2 and Unreal engine 5.1, patch adds option to disable fcv in drirc. Cc: mesa-stable Signed-off-by: Tapani Pälli Reviewed-by: Rohan Garg Reviewed-by: Lionel Landwerlin Part-of: (cherry picked from commit 01046cd6add64323a2914ddffa2277f63d92b73e) --- .pick_status.json | 2 +- src/intel/vulkan/anv_device.c | 5 +++++ src/intel/vulkan/anv_image.c | 3 ++- src/intel/vulkan/anv_private.h | 4 +++- src/intel/vulkan/genX_init_state.c | 19 ++++++++++--------- src/util/00-mesa-defaults.conf | 4 ++++ src/util/driconf.h | 4 ++++ 7 files changed, 29 insertions(+), 12 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 958abc7d99c..93238ee6273 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1524,7 +1524,7 @@ "description": "anv/drirc: add option to disable FCV optimization", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index 055f9a79fbb..05c837ff8ca 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -78,6 +78,7 @@ static const driOptionDescription anv_dri_options[] = { DRI_CONF_VK_KHR_PRESENT_WAIT(false) DRI_CONF_VK_XWAYLAND_WAIT_READY(true) DRI_CONF_ANV_ASSUME_FULL_SUBGROUPS(false) + DRI_CONF_ANV_DISABLE_FCV(false) DRI_CONF_ANV_SAMPLE_MASK_OUT_OPENGL_BEHAVIOUR(false) DRI_CONF_ANV_FP64_WORKAROUND_ENABLED(false) DRI_CONF_ANV_GENERATED_INDIRECT_THRESHOLD(4) @@ -1366,6 +1367,8 @@ anv_physical_device_try_create(struct vk_instance *vk_instance, device->flush_astc_ldr_void_extent_denorms = device->has_astc_ldr && !device->emu_astc_ldr; } + device->disable_fcv = intel_device_info_is_mtl(&device->info) || + instance->disable_fcv; result = anv_physical_device_init_heaps(device, fd); if (result != VK_SUCCESS) @@ -1609,6 +1612,8 @@ anv_init_dri_options(struct anv_instance *instance) driQueryOptioni(&instance->dri_options, "force_vk_vendor"); instance->has_fake_sparse = driQueryOptionb(&instance->dri_options, "fake_sparse"); + instance->disable_fcv = + driQueryOptionb(&instance->dri_options, "anv_disable_fcv"); } VkResult anv_CreateInstance( diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index 6ffe7cbd5c0..bed29ebe20b 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -830,7 +830,8 @@ add_aux_surface_if_supported(struct anv_device *device, if (intel_needs_workaround(device->info, 1607794140)) { /* FCV is permanently enabled on this HW. */ image->planes[plane].aux_usage = ISL_AUX_USAGE_FCV_CCS_E; - } else if (intel_device_info_is_dg2(device->info)) { + } else if (device->info->verx10 >= 125 && + !device->physical->disable_fcv) { /* FCV is enabled via 3DSTATE_3D_MODE. We'd expect plain CCS_E to * perform better because it allows for non-zero fast clear colors, * but we've run into regressions in several benchmarks (F1 22 and diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 15a746126ab..ae9dbcb549d 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -895,7 +895,8 @@ struct anv_physical_device { bool flush_astc_ldr_void_extent_denorms; /** True if ASTC LDR is supported via emulation */ bool emu_astc_ldr; - + /* true if FCV optimization should be disabled. */ + bool disable_fcv; /**/ bool uses_ex_bso; @@ -1032,6 +1033,7 @@ struct anv_instance { unsigned query_copy_with_shader_threshold; unsigned force_vk_vendor; bool has_fake_sparse; + bool disable_fcv; /* HW workarounds */ bool no_16bit; diff --git a/src/intel/vulkan/genX_init_state.c b/src/intel/vulkan/genX_init_state.c index c0ca960059c..1bbd215384d 100644 --- a/src/intel/vulkan/genX_init_state.c +++ b/src/intel/vulkan/genX_init_state.c @@ -149,21 +149,22 @@ genX(emit_slice_hashing_state)(struct anv_device *device, ptr.SliceHashTableStatePointer = device->slice_hash.offset; } + /* TODO: Figure out FCV support for other platforms + * Testing indicates that FCV is broken on MTL, but works fine on DG2. + * Let's disable FCV on MTL for now till we figure out what's wrong. + * + * Alternatively, it can be toggled off via drirc option 'anv_disable_fcv'. + * + * Ref: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9987 + */ anv_batch_emit(batch, GENX(3DSTATE_3D_MODE), mode) { mode.SliceHashingTableEnable = true; mode.SliceHashingTableEnableMask = true; mode.CrossSliceHashingMode = (util_bitcount(ppipe_mask) > 1 ? hashing32x32 : NormalMode); mode.CrossSliceHashingModeMask = -1; - /* TODO: Figure out FCV support for other platforms - * Testing indicates that FCV is broken on MTL, but works fine on DG2. - * Let's disable FCV on MTL for now till we figure out what's wrong. - * - * Ref: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9987 - */ - mode.FastClearOptimizationEnable = intel_device_info_is_dg2(device->info); - mode.FastClearOptimizationEnableMask = - intel_device_info_is_dg2(device->info); + mode.FastClearOptimizationEnable = !device->physical->disable_fcv; + mode.FastClearOptimizationEnableMask = !device->physical->disable_fcv; } #endif } diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf index 6af8e5c4e3f..d41b98ecedb 100644 --- a/src/util/00-mesa-defaults.conf +++ b/src/util/00-mesa-defaults.conf @@ -1165,6 +1165,10 @@ TODO: document the other workarounds. + + + diff --git a/src/util/driconf.h b/src/util/driconf.h index 12649eb8e2d..ef1eac59a8f 100644 --- a/src/util/driconf.h +++ b/src/util/driconf.h @@ -725,6 +725,10 @@ DRI_CONF_OPT_B(force_indirect_descriptors, def, \ "Use an indirection to access buffer/image/texture/sampler handles") +#define DRI_CONF_ANV_DISABLE_FCV(def) \ + DRI_CONF_OPT_B(anv_disable_fcv, def, \ + "Disable FCV optimization") + /** * \brief DZN specific configuration options */ From 5952462ecf1783f2d56998b643e1408c31dc6ee1 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Tue, 7 Nov 2023 13:19:52 -0800 Subject: [PATCH 130/356] radv: fix image view extent override for astc When doing ASTC decoding, the image has format VK_FORMAT_ASTC_*, the internal plane 1 has format VK_FORMAT_R8G8B8A8_UNORM, and the view has format VK_FORMAT_R8G8B8A8_UINT. It does not need the override for compressed formats. Fixes: f97b449e9e3 ("radv: integrate meta astc compute decoder to radv") Part-of: (cherry picked from commit 2533d0a0e29cb85e98aaaf44e665e091bf36d980) --- .pick_status.json | 2 +- src/amd/vulkan/radv_image.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 93238ee6273..356f633ba32 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1494,7 +1494,7 @@ "description": "radv: fix image view extent override for astc", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "f97b449e9e332026a4b352423f71c6031e5f9e8b", "notes": null diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 2ea37d3f4f8..2b6c5ea16fd 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -2225,7 +2225,8 @@ radv_image_view_init(struct radv_image_view *iview, struct radv_device *device, * block compatible format and the compressed format, so even if we take * the plain converted dimensions the physical layout is correct. */ - if (device->physical_device->rad_info.gfx_level >= GFX9 && vk_format_is_block_compressed(image->vk.format) && + if (device->physical_device->rad_info.gfx_level >= GFX9 && + vk_format_is_block_compressed(image->planes[iview->plane_id].format) && !vk_format_is_block_compressed(iview->vk.format)) { /* If we have multiple levels in the view we should ideally take the last level, * but the mip calculation has a max(..., 1) so walking back to the base mip in an From dd46e0b6d3331070be2b0b04f481bf37ffa548a8 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 7 Nov 2023 10:30:43 +0100 Subject: [PATCH 131/356] radv: fix a descriptor leak with debug names and host base descriptor set vk_object_base_finish() needs to be called on the descriptor set in order to free the debug names. Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10098 Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit 4239e13ff658f7e4746779b8b4c4954b9437533c) --- .pick_status.json | 2 +- src/amd/vulkan/radv_descriptor_set.c | 16 +++++++++------- src/amd/vulkan/radv_private.h | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 356f633ba32..8d34aa8d6b6 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1414,7 +1414,7 @@ "description": "radv: fix a descriptor leak with debug names and host base descriptor set", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c index a0aa0673fe5..602a9952d4b 100644 --- a/src/amd/vulkan/radv_descriptor_set.c +++ b/src/amd/vulkan/radv_descriptor_set.c @@ -691,7 +691,7 @@ radv_descriptor_set_create(struct radv_device *device, struct radv_descriptor_po pool->entries[pool->entry_count].size = layout_size; pool->entries[pool->entry_count].set = set; } else { - pool->layouts[pool->entry_count] = layout; + pool->sets[pool->entry_count] = set; } pool->current_offset += layout_size; @@ -775,7 +775,8 @@ radv_destroy_descriptor_pool(struct radv_device *device, const VkAllocationCallb } } else { for (uint32_t i = 0; i < pool->entry_count; ++i) { - vk_descriptor_set_layout_unref(&device->vk, &pool->layouts[i]->vk); + vk_descriptor_set_layout_unref(&device->vk, &pool->sets[i]->header.layout->vk); + vk_object_base_finish(&pool->sets[i]->header.base); } } @@ -881,15 +882,15 @@ radv_create_descriptor_pool(struct radv_device *device, const VkDescriptorPoolCr bo_size += 16 * MIN2(num_16byte_descriptors, pCreateInfo->maxSets); } - uint64_t layouts_size = 0; + uint64_t sets_size = 0; if (!(pCreateInfo->flags & VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT)) { size += pCreateInfo->maxSets * sizeof(struct radv_descriptor_set); size += sizeof(struct radeon_winsys_bo *) * bo_count; size += sizeof(struct radv_descriptor_range) * range_count; - layouts_size = sizeof(struct radv_descriptor_set_layout *) * pCreateInfo->maxSets; - size += layouts_size; + sets_size = sizeof(struct radv_descriptor_set *) * pCreateInfo->maxSets; + size += sets_size; } else { size += sizeof(struct radv_descriptor_pool_entry) * pCreateInfo->maxSets; } @@ -903,7 +904,7 @@ radv_create_descriptor_pool(struct radv_device *device, const VkDescriptorPoolCr vk_object_base_init(&device->vk, &pool->base, VK_OBJECT_TYPE_DESCRIPTOR_POOL); if (!(pCreateInfo->flags & VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT)) { - pool->host_memory_base = (uint8_t *)pool + sizeof(struct radv_descriptor_pool) + layouts_size; + pool->host_memory_base = (uint8_t *)pool + sizeof(struct radv_descriptor_pool) + sets_size; pool->host_memory_ptr = pool->host_memory_base; pool->host_memory_end = (uint8_t *)pool + size; } @@ -975,7 +976,8 @@ radv_ResetDescriptorPool(VkDevice _device, VkDescriptorPool descriptorPool, VkDe } } else { for (uint32_t i = 0; i < pool->entry_count; ++i) { - vk_descriptor_set_layout_unref(&device->vk, &pool->layouts[i]->vk); + vk_descriptor_set_layout_unref(&device->vk, &pool->sets[i]->header.layout->vk); + vk_object_base_finish(&pool->sets[i]->header.base); } } diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 5eb9102f8c0..56d0ad28ea3 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1201,7 +1201,7 @@ struct radv_descriptor_pool { uint32_t max_entry_count; union { - struct radv_descriptor_set_layout *layouts[0]; + struct radv_descriptor_set *sets[0]; struct radv_descriptor_pool_entry entries[0]; }; }; From e8c975a64232d6d9b1217d57a6eafa9e62f754c0 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 15 Nov 2023 15:06:12 +0100 Subject: [PATCH 132/356] radv: add a missing async compute workaround for Tonga/Iceland After digging into PAL code again, I figured that Tonga/Iceland are both affected by a hw bug related to async compute dispatches. The solution is to change the "threadgroup" dimension mode to the "thread" dimension mode unconditionally. This should fix a bunch of issues related to RADV_DEBUG=nocompute on these GPUs. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7551 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6334 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4679 Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit ec82b4294432aa6da40517655a4f8af2767176a2) --- .pick_status.json | 2 +- src/amd/common/ac_gpu_info.c | 7 +++++++ src/amd/common/ac_gpu_info.h | 1 + src/amd/vulkan/radv_cmd_buffer.c | 17 ++++++++++++++++- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 8d34aa8d6b6..7f8dfa235b0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1344,7 +1344,7 @@ "description": "radv: add a missing async compute workaround for Tonga/Iceland", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c index 16634762cbc..e289d741bc6 100644 --- a/src/amd/common/ac_gpu_info.c +++ b/src/amd/common/ac_gpu_info.c @@ -1246,6 +1246,13 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info, info->family == CHIP_BONAIRE || info->family == CHIP_KABINI; + /* HW bug workaround with async compute dispatches when threadgroup > 4096. + * The workaround is to change the "threadgroup" dimension mode to "thread" + * dimension mode. + */ + info->has_async_compute_threadgroup_bug = info->family == CHIP_ICELAND || + info->family == CHIP_TONGA; + /* Support for GFX10.3 was added with F32_ME_FEATURE_VERSION_31 but the * feature version wasn't bumped. */ diff --git a/src/amd/common/ac_gpu_info.h b/src/amd/common/ac_gpu_info.h index c9d66f7aaba..9cd24a10d01 100644 --- a/src/amd/common/ac_gpu_info.h +++ b/src/amd/common/ac_gpu_info.h @@ -101,6 +101,7 @@ struct radeon_info { bool has_two_planes_iterate256_bug; bool has_vgt_flush_ngg_legacy_bug; bool has_cs_regalloc_hang_bug; + bool has_async_compute_threadgroup_bug; bool has_32bit_predication; bool has_3d_cube_border_color_mipmap; bool has_image_opcodes; diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 57b720520a8..fc8736bcf6d 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -9710,11 +9710,11 @@ radv_emit_dispatch_packets(struct radv_cmd_buffer *cmd_buffer, const struct radv radeon_emit(cs, dispatch_initiator); } } else { + const unsigned *cs_block_size = compute_shader->info.cs.block_size; unsigned blocks[3] = {info->blocks[0], info->blocks[1], info->blocks[2]}; unsigned offsets[3] = {info->offsets[0], info->offsets[1], info->offsets[2]}; if (info->unaligned) { - const unsigned *cs_block_size = compute_shader->info.cs.block_size; unsigned remainder[3]; /* If aligned, these should be an entire block size, @@ -9779,6 +9779,21 @@ radv_emit_dispatch_packets(struct radv_cmd_buffer *cmd_buffer, const struct radv predicating = false; } + if (cmd_buffer->device->physical_device->rad_info.has_async_compute_threadgroup_bug && + cmd_buffer->qf == RADV_QUEUE_COMPUTE) { + for (unsigned i = 0; i < 3; i++) { + if (info->unaligned) { + /* info->blocks is already in thread dimensions for unaligned dispatches. */ + blocks[i] = info->blocks[i]; + } else { + /* Force the async compute dispatch to be in "thread" dim mode to workaround a hw bug. */ + blocks[i] *= cs_block_size[i]; + } + + dispatch_initiator |= S_00B800_USE_THREAD_DIMENSIONS(1); + } + } + radeon_emit(cs, PKT3(PKT3_DISPATCH_DIRECT, 3, predicating) | PKT3_SHADER_TYPE_S(1)); radeon_emit(cs, blocks[0]); radeon_emit(cs, blocks[1]); From 61bd4b332b1b6f9da01e6efee0ff0700e0680fd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Date: Fri, 10 Nov 2023 10:01:46 +0100 Subject: [PATCH 133/356] zink: fix dereference before NULL check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `sv->image_view` pointer is dereference before checking whether it's NULL or not. Check for NULL before dereferencing it to avoid a possible crash. Fixes: 9de455bc4323 ("zink: check for sampler view existence during zink_rebind_all_images()") Reviewed-by: Dave Airlie Signed-off-by: José Expósito Part-of: (cherry picked from commit 83ed419cd0a55fc0ee9f5ccce8f7ac03711bbf71) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_context.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 7f8dfa235b0..a264889e54d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1334,7 +1334,7 @@ "description": "zink: fix dereference before NULL check", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "9de455bc4323d6bb484c1beed77454381e48b432", "notes": null diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 39494ad1a14..b418c6d9d31 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -4846,7 +4846,7 @@ zink_rebind_all_images(struct zink_context *ctx) for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { for (unsigned j = 0; j < ctx->di.num_sampler_views[i]; j++) { struct zink_sampler_view *sv = zink_sampler_view(ctx->sampler_views[i][j]); - if (!sv || sv->image_view->base.texture->target == PIPE_BUFFER || !sv->image_view) + if (!sv || !sv->image_view || sv->image_view->base.texture->target == PIPE_BUFFER) continue; struct zink_resource *res = zink_resource(sv->image_view->base.texture); if (res->obj != sv->image_view->obj) { From c573f2437dfe040ed993ed44f8a9fd6aa00466b7 Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Mon, 13 Nov 2023 17:39:20 +0900 Subject: [PATCH 134/356] zink: Fix missing sparse buffer bind synchronization. goto oopsies. Fixes: d1456a6b0ad ("zink: add semaphore handling for sparse binds") Reviewed-by: Dave Airlie Part-of: (cherry picked from commit 3ee283e45557066c29fdb2000f7627d8996aeed0) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_bo.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index a264889e54d..74002f0526a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1314,7 +1314,7 @@ "description": "zink: Fix missing sparse buffer bind synchronization.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "d1456a6b0ad0dee9936caa52c9fd915c4bfaa61b", "notes": null diff --git a/src/gallium/drivers/zink/zink_bo.c b/src/gallium/drivers/zink/zink_bo.c index 7fd2bd4fe43..01949742732 100644 --- a/src/gallium/drivers/zink/zink_bo.c +++ b/src/gallium/drivers/zink/zink_bo.c @@ -959,7 +959,7 @@ zink_bo_commit(struct zink_screen *screen, struct zink_resource *res, unsigned l simple_mtx_lock(&screen->queue_lock); simple_mtx_lock(&bo->lock); if (res->base.b.target == PIPE_BUFFER) { - ok = buffer_bo_commit(screen, res, box->x, box->width, commit, sem); + ok = buffer_bo_commit(screen, res, box->x, box->width, commit, &cur_sem); goto out; } From 1a238bece942c3c8c97e426466b0675c8434da86 Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Tue, 14 Nov 2023 16:30:24 +0900 Subject: [PATCH 135/356] zink: Fix waiting for texture commit semaphores. The commit was always being treated as failed... Fixes: d1456a6b0ad ("zink: add semaphore handling for sparse binds") Reviewed-by: Dave Airlie Part-of: (cherry picked from commit 94e867e4a682305e28efbacafc01551172f5a11a) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_bo.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 74002f0526a..2f736f26fd3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1294,7 +1294,7 @@ "description": "zink: Fix waiting for texture commit semaphores.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "d1456a6b0ad0dee9936caa52c9fd915c4bfaa61b", "notes": null diff --git a/src/gallium/drivers/zink/zink_bo.c b/src/gallium/drivers/zink/zink_bo.c index 01949742732..ddd428897ee 100644 --- a/src/gallium/drivers/zink/zink_bo.c +++ b/src/gallium/drivers/zink/zink_bo.c @@ -1128,8 +1128,8 @@ zink_bo_commit(struct zink_screen *screen, struct zink_resource *res, unsigned l fprintf(stderr, "zink: leaking sparse backing memory\n"); } } + ok = false; } - ok = false; } out: From 5542b17f7241e5ef581251e84dc6299741a85f4f Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Wed, 8 Nov 2023 15:23:48 +0100 Subject: [PATCH 136/356] util: Add new helpers for pipe resources They will be handy for drivers supporting multi-planar formats. Cc: mesa-stable Reviewed-by: Italo Nicola Part-of: (cherry picked from commit d679154dc021feb1333bf7207d8a26d9db75b921) --- .pick_status.json | 2 +- src/gallium/auxiliary/util/u_resource.c | 32 +++++++++++++++++++++++++ src/gallium/auxiliary/util/u_resource.h | 6 +++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 2f736f26fd3..aa884ec0b6a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1284,7 +1284,7 @@ "description": "util: Add new helpers for pipe resources", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/auxiliary/util/u_resource.c b/src/gallium/auxiliary/util/u_resource.c index b27c3f3c80b..728a662f09b 100644 --- a/src/gallium/auxiliary/util/u_resource.c +++ b/src/gallium/auxiliary/util/u_resource.c @@ -64,3 +64,35 @@ util_resource_size(const struct pipe_resource *res) return size; } + +/** + * Return the number of the resources. + */ +unsigned +util_resource_num(const struct pipe_resource *res) +{ + const struct pipe_resource *cur; + unsigned count; + + for (count = 0, cur = res; cur; cur = cur->next) + count++; + + return count; +} + +/** + * Return the resource at the given index. + */ +struct pipe_resource * +util_resource_at_index(const struct pipe_resource *res, unsigned index) +{ + const struct pipe_resource *cur; + unsigned count; + + for (count = 0, cur = res; cur; cur = cur->next) { + if (count++ == index) + return (struct pipe_resource *)cur; + } + + return NULL; +} diff --git a/src/gallium/auxiliary/util/u_resource.h b/src/gallium/auxiliary/util/u_resource.h index fe9c1c4d7f0..32e9d158ad0 100644 --- a/src/gallium/auxiliary/util/u_resource.h +++ b/src/gallium/auxiliary/util/u_resource.h @@ -31,6 +31,12 @@ unsigned util_resource_size(const struct pipe_resource *res); +unsigned +util_resource_num(const struct pipe_resource *res); + +struct pipe_resource * +util_resource_at_index(const struct pipe_resource *res, unsigned index); + /** * Return true if the texture target is an array type. * From 6e218edda5777de21d8b82e9f3a565bf06c4327a Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Wed, 8 Nov 2023 00:18:41 +0100 Subject: [PATCH 137/356] panfrost: Support parameter queries for main planes In order to return correct offsets, strides and possibly other parameters. This is relevant for formats like NV12 and P010 where the second plane, when produced by the V4L2 decoder, uses the same FD like the first one, but with an offset. Analogous to 7a7e577d. Also use the new helper to get the number of planes. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10094 Cc: mesa-stable Reviewed-by: Italo Nicola Part-of: (cherry picked from commit 5f4253e096de76651d3bd2bbd447abb1e9cb624f) --- .pick_status.json | 2 +- src/gallium/drivers/panfrost/pan_resource.c | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index aa884ec0b6a..6640f34ba51 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1274,7 +1274,7 @@ "description": "panfrost: Support parameter queries for main planes", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index 6f4b5c14ccc..9abebde2266 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -41,6 +41,7 @@ #include "util/u_drm.h" #include "util/u_gen_mipmap.h" #include "util/u_memory.h" +#include "util/u_resource.h" #include "util/u_surface.h" #include "util/u_transfer.h" #include "util/u_transfer_helper.h" @@ -219,9 +220,8 @@ panfrost_resource_get_param(struct pipe_screen *pscreen, enum pipe_resource_param param, unsigned usage, uint64_t *value) { - struct panfrost_resource *rsrc = (struct panfrost_resource *)prsc; - struct pipe_resource *cur; - unsigned count; + struct panfrost_resource *rsrc = + (struct panfrost_resource *)util_resource_at_index(prsc, plane); switch (param) { case PIPE_RESOURCE_PARAM_STRIDE: @@ -234,14 +234,7 @@ panfrost_resource_get_param(struct pipe_screen *pscreen, *value = rsrc->image.layout.modifier; return true; case PIPE_RESOURCE_PARAM_NPLANES: - /* Panfrost doesn't directly support multi-planar formats, - * but we should still handle this case for gbm users - * that might want to use resources shared with panfrost - * on video processing hardware that does. - */ - for (count = 0, cur = prsc; cur; cur = cur->next) - count++; - *value = count; + *value = util_resource_num(prsc); return true; default: return false; From 402553152f2c15d0c8003f7637fe8c9c3cfe747a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Date: Thu, 16 Nov 2023 12:18:29 +0100 Subject: [PATCH 138/356] zink: allow software rendering only if selected MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In environments where 3D acceleration is not available, like in a VM, the behavior before commit 8cd44b884387 ("egl: add automatic zink fallback loading between hw and sw drivers") was to fallback to swrast. This was the output of `eglinfo` in that situation: $ eglinfo [...] Wayland platform: EGL driver name: swrast OpenGL core profile renderer: llvmpipe (LLVM 17.0.4, 256 bits) However, after commit 8cd44b884387 ("egl: add automatic zink fallback loading between hw and sw drivers") Zink support is tested before falling back to swrast. Since the system doesn't support 3D acceleration, Zink + software rendering is used instead of swrast causing issues like the ones described in #10146. In this case, `eglinfo` prints: $ eglinfo [...] Wayland platform: EGL driver name: zink OpenGL core profile renderer: zink Vulkan 1.3(llvmpipe (LLVM 17.0.4, 256 bits) (MESA_LLVMPIPE)) This patch ensures that Zink + software rendering is used only when the user opts-in by setting `LIBGL_ALWAYS_SOFTWARE` or `D3D_ALWAYS_SOFTWARE` and swrast is used otherwise. After the patch, the output of `eglinfo` is identical to the one before the regression: $ eglinfo [...] Wayland platform: EGL driver name: swrast OpenGL core profile renderer: llvmpipe (LLVM 17.0.4, 256 bits) Resolves: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10146 Fixes: 8cd44b884387 ("egl: add automatic zink fallback loading between hw and sw drivers") Reviewed-by: Michel Dänzer Signed-off-by: José Expósito Part-of: (cherry picked from commit 2a71f06f2938678d89d5ed1372cda6a7b55d964d) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_screen.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 6640f34ba51..8a0c109a699 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1244,7 +1244,7 @@ "description": "zink: allow software rendering only if selected", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "8cd44b8843877a2f7d559d123eb3694841f16fdc", "notes": null diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 29a377acfb6..50168d8daa1 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -1632,6 +1632,12 @@ choose_pdev(struct zink_screen *screen, int64_t dev_major, int64_t dev_minor) } VKSCR(GetPhysicalDeviceProperties)(screen->pdev, &screen->info.props); + /* allow software rendering only if forced by the user */ + if (!cpu && screen->info.props.deviceType == VK_PHYSICAL_DEVICE_TYPE_CPU) { + screen->pdev = VK_NULL_HANDLE; + return; + } + screen->info.device_version = screen->info.props.apiVersion; /* runtime version is the lesser of the instance version and device version */ From f80e96eb26def1862020f669e2ca4e7cf9061431 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 16 Nov 2023 21:24:31 +0200 Subject: [PATCH 139/356] intel/fs: rerun divergence analysis prior to convert_from_ssa Signed-off-by: Lionel Landwerlin Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9964 Cc: mesa-stable Reviewed-by: Ian Romanick Part-of: (cherry picked from commit 6dbb5f1e07b11be0cc6ac764bf1b51feaa7fa623) --- .pick_status.json | 2 +- src/intel/compiler/brw_nir.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 8a0c109a699..d53c5e1a2e0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1064,7 +1064,7 @@ "description": "intel/fs: rerun divergence analysis prior to convert_from_ssa", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c index 3ef61403616..8da98b0fbfd 100644 --- a/src/intel/compiler/brw_nir.c +++ b/src/intel/compiler/brw_nir.c @@ -1734,6 +1734,13 @@ brw_postprocess_nir(nir_shader *nir, const struct brw_compiler *compiler, nir_validate_ssa_dominance(nir, "before nir_convert_from_ssa"); + /* Rerun the divergence analysis before convert_from_ssa as this pass has + * some assert on consistent divergence flags. + */ + NIR_PASS(_, nir, nir_convert_to_lcssa, true, true); + NIR_PASS_V(nir, nir_divergence_analysis); + OPT(nir_opt_remove_phis); + OPT(nir_convert_from_ssa, true); if (!is_scalar) { From 317998e30f155d57dcbadce4b3b6691a1d9bddd0 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Sat, 9 Sep 2023 06:30:52 +0300 Subject: [PATCH 140/356] intel/nir/rt: fix reportIntersection() hitT handling We're currently updating the hitT value in the traversal result with the hitT value from reportIntersection(), but this is not correct. First the hitT value of reportIntersection() should update the gl_RayTmaxEXT value (maps to brw_nir_rt_mem_ray_defs::t_far). Second the hitT determined by traversal should only be updated if the reportIntersection() hitT value has updated the gl_RayTmaxEXT and that the new gl_RayTmaxEXT is smaller than the determined hitT value from traversal. Reviewed-by: Ivan Briano Fixes: 303378e1dd ("intel/rt: Add lowering for combined intersection/any-hit shaders") Part-of: (cherry picked from commit 4eb4197d27aed6f5e71195a971145b2945d78330) --- .pick_status.json | 2 +- .../compiler/brw_nir_lower_intersection_shader.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index d53c5e1a2e0..02852cb5083 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1054,7 +1054,7 @@ "description": "intel/nir/rt: fix reportIntersection() hitT handling", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "303378e1dd4119e04e0f6cb623766115a00c2eea", "notes": null diff --git a/src/intel/compiler/brw_nir_lower_intersection_shader.c b/src/intel/compiler/brw_nir_lower_intersection_shader.c index 90e2f03684a..b26339bdac1 100644 --- a/src/intel/compiler/brw_nir_lower_intersection_shader.c +++ b/src/intel/compiler/brw_nir_lower_intersection_shader.c @@ -196,7 +196,14 @@ brw_nir_lower_intersection_shader(nir_shader *intersection, nir_def *hit_t = intrin->src[0].ssa; nir_def *hit_kind = intrin->src[1].ssa; nir_def *min_t = nir_load_ray_t_min(b); - nir_def *max_t = nir_load_global(b, t_addr, 4, 1, 32); + + struct brw_nir_rt_mem_ray_defs ray_def; + brw_nir_rt_load_mem_ray(b, &ray_def, BRW_RT_BVH_LEVEL_WORLD); + + struct brw_nir_rt_mem_hit_defs hit_in = {}; + brw_nir_rt_load_mem_hit(b, &hit_in, false); + + nir_def *max_t = ray_def.t_far; /* bool commit_tmp = false; */ nir_variable *commit_tmp = @@ -227,8 +234,13 @@ brw_nir_lower_intersection_shader(nir_shader *intersection, nir_push_if(b, nir_load_var(b, commit_tmp)); { nir_store_var(b, commit, nir_imm_true(b), 0x1); + + nir_def *ray_addr = + brw_nir_rt_mem_ray_addr(b, brw_nir_rt_stack_addr(b), BRW_RT_BVH_LEVEL_WORLD); + + nir_store_global(b, nir_iadd_imm(b, ray_addr, 16 + 12), 4, hit_t, 0x1); nir_store_global(b, t_addr, 4, - nir_vec2(b, hit_t, hit_kind), + nir_vec2(b, nir_fmin(b, hit_t, hit_in.t), hit_kind), 0x3); } nir_pop_if(b, NULL); From c972359d41c5e7032ed8615ef63f390260c4acae Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Thu, 5 Oct 2023 08:49:46 +0200 Subject: [PATCH 141/356] panfrost: Flag the right shader when updating images Fixes: fab1fabb4f0b ("panfrost: Dirty track fragment images") Signed-off-by: Boris Brezillon Reviewed-by: Erik Faye-Lund Part-of: (cherry picked from commit 8ed471a339543072e0683308ac1ee1a4faad41fb) --- .pick_status.json | 2 +- src/gallium/drivers/panfrost/pan_context.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 02852cb5083..01fc530b238 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -914,7 +914,7 @@ "description": "panfrost: Flag the right shader when updating images", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "fab1fabb4f0b807b4a9fb1fb5d7180fb8d8e3a45", "notes": null diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index ae5e2608909..65e06187e25 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -254,7 +254,7 @@ panfrost_set_shader_images(struct pipe_context *pctx, const struct pipe_image_view *iviews) { struct panfrost_context *ctx = pan_context(pctx); - ctx->dirty_shader[PIPE_SHADER_FRAGMENT] |= PAN_DIRTY_STAGE_IMAGE; + ctx->dirty_shader[shader] |= PAN_DIRTY_STAGE_IMAGE; /* Unbind start_slot...start_slot+count */ if (!iviews) { From 5f12ed0774bdeab69bc35eb2537de90e35b49b6d Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 9 Nov 2023 13:51:38 +0200 Subject: [PATCH 142/356] anv: fix CC_VIEWPORT pointer dirty after blorp/simple-shaders Signed-off-by: Lionel Landwerlin Fixes: 50f6903bd9 ("anv: add new low level emission & dirty state tracking") Reviewed-by: Ian Romanick Part-of: (cherry picked from commit 1257d08bcb9d7068ec24acbcf281a388e7ff015f) --- .pick_status.json | 2 +- src/intel/vulkan/genX_blorp_exec.c | 1 + src/intel/vulkan/genX_simple_shader.c | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 01fc530b238..8cab9697568 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -784,7 +784,7 @@ "description": "anv: fix CC_VIEWPORT pointer dirty after blorp/simple-shaders", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "50f6903bd9c472eef2af2cbf62027df3bbe0ca8a", "notes": null diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c index a98319736ea..8585f4f149b 100644 --- a/src/intel/vulkan/genX_blorp_exec.c +++ b/src/intel/vulkan/genX_blorp_exec.c @@ -358,6 +358,7 @@ blorp_exec_on_render(struct blorp_batch *batch, #if GFX_VER >= 12 BITSET_SET(hw_state->dirty, ANV_GFX_STATE_PRIMITIVE_REPLICATION); #endif + BITSET_SET(hw_state->dirty, ANV_GFX_STATE_VIEWPORT_CC); BITSET_SET(hw_state->dirty, ANV_GFX_STATE_STREAMOUT); BITSET_SET(hw_state->dirty, ANV_GFX_STATE_RASTER); BITSET_SET(hw_state->dirty, ANV_GFX_STATE_CLIP); diff --git a/src/intel/vulkan/genX_simple_shader.c b/src/intel/vulkan/genX_simple_shader.c index ee87eb6ef48..6ce78b5c0a0 100644 --- a/src/intel/vulkan/genX_simple_shader.c +++ b/src/intel/vulkan/genX_simple_shader.c @@ -310,6 +310,7 @@ genX(emit_simpler_shader_init_fragment)(struct anv_simple_shader *state) BITSET_SET(hw_state->dirty, ANV_GFX_STATE_PRIMITIVE_REPLICATION); #endif BITSET_SET(hw_state->dirty, ANV_GFX_STATE_STREAMOUT); + BITSET_SET(hw_state->dirty, ANV_GFX_STATE_VIEWPORT_CC); BITSET_SET(hw_state->dirty, ANV_GFX_STATE_CLIP); BITSET_SET(hw_state->dirty, ANV_GFX_STATE_RASTER); BITSET_SET(hw_state->dirty, ANV_GFX_STATE_SAMPLE_MASK); From 64dee1015cc8259aa83399db58d49831dfd571d1 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 9 Nov 2023 14:48:26 +0200 Subject: [PATCH 143/356] anv: fix dirty state tracking for 3DSTATE_PUSH_CONSTANT_ALLOC ANV_CMD_DIRTY_PIPELINE also includes reprogramming of 3DSTATE_PUSH_CONSTANT_ALLOC_* instructions. Signed-off-by: Lionel Landwerlin Fixes: 50f6903bd9 ("anv: add new low level emission & dirty state tracking") Reviewed-by: Ian Romanick Part-of: (cherry picked from commit 9689607f10bb150df0a75d189fc02b522410887f) --- .pick_status.json | 2 +- src/intel/vulkan/genX_blorp_exec.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 8cab9697568..bc8cb2c16a3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -774,7 +774,7 @@ "description": "anv: fix dirty state tracking for 3DSTATE_PUSH_CONSTANT_ALLOC", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "50f6903bd9c472eef2af2cbf62027df3bbe0ca8a", "notes": null diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c index 8585f4f149b..a8ee4f7219f 100644 --- a/src/intel/vulkan/genX_blorp_exec.c +++ b/src/intel/vulkan/genX_blorp_exec.c @@ -387,8 +387,7 @@ blorp_exec_on_render(struct blorp_batch *batch, BITSET_SET(hw_state->dirty, ANV_GFX_STATE_PS_BLEND); } - anv_cmd_dirty_mask_t dirty = ~(ANV_CMD_DIRTY_PIPELINE | - ANV_CMD_DIRTY_INDEX_BUFFER | + anv_cmd_dirty_mask_t dirty = ~(ANV_CMD_DIRTY_INDEX_BUFFER | ANV_CMD_DIRTY_XFB_ENABLE); cmd_buffer->state.gfx.vb_dirty = ~0; From 0ac2529959d6910137e93f34cd57e88087ed987d Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Wed, 18 Oct 2023 15:34:45 +0100 Subject: [PATCH 144/356] radv: add radv_disable_trunc_coord option Signed-off-by: Rhys Perry Reviewed-by: Samuel Pitoiset Cc: mesa-stable Part-of: (cherry picked from commit 4d2a3b95730c4781234096778043f987234b6a4c) --- .pick_status.json | 2 +- .../vulkan/nir/radv_nir_apply_pipeline_layout.c | 9 +++++---- src/amd/vulkan/radv_device.c | 14 ++++++++++++++ src/amd/vulkan/radv_instance.c | 3 +++ src/amd/vulkan/radv_pipeline.c | 5 ++++- src/amd/vulkan/radv_private.h | 4 ++++ src/amd/vulkan/radv_sampler.c | 5 +++-- src/amd/vulkan/radv_shader.h | 1 + src/util/driconf.h | 4 ++++ 9 files changed, 39 insertions(+), 8 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index bc8cb2c16a3..6c34cd1f174 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -604,7 +604,7 @@ "description": "radv: add radv_disable_trunc_coord option", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/nir/radv_nir_apply_pipeline_layout.c b/src/amd/vulkan/nir/radv_nir_apply_pipeline_layout.c index a5d91119b8d..210a1357f00 100644 --- a/src/amd/vulkan/nir/radv_nir_apply_pipeline_layout.c +++ b/src/amd/vulkan/nir/radv_nir_apply_pipeline_layout.c @@ -34,7 +34,7 @@ typedef struct { uint32_t address32_hi; bool disable_aniso_single_level; bool has_image_load_dcc_bug; - bool conformant_trunc_coord; + bool disable_tg4_trunc_coord; const struct radv_shader_args *args; const struct radv_shader_info *info; @@ -246,7 +246,7 @@ get_sampler_desc(nir_builder *b, apply_layout_state *state, nir_deref_instr *der } uint32_t dword0_mask = - tex->op == nir_texop_tg4 && !state->conformant_trunc_coord ? C_008F30_TRUNC_COORD : 0xffffffffu; + tex->op == nir_texop_tg4 && state->disable_tg4_trunc_coord ? C_008F30_TRUNC_COORD : 0xffffffffu; const uint32_t *samplers = radv_immutable_samplers(layout, binding); return nir_imm_ivec4(b, samplers[constant_index * 4 + 0] & dword0_mask, samplers[constant_index * 4 + 1], samplers[constant_index * 4 + 2], samplers[constant_index * 4 + 3]); @@ -330,7 +330,7 @@ get_sampler_desc(nir_builder *b, apply_layout_state *state, nir_deref_instr *der comp[6] = nir_iand_imm(b, comp[6], C_00A018_WRITE_COMPRESS_ENABLE); return nir_vec(b, comp, 8); - } else if (desc_type == AC_DESC_SAMPLER && tex->op == nir_texop_tg4 && !state->conformant_trunc_coord) { + } else if (desc_type == AC_DESC_SAMPLER && tex->op == nir_texop_tg4 && state->disable_tg4_trunc_coord) { nir_def *comp[4]; for (unsigned i = 0; i < 4; i++) comp[i] = nir_channel(b, desc, i); @@ -507,7 +507,8 @@ radv_nir_apply_pipeline_layout(nir_shader *shader, struct radv_device *device, c .address32_hi = device->physical_device->rad_info.address32_hi, .disable_aniso_single_level = device->instance->disable_aniso_single_level, .has_image_load_dcc_bug = device->physical_device->rad_info.has_image_load_dcc_bug, - .conformant_trunc_coord = device->physical_device->rad_info.conformant_trunc_coord, + .disable_tg4_trunc_coord = + !device->physical_device->rad_info.conformant_trunc_coord && !device->disable_trunc_coord, .args = args, .info = info, .layout = layout, diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 17ead40604c..7ebb5308ee2 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -707,11 +707,13 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr bool use_dgc = false; bool smooth_lines = false; bool mesh_shader_queries = false; + bool dual_src_blend = false; /* Check enabled features */ if (pCreateInfo->pEnabledFeatures) { if (pCreateInfo->pEnabledFeatures->robustBufferAccess) buffer_robustness = MAX2(buffer_robustness, RADV_BUFFER_ROBUSTNESS_1); + dual_src_blend = pCreateInfo->pEnabledFeatures->dualSrcBlend; } vk_foreach_struct_const (ext, pCreateInfo->pNext) { @@ -720,6 +722,7 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr const VkPhysicalDeviceFeatures2 *features = (const void *)ext; if (features->features.robustBufferAccess) buffer_robustness = MAX2(buffer_robustness, RADV_BUFFER_ROBUSTNESS_1); + dual_src_blend |= features->features.dualSrcBlend; break; } case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: { @@ -1125,6 +1128,17 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr fprintf(stderr, "radv: Forcing anisotropy filter to %ix\n", 1 << util_logbase2(device->force_aniso)); } + device->disable_trunc_coord = device->instance->disable_trunc_coord; + + if (device->instance->vk.app_info.engine_name && !strcmp(device->instance->vk.app_info.engine_name, "DXVK")) { + /* For DXVK 2.3.0 and older, use dualSrcBlend to determine if this is D3D9. */ + bool is_d3d9 = !dual_src_blend; + if (device->instance->vk.app_info.engine_version > VK_MAKE_VERSION(2, 3, 0)) + is_d3d9 = device->instance->vk.app_info.app_version & 0x1; + + device->disable_trunc_coord &= !is_d3d9; + } + if (use_perf_counters) { size_t bo_size = PERF_CTR_BO_PASS_OFFSET + sizeof(uint64_t) * PERF_CTR_MAX_PASSES; result = device->ws->buffer_create(device->ws, bo_size, 4096, RADEON_DOMAIN_GTT, diff --git a/src/amd/vulkan/radv_instance.c b/src/amd/vulkan/radv_instance.c index ffe4bb3a32a..6cd78b4265f 100644 --- a/src/amd/vulkan/radv_instance.c +++ b/src/amd/vulkan/radv_instance.c @@ -144,6 +144,7 @@ static const driOptionDescription radv_dri_options[] = { DRI_CONF_RADV_DISABLE_TC_COMPAT_HTILE_GENERAL(false) DRI_CONF_RADV_DISABLE_DCC(false) DRI_CONF_RADV_DISABLE_ANISO_SINGLE_LEVEL(false) + DRI_CONF_RADV_DISABLE_TRUNC_COORD(false) DRI_CONF_RADV_DISABLE_SINKING_LOAD_INPUT_FS(false) DRI_CONF_RADV_DGC(false) DRI_CONF_RADV_FLUSH_BEFORE_QUERY_COPY(false) @@ -191,6 +192,8 @@ radv_init_dri_options(struct radv_instance *instance) instance->disable_aniso_single_level = driQueryOptionb(&instance->dri_options, "radv_disable_aniso_single_level"); + instance->disable_trunc_coord = driQueryOptionb(&instance->dri_options, "radv_disable_trunc_coord"); + instance->disable_sinking_load_input_fs = driQueryOptionb(&instance->dri_options, "radv_disable_sinking_load_input_fs"); diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index c855025858c..d9b5eb2a098 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -157,6 +157,8 @@ radv_generate_pipeline_key(const struct radv_device *device, const VkPipelineSha key.disable_aniso_single_level = device->instance->disable_aniso_single_level && device->physical_device->rad_info.gfx_level < GFX8; + key.disable_trunc_coord = device->disable_trunc_coord; + key.image_2d_view_of_3d = device->image_2d_view_of_3d && device->physical_device->rad_info.gfx_level == GFX9; key.tex_non_uniform = device->instance->tex_non_uniform; @@ -622,7 +624,8 @@ radv_postprocess_nir(struct radv_device *device, const struct radv_pipeline_key NIR_PASS(_, stage->nir, ac_nir_lower_tex, &(ac_nir_lower_tex_options){ .gfx_level = gfx_level, - .lower_array_layer_round_even = !device->physical_device->rad_info.conformant_trunc_coord, + .lower_array_layer_round_even = + !device->physical_device->rad_info.conformant_trunc_coord || device->disable_trunc_coord, .fix_derivs_in_divergent_cf = fix_derivs_in_divergent_cf, .max_wqm_vgprs = 64, // TODO: improve spiller and RA support for linear VGPRs }); diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 56d0ad28ea3..bb2b9925c7b 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -410,6 +410,7 @@ struct radv_instance { bool disable_tc_compat_htile_in_general; bool disable_shrink_image_store; bool disable_aniso_single_level; + bool disable_trunc_coord; bool zero_vram; bool disable_sinking_load_input_fs; bool flush_before_query_copy; @@ -1042,6 +1043,9 @@ struct radv_device { /* Whether anisotropy is forced with RADV_TEX_ANISO (-1 is disabled). */ int force_aniso; + /* Always disable TRUNC_COORD. */ + bool disable_trunc_coord; + struct radv_device_border_color_data border_color_data; /* Thread trace. */ diff --git a/src/amd/vulkan/radv_sampler.c b/src/amd/vulkan/radv_sampler.c index 19fb0ef44e6..baf171dd5f7 100644 --- a/src/amd/vulkan/radv_sampler.c +++ b/src/amd/vulkan/radv_sampler.c @@ -200,8 +200,9 @@ radv_init_sampler(struct radv_device *device, struct radv_sampler *sampler, cons device->physical_device->rad_info.gfx_level == GFX8 || device->physical_device->rad_info.gfx_level == GFX9; unsigned filter_mode = radv_tex_filter_mode(sampler->vk.reduction_mode); unsigned depth_compare_func = V_008F30_SQ_TEX_DEPTH_COMPARE_NEVER; - bool trunc_coord = (pCreateInfo->minFilter == VK_FILTER_NEAREST && pCreateInfo->magFilter == VK_FILTER_NEAREST) || - device->physical_device->rad_info.conformant_trunc_coord; + bool trunc_coord = ((pCreateInfo->minFilter == VK_FILTER_NEAREST && pCreateInfo->magFilter == VK_FILTER_NEAREST) || + device->physical_device->rad_info.conformant_trunc_coord) && + !device->disable_trunc_coord; bool uses_border_color = pCreateInfo->addressModeU == VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER || pCreateInfo->addressModeV == VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER || pCreateInfo->addressModeW == VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER; diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 0582e6b1e47..445f8b8e0a5 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -85,6 +85,7 @@ struct radv_pipeline_key { uint32_t use_ngg : 1; uint32_t adjust_frag_coord_z : 1; uint32_t disable_aniso_single_level : 1; + uint32_t disable_trunc_coord : 1; uint32_t disable_sinking_load_input_fs : 1; uint32_t image_2d_view_of_3d : 1; uint32_t primitives_generated_query : 1; diff --git a/src/util/driconf.h b/src/util/driconf.h index ef1eac59a8f..e24c1eefd43 100644 --- a/src/util/driconf.h +++ b/src/util/driconf.h @@ -649,6 +649,10 @@ DRI_CONF_OPT_B(radv_disable_aniso_single_level, def, \ "Disable anisotropic filtering for single level images") +#define DRI_CONF_RADV_DISABLE_TRUNC_COORD(def) \ + DRI_CONF_OPT_B(radv_disable_trunc_coord, def, \ + "Disable TRUNC_COORD to use D3D10/11/12 point sampling behaviour. This has special behaviour for DXVK.") + #define DRI_CONF_RADV_DISABLE_SINKING_LOAD_INPUT_FS(def) \ DRI_CONF_OPT_B(radv_disable_sinking_load_input_fs, def, \ "Disable sinking load inputs for fragment shaders") From a59318181965725353ab875e7f08af48cdc20824 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Wed, 18 Oct 2023 15:35:03 +0100 Subject: [PATCH 145/356] radv: enable radv_disable_trunc_coord for vkd3d-proton/DXVK This fixes diagonal SSAO artifacts in some games. Signed-off-by: Rhys Perry Reviewed-by: Samuel Pitoiset Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9253 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6395 Part-of: (cherry picked from commit 9e9eb87dd3a2ffe782ac85998a69623f59306caf) --- .pick_status.json | 2 +- src/util/00-radv-defaults.conf | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 6c34cd1f174..dffcbba18fc 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -594,7 +594,7 @@ "description": "radv: enable radv_disable_trunc_coord for vkd3d-proton/DXVK", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/util/00-radv-defaults.conf b/src/util/00-radv-defaults.conf index 5678c5e011f..45b571ba0ac 100644 --- a/src/util/00-radv-defaults.conf +++ b/src/util/00-radv-defaults.conf @@ -39,11 +39,13 @@ Application bugs worked around in this file: From f62a7df6d15dc74d0759feefc168fd3c68bbc24f Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Thu, 16 Nov 2023 17:44:50 +0000 Subject: [PATCH 146/356] egl/dri2: increase NUM_ATTRIBS to fit all the attributes Cc: mesa-stable Part-of: (cherry picked from commit f011410c1c480829dde58f285023a3768686c9ee) --- .pick_status.json | 2 +- src/egl/drivers/dri2/egl_dri2.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index dffcbba18fc..c5b24f979c3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -224,7 +224,7 @@ "description": "egl/dri2: increase NUM_ATTRIBS to fit all the attributes", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 50d7dfe0d1f..4cd46969abe 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -73,7 +73,7 @@ #include "egl_dri2.h" #include "egldefines.h" -#define NUM_ATTRIBS 12 +#define NUM_ATTRIBS 16 static const struct dri2_pbuffer_visual { const char *format_name; From ef07bc116ecaae9df9d144965947cf4f79645874 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 15 Nov 2023 12:51:57 +0100 Subject: [PATCH 147/356] egl: extract EGLDevice setup in dedicated function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extract the logic responsible for populating disp->Device via _eglFindDevice(). This isn't much for now but will grow in a following commit. No functional changes. Signed-off-by: Simon Ser Reviewed-by: Iago Toral Quiroga Reviewed-by: Leandro Ribeiro Tested-by: Iago Toral Quiroga Tested-by: Alejandro Piñeiro Backport-to: 23.3 Part-of: (cherry picked from commit b4ec0b51ce47d87d21609444dddd50c91968f26d) --- .pick_status.json | 2 +- src/egl/drivers/dri2/egl_dri2.c | 14 ++++++++++++++ src/egl/drivers/dri2/egl_dri2.h | 3 +++ src/egl/drivers/dri2/platform_android.c | 8 ++------ src/egl/drivers/dri2/platform_drm.c | 8 ++------ src/egl/drivers/dri2/platform_wayland.c | 16 ++++------------ src/egl/drivers/dri2/platform_x11.c | 24 ++++++------------------ 7 files changed, 32 insertions(+), 43 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index c5b24f979c3..ab982d90fe3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -104,7 +104,7 @@ "description": "egl: extract EGLDevice setup in dedicated function", "nominated": true, "nomination_type": 4, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 4cd46969abe..3e3ac3c4393 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1075,6 +1075,20 @@ dri2_setup_extensions(_EGLDisplay *disp) return EGL_TRUE; } +EGLBoolean +dri2_setup_device(_EGLDisplay *disp, EGLBoolean software) +{ + struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); + _EGLDevice *dev; + + dev = _eglFindDevice(dri2_dpy->fd_render_gpu, software); + if (!dev) + return EGL_FALSE; + + disp->Device = dev; + return EGL_TRUE; +} + /** * Called via eglInitialize(), drv->Initialize(). * diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h index bb09ceb8e93..5edd810f476 100644 --- a/src/egl/drivers/dri2/egl_dri2.h +++ b/src/egl/drivers/dri2/egl_dri2.h @@ -483,6 +483,9 @@ dri2_create_screen(_EGLDisplay *disp); EGLBoolean dri2_setup_extensions(_EGLDisplay *disp); +EGLBoolean +dri2_setup_device(_EGLDisplay *disp, EGLBoolean software); + __DRIdrawable * dri2_surface_get_dri_drawable(_EGLSurface *surf); diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index b0b327036fe..476f4cca73c 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -1476,7 +1476,6 @@ droid_open_device(_EGLDisplay *disp, bool swrast) EGLBoolean dri2_initialize_android(_EGLDisplay *disp) { - _EGLDevice *dev; bool device_opened = false; struct dri2_egl_display *dri2_dpy; const char *err; @@ -1505,14 +1504,11 @@ dri2_initialize_android(_EGLDisplay *disp) dri2_dpy->fd_display_gpu = dri2_dpy->fd_render_gpu; - dev = _eglFindDevice(dri2_dpy->fd_render_gpu, false); - if (!dev) { - err = "DRI2: failed to find EGLDevice"; + if (!dri2_setup_device(disp, false)) { + err = "DRI2: failed to setup EGLDevice"; goto cleanup; } - disp->Device = dev; - if (!dri2_setup_extensions(disp)) { err = "DRI2: failed to setup extensions"; goto cleanup; diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index ec492d5e76d..2f15ee7a47a 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -579,7 +579,6 @@ get_fd_render_gpu_drm(struct gbm_dri_device *gbm_dri, int fd_display_gpu) EGLBoolean dri2_initialize_drm(_EGLDisplay *disp) { - _EGLDevice *dev; struct gbm_device *gbm; const char *err; struct dri2_egl_display *dri2_dpy = dri2_display_create(); @@ -640,14 +639,11 @@ dri2_initialize_drm(_EGLDisplay *disp) goto cleanup; } - dev = _eglFindDevice(dri2_dpy->fd_render_gpu, dri2_dpy->gbm_dri->software); - if (!dev) { - err = "DRI2: failed to find EGLDevice"; + if (!dri2_setup_device(disp, dri2_dpy->gbm_dri->software)) { + err = "DRI2: failed to setup EGLDevice"; goto cleanup; } - disp->Device = dev; - dri2_dpy->driver_name = strdup(dri2_dpy->gbm_dri->driver_name); if (!dri2_load_driver_dri3(disp)) { diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 8922a1e1a8b..ea54c5434cc 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -2161,7 +2161,6 @@ dri2_initialize_wayland_drm_extensions(struct dri2_egl_display *dri2_dpy) static EGLBoolean dri2_initialize_wayland_drm(_EGLDisplay *disp) { - _EGLDevice *dev; struct dri2_egl_display *dri2_dpy = dri2_display_create(); if (!dri2_dpy) return EGL_FALSE; @@ -2205,14 +2204,11 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) loader_get_user_preferred_fd(&dri2_dpy->fd_render_gpu, &dri2_dpy->fd_display_gpu); - dev = _eglFindDevice(dri2_dpy->fd_render_gpu, false); - if (!dev) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); + if (!dri2_setup_device(disp, false)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); goto cleanup; } - disp->Device = dev; - if (dri2_dpy->fd_render_gpu != dri2_dpy->fd_display_gpu) { free(dri2_dpy->device_name); dri2_dpy->device_name = @@ -2730,7 +2726,6 @@ static const __DRIextension *swrast_loader_extensions[] = { static EGLBoolean dri2_initialize_wayland_swrast(_EGLDisplay *disp) { - _EGLDevice *dev; struct dri2_egl_display *dri2_dpy = dri2_display_create(); if (!dri2_dpy) return EGL_FALSE; @@ -2776,14 +2771,11 @@ dri2_initialize_wayland_swrast(_EGLDisplay *disp) if (disp->Options.Zink) dri2_initialize_wayland_drm_extensions(dri2_dpy); - dev = _eglFindDevice(dri2_dpy->fd_render_gpu, true); - if (!dev) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); + if (!dri2_setup_device(disp, true)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); goto cleanup; } - disp->Device = dev; - dri2_dpy->driver_name = strdup(disp->Options.Zink ? "zink" : "swrast"); if (!dri2_load_driver_swrast(disp)) goto cleanup; diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index a4c64f8fe08..c6d88d03e28 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -1505,7 +1505,6 @@ dri2_x11_setup_swap_interval(_EGLDisplay *disp) static EGLBoolean dri2_initialize_x11_swrast(_EGLDisplay *disp) { - _EGLDevice *dev; struct dri2_egl_display *dri2_dpy = dri2_display_create(); if (!dri2_dpy) return EGL_FALSE; @@ -1513,14 +1512,11 @@ dri2_initialize_x11_swrast(_EGLDisplay *disp) if (!dri2_get_xcb_connection(disp, dri2_dpy)) goto cleanup; - dev = _eglFindDevice(dri2_dpy->fd_render_gpu, true); - if (!dev) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); + if (!dri2_setup_device(disp, true)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); goto cleanup; } - disp->Device = dev; - /* * Every hardware driver_name is set using strdup. Doing the same in * here will allow is to simply free the memory at dri2_terminate(). @@ -1595,7 +1591,6 @@ static const __DRIextension *dri3_image_loader_extensions[] = { static EGLBoolean dri2_initialize_x11_dri3(_EGLDisplay *disp) { - _EGLDevice *dev; struct dri2_egl_display *dri2_dpy = dri2_display_create(); if (!dri2_dpy) @@ -1607,14 +1602,11 @@ dri2_initialize_x11_dri3(_EGLDisplay *disp) if (!dri3_x11_connect(dri2_dpy)) goto cleanup; - dev = _eglFindDevice(dri2_dpy->fd_render_gpu, false); - if (!dev) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); + if (!dri2_setup_device(disp, false)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); goto cleanup; } - disp->Device = dev; - if (!dri2_load_driver_dri3(disp)) goto cleanup; @@ -1705,7 +1697,6 @@ static const __DRIextension *dri2_loader_extensions[] = { static EGLBoolean dri2_initialize_x11_dri2(_EGLDisplay *disp) { - _EGLDevice *dev; struct dri2_egl_display *dri2_dpy = dri2_display_create(); if (!dri2_dpy) return EGL_FALSE; @@ -1716,14 +1707,11 @@ dri2_initialize_x11_dri2(_EGLDisplay *disp) if (!dri2_x11_connect(dri2_dpy)) goto cleanup; - dev = _eglFindDevice(dri2_dpy->fd_render_gpu, false); - if (!dev) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to find EGLDevice"); + if (!dri2_setup_device(disp, false)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); goto cleanup; } - disp->Device = dev; - if (!dri2_load_driver(disp)) goto cleanup; From 62455a9a259040282a9d19494c9cc1fcbb01627c Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 15 Nov 2023 12:56:35 +0100 Subject: [PATCH 148/356] egl: move dri2_setup_device() after dri2_setup_extensions() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dri2_setup_device() will depend on the extensions being set up in the next commit. None of the code in-between depends on disp->Device AFAIU. Signed-off-by: Simon Ser Reviewed-by: Iago Toral Quiroga Reviewed-by: Leandro Ribeiro Tested-by: Iago Toral Quiroga Tested-by: Alejandro Piñeiro Backport-to: 23.3 Part-of: (cherry picked from commit 9b70096f5e9ab7be23abc9154c3fb83b710ccd6b) --- .pick_status.json | 2 +- src/egl/drivers/dri2/platform_android.c | 8 +++---- src/egl/drivers/dri2/platform_drm.c | 10 ++++----- src/egl/drivers/dri2/platform_wayland.c | 20 ++++++++--------- src/egl/drivers/dri2/platform_x11.c | 30 ++++++++++++------------- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index ab982d90fe3..9fc1af0a9e1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -94,7 +94,7 @@ "description": "egl: move dri2_setup_device() after dri2_setup_extensions()", "nominated": true, "nomination_type": 4, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index 476f4cca73c..4fb5621edf8 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -1504,13 +1504,13 @@ dri2_initialize_android(_EGLDisplay *disp) dri2_dpy->fd_display_gpu = dri2_dpy->fd_render_gpu; - if (!dri2_setup_device(disp, false)) { - err = "DRI2: failed to setup EGLDevice"; + if (!dri2_setup_extensions(disp)) { + err = "DRI2: failed to setup extensions"; goto cleanup; } - if (!dri2_setup_extensions(disp)) { - err = "DRI2: failed to setup extensions"; + if (!dri2_setup_device(disp, false)) { + err = "DRI2: failed to setup EGLDevice"; goto cleanup; } diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index 2f15ee7a47a..9ae16f384e2 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -639,11 +639,6 @@ dri2_initialize_drm(_EGLDisplay *disp) goto cleanup; } - if (!dri2_setup_device(disp, dri2_dpy->gbm_dri->software)) { - err = "DRI2: failed to setup EGLDevice"; - goto cleanup; - } - dri2_dpy->driver_name = strdup(dri2_dpy->gbm_dri->driver_name); if (!dri2_load_driver_dri3(disp)) { @@ -677,6 +672,11 @@ dri2_initialize_drm(_EGLDisplay *disp) goto cleanup; } + if (!dri2_setup_device(disp, dri2_dpy->gbm_dri->software)) { + err = "DRI2: failed to setup EGLDevice"; + goto cleanup; + } + dri2_setup_screen(disp); if (!drm_add_configs_for_visuals(disp)) { diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index ea54c5434cc..b86328f3603 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -2204,11 +2204,6 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) loader_get_user_preferred_fd(&dri2_dpy->fd_render_gpu, &dri2_dpy->fd_display_gpu); - if (!dri2_setup_device(disp, false)) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); - goto cleanup; - } - if (dri2_dpy->fd_render_gpu != dri2_dpy->fd_display_gpu) { free(dri2_dpy->device_name); dri2_dpy->device_name = @@ -2245,6 +2240,11 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) if (!dri2_setup_extensions(disp)) goto cleanup; + if (!dri2_setup_device(disp, false)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); + goto cleanup; + } + dri2_setup_screen(disp); dri2_wl_setup_swap_interval(disp); @@ -2771,11 +2771,6 @@ dri2_initialize_wayland_swrast(_EGLDisplay *disp) if (disp->Options.Zink) dri2_initialize_wayland_drm_extensions(dri2_dpy); - if (!dri2_setup_device(disp, true)) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); - goto cleanup; - } - dri2_dpy->driver_name = strdup(disp->Options.Zink ? "zink" : "swrast"); if (!dri2_load_driver_swrast(disp)) goto cleanup; @@ -2788,6 +2783,11 @@ dri2_initialize_wayland_swrast(_EGLDisplay *disp) if (!dri2_setup_extensions(disp)) goto cleanup; + if (!dri2_setup_device(disp, true)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); + goto cleanup; + } + dri2_setup_screen(disp); dri2_wl_setup_swap_interval(disp); diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index c6d88d03e28..6af987ed7ad 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -1512,11 +1512,6 @@ dri2_initialize_x11_swrast(_EGLDisplay *disp) if (!dri2_get_xcb_connection(disp, dri2_dpy)) goto cleanup; - if (!dri2_setup_device(disp, true)) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); - goto cleanup; - } - /* * Every hardware driver_name is set using strdup. Doing the same in * here will allow is to simply free the memory at dri2_terminate(). @@ -1536,6 +1531,11 @@ dri2_initialize_x11_swrast(_EGLDisplay *disp) if (!dri2_setup_extensions(disp)) goto cleanup; + if (!dri2_setup_device(disp, true)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); + goto cleanup; + } + dri2_setup_screen(disp); if (disp->Options.Zink) { @@ -1602,11 +1602,6 @@ dri2_initialize_x11_dri3(_EGLDisplay *disp) if (!dri3_x11_connect(dri2_dpy)) goto cleanup; - if (!dri2_setup_device(disp, false)) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); - goto cleanup; - } - if (!dri2_load_driver_dri3(disp)) goto cleanup; @@ -1621,6 +1616,11 @@ dri2_initialize_x11_dri3(_EGLDisplay *disp) if (!dri2_setup_extensions(disp)) goto cleanup; + if (!dri2_setup_device(disp, false)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); + goto cleanup; + } + dri2_setup_screen(disp); dri2_x11_setup_swap_interval(disp); @@ -1707,11 +1707,6 @@ dri2_initialize_x11_dri2(_EGLDisplay *disp) if (!dri2_x11_connect(dri2_dpy)) goto cleanup; - if (!dri2_setup_device(disp, false)) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); - goto cleanup; - } - if (!dri2_load_driver(disp)) goto cleanup; @@ -1729,6 +1724,11 @@ dri2_initialize_x11_dri2(_EGLDisplay *disp) if (!dri2_setup_extensions(disp)) goto cleanup; + if (!dri2_setup_device(disp, false)) { + _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to setup EGLDevice"); + goto cleanup; + } + dri2_setup_screen(disp); dri2_x11_setup_swap_interval(disp); From 3db740ff6cef5686e242bc897cc774883c609cb3 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 15 Nov 2023 12:59:40 +0100 Subject: [PATCH 149/356] egl: ensure a render node is passed to _eglFindDevice() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _eglFindDevice() will fail if it's not provided a render node: the EGLDevice list only contains one entry per render node, plus the special software device. Passing a primary node for a display-only device will not work. Signed-off-by: Simon Ser Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10142 Reviewed-by: Iago Toral Quiroga Reviewed-by: Leandro Ribeiro Tested-by: Iago Toral Quiroga Tested-by: Alejandro Piñeiro Fixes: 2be404f5571a ("egl: error out if we can't find an EGLDevice in _eglFindDevice()") Part-of: (cherry picked from commit 0f978c34410283558afe9de5dab007f63a763c5e) --- .pick_status.json | 2 +- src/egl/drivers/dri2/egl_dri2.c | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 9fc1af0a9e1..dc34d5f9e05 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -84,7 +84,7 @@ "description": "egl: ensure a render node is passed to _eglFindDevice()", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "2be404f5571ada32d3b2e9cfe9b769846f27d68f", "notes": null diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 3e3ac3c4393..1ad4e9a4273 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1080,8 +1080,31 @@ dri2_setup_device(_EGLDisplay *disp, EGLBoolean software) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); _EGLDevice *dev; + int render_fd; + + /* Extensions must be loaded before calling this function */ + assert(dri2_dpy->mesa); + /* If we're not software, we need a DRM node FD */ + assert(software || dri2_dpy->fd_render_gpu >= 0); + + /* fd_render_gpu is what we got from WSI, so might actually be a lie and + * not a render node... */ + if (software) { + render_fd = -1; + } else if (loader_is_device_render_capable(dri2_dpy->fd_render_gpu)) { + render_fd = dri2_dpy->fd_render_gpu; + } else { + render_fd = dri2_dpy->mesa->queryCompatibleRenderOnlyDeviceFd( + dri2_dpy->fd_render_gpu); + if (render_fd < 0) + return EGL_FALSE; + } + + dev = _eglFindDevice(render_fd, software); + + if (render_fd >= 0 && render_fd != dri2_dpy->fd_render_gpu) + close(render_fd); - dev = _eglFindDevice(dri2_dpy->fd_render_gpu, software); if (!dev) return EGL_FALSE; From 0b3f2e02fbda18e7ac0d0cac1e1997ed53d7fef7 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Fri, 17 Nov 2023 19:52:36 -0500 Subject: [PATCH 150/356] util: Include stdint.h in libdrm.h drmGetDevices2()'s first parameter is a uint32_t. Fixes: e05abb13455 ("util: Add a simple no-op libdrm shim") Part-of: (cherry picked from commit 5022a26b50ef912835049a32ac3904ea77656e43) --- .pick_status.json | 2 +- src/util/libdrm.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index dc34d5f9e05..68d0a5076f5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -14,7 +14,7 @@ "description": "util: Include stdint.h in libdrm.h", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "e05abb1345530433681e2a4965588e4e2f51380b", "notes": null diff --git a/src/util/libdrm.h b/src/util/libdrm.h index 900f2f3b6bb..cc153cf88ab 100644 --- a/src/util/libdrm.h +++ b/src/util/libdrm.h @@ -32,6 +32,7 @@ #else #include +#include #define DRM_NODE_PRIMARY 0 #define DRM_NODE_CONTROL 1 From 1a198151650e6f29c4b5e58e5542ece50ce9251e Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 22 Nov 2023 08:39:48 +0000 Subject: [PATCH 151/356] .pick_status.json: Update to f39ed0063b4cd3e5a71efad2d43ce31f574c698d --- .pick_status.json | 1620 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1620 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 68d0a5076f5..984fa213f54 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,1624 @@ [ + { + "sha": "f39ed0063b4cd3e5a71efad2d43ce31f574c698d", + "description": "radv/ci: add missing expected failures for mesh queries on VANGOGH", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "b975d4e8004a68c821d8592adbd0b1402adbbd03", + "notes": null + }, + { + "sha": "d3e3c30d36728f5331615b402eaed3cd7d45cb24", + "description": "anv: implement Wa_18020335297", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "418299c120eaa034926780335c7207d9611cf30c", + "description": "anv: refactor state emission", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4031443a4a6269a5e42ae53c6473e669f97a1d5d", + "description": "iris: implement Wa_18020335297", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "73317bb7065f5b8e2751ffd2c3821f300db0348b", + "description": "nvk: use nvk_pipeline_zalloc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "90dc83fc9f52f89cd792cb2fea2e773e99bb7913", + "description": "radeonsi: add missing args in spi_ps_input_ena when fbfetch output", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5b45304624470bc36211b2e54590d7136ac4da45", + "description": "nvk: Implement VK_EXT_primitives_generated_query", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7bda83bdfc36f425d18b966a62282b032915260b", + "description": "nvk: Disable flush on each queries and flush at the end", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0fa85b983f7fb0395d2ff8d7dc3a4c74baa75927", + "description": "mesa/st, dri2, wgl, glx: Restore flush_objects interop backward compat", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "1396dc1c387a9f9a8b16ad358ee12a025159cc98", + "notes": null + }, + { + "sha": "76b751c3b1e74dd81a8167f507243a01c0e16371", + "description": "mesa/st: use pipe_shader_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0abf4af443aed0d376b936268cff5e56226e4c93", + "description": "mesa/st: collapse tgsi deadcode", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "301f57a17ce73ba82e49b55837bbe7422265a113", + "description": "gallium: drop pipe_shader_state_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2e56be8e34612d8081b13b73b8be5eb5c6f341d0", + "description": "panfrost: use pipe_shader_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e84302f7634bf0ca32dde0ed695f4f07e4f799b2", + "description": "nouveau: use pipe_shader_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "de1245417a0b28e487612ebb851ed2be02f85754", + "description": "zink: use pipe_shader_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8d6f4427d22fc60f0a500936471aab41e55879fe", + "description": "vc4: use pipe_shader_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4698eb3875a67aff773ef50c84cefd5ec9cf8bea", + "description": "asahi: use pipe_shader_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2054062646312e7c45d0108189b3deef7b1ca4f", + "description": "v3d: use pipe_shader_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dfa60b70e631f308523e8dca7ea68c84b166bc27", + "description": "radeonsi: use pipe_shader_from_nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "645ba24e7b8bf6bf29fa1955d84925ec72ffc7e5", + "description": "gallium: add pipe_shader_from_nir helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5ec6dcce5f603dd6fb7e10ccf5b08e7ba5058178", + "description": "docs: update nvk extensions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea5925461b2858f20392853298d014ee91054c97", + "description": "microsoft/compiler: Fix lower_mem_access_bit_size callback result", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c69ca8c5c1ff2b19f520e4313ae6682887884ae2", + "description": "nir_lower_mem_access_bit_sizes: Fix assert (bit -> byte size)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "81387ed131cda3d47ecfe0d43cfce431ec6cce61", + "description": "nvk/codegen: Fragment shader builtins are noperspective", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "354cf99869262e64e7c9800c17a864e845e0f7d2", + "description": "nak: gl_FragCoord and gl_PointCoord are screen-space interpolated", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "c47488341ec39527af9e153aaaf918edcabd801d", + "notes": null + }, + { + "sha": "e8220b9319895318132c4f72b857b0910220a52d", + "description": "intel/compiler: Simplify allocation of NIR related arrays", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0a5d3ac8d2b245e8b3f3589d3ade3de7356fe637", + "description": "aco/sched: treat p_dual_src_export_gfx11 like export", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b975d4e8004a68c821d8592adbd0b1402adbbd03", + "description": "radv: enable meshShaderQueries on GFX10.3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6c7265338d175224dd7899d326e33b769f3e743d", + "description": "radv: add support for task shader invocations queries on GFX10.3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "623b7033c56e166fc5b452d4ec6098a6a9079918", + "description": "radv: make some gang functions non-static", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b3efecd568fa8bb1371e96604ae14d7e3dc2f27", + "description": "radv: rework gfx10_copy_gds_query() slightly", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b7d668a819d896f66502d3efb6999ce264415b25", + "description": "radv: add support for mesh shader invocations queries on GFX10.3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "48aabaf225f3ebf0bada2fe820d2c0f6288a3ca5", + "description": "radv: do not harcode the pipeline stats mask for query resolves", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "272ad6539798711eab8ed672688d5db53139f6ab", + "description": "radv: bump the pipeline state query size to 14 on GFX10.3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7b13500a9968d84291578e03bb3f3d48d24314bf", + "description": "radv: define new pipeline statistics indices for mesh/task on GFX11", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2b93e9a02b5f8737f3d69957f10b7ea76d4df9e2", + "description": "radv: add support for mesh primitives queries on GFX10.3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bc6d29b0ca054d13fa2fef40fe7ac6317a52177e", + "description": "radv: add radv_physical_device::emulate_mesh_shader_queries for GFX10.3", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a1609d76ee8940df1839b374540c0d83c054e587", + "description": "Revert \"ci/deqp-runner: turn paths in errors into links\"", + "nominated": false, + "nomination_type": 2, + "resolution": 4, + "main_sha": null, + "because_sha": "d173584b6e41f64ba96530869c17f4fd5cbdbb98", + "notes": null + }, + { + "sha": "6be6b4ca711b157d0d92b4942b19eb74e71ed04f", + "description": "tu: Fix re-emitting VS param state after it is re-enabled", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "aba00ff391b9fe9e63e2a8b6ad807f338ad7a6a6", + "description": "drirc: Set limit_trig_input_range option for Valheim", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7d1cc5ec3da64b607ada2b92555548aa045914e5", + "description": "radv: rename ps_epilog_inputs to colors for PS epilogs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e1345c5295d37494d5a60d7fc0285c175a5dd953", + "description": "aco: rename color_exports to exports in create_fs_jump_to_epilog()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "12f6279c3913d3350d5b492cc7b4928c36041de2", + "description": "nak: Two more print fixes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "eb75be66e92dd9bce01fb2c8cb78dd090cf925d2", + "description": "freedreno,tu: Add env vars to modify fd_dev_info", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "17827ef24c6034756575c3879df8d6cee66fb368", + "description": "freedreno,tu,ir3: Pass fd_dev_info into ir3_compiler_create", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e6bfe42b6e2b0243627d6c98cdb52073084213da", + "description": "freedreno/devices: Separate device definition into base + gen features", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4382bd8a3438638bc69453513a835c52c8890108", + "description": "nir: simplify nir_build_write_masked_store()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0470f8f73714804bb97661adecb0519fd2190f33", + "description": "glsl: remove now unused lower distance pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "33c2b64aa33ed8ca5da31288d741cf89b38ab69a", + "description": "glsl: switch to NIR distance lowering pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "110887de2bd9b3e57d87bfc1af4bcd1b8e2de6a0", + "description": "glsl/nir: implement a nir based lower distance pass", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "95da0a9c96221238d6f1e4d6ff8b31077b5beaa1", + "description": "nir: move build_write_masked_stores() to nir builder", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6a810b0ba82384d2cdaee94e8019e57b96cff700", + "description": "intel: Improve N-way pixel hashing computation to handle pixel pipes with asymmetric processing power.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9033df070e47de9b9ecafdc069fa5b7718b6dcf0", + "description": "nak: Rework printing of texture and image dims", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3a20beab03d24eb992b1ea8e20b563c22ab9d801", + "description": "nak: Display memory type at the end for load/store ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6f76f4db9f500d37a8666223ae6c8d108cdd9c91", + "description": "nak: Make MemAddrType a part of MemSpace", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6c861c3cc20177ccf581fc452bcd7417a64bd713", + "description": "nak: Display memory access bits with the \".\" prefix", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3d2104dd5d0dbc007a6567cdbd5ae4572d852ae8", + "description": "nak: Align instructions when printing", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "32d6720bb0a2fbd1503973391c66ce1edc579971", + "description": "nak: Only write deps.delay when set", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3f027f7dccc76383501104780ad29a0a93c364b2", + "description": "nak: Default InstrDeps::delay to 0", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "58c8391f97170ea2167ed496a8510dd31611e2ea", + "description": "nak: Implement DisplayOp on Op instead of Display", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9d1afb75332097c4b0bd0e0af76b14c5f3e132dc", + "description": "nak: Rework opcode printing to use a new trait", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "503c4b1d5dedd01b4c9d57697660fcf4be2ff3be", + "description": "nak: Make most Display stuff lower-case", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2897b9dcee292b3e285658f0cb6cf62b00a4f744", + "description": "nak: Rework reg and SSA value printing", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2e3027e7d12164cd277519eb960e53c7e6f3b273", + "description": "docs: document AMD_DEBUG=noefc and useaco", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "16a270f646e3f83ba095acc90d055807a7f405df", + "description": "radv: disable TC-compat htile on GFX9 in some cases", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d173584b6e41f64ba96530869c17f4fd5cbdbb98", + "description": "ci/deqp-runner: turn paths in errors into links", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1ff4687e866043f938fa5d4b14f79393b8361ec7", + "description": "ci: uprev deqp-runner from 0.16.1 to 0.18.0", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5efa4d56e2b7f2440d263ffb794ab3247d70d529", + "description": "ci: fix kdl commit fetch", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "205c5874d4bcb3a86062928c9c6f20d797ef4f76", + "description": "intel: Sync xe_drm.h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e4ffb2473b59dd98ea0b400a47b6b50beda3dbf2", + "description": "d3d12: Implement get_feedback with additional metadata", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8c1ba75f689451da4c07547cf6a68af8359b0ac3", + "description": "d3d12: Support PIPE_VIDEO_CAP_ENC_H264_DISABLE_DBK_FILTER_MODES_SUPPORTED", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c81967fa89d918e11107cc787ae70bf32cc56a56", + "description": "d3d12: Implement Intra Refresh for H264, HEVC, AV1", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a5607066484b2e9495064344410416f4697f3fbe", + "description": "d3d12: Implement HEVC VUI Writer", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fdc8b7cdc4ad07c8055e937015d1e71c07a2493b", + "description": "d3d12: Implement H264 VUI Writer", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cf8cbf0647afc6fad4d964a9e0b24be0f4a2eef0", + "description": "d3d12: Disable codecs according to meson video-codecs option", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "84c0448b363b06c0c5f69b7809c97025a6f9d837", + "description": "d3d12: Add constraint_set1_flag support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d6bb4ddc638f3ee37fbbe066c631dad80aaeb2d3", + "description": "d3d12: Video Encode - Remove PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE as not supported", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "151ebf8ec3a79db0207e63c179788d34890475fb", + "description": "d3d12: Use log2_max_frame_num_minus4 and log2_max_pic_order_cnt_lsb_minus4 from pipe_pic_params_h264", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "34961b11183fb4ac21e584a0b72d9d43c922c051", + "description": "d3d12: Plumb pipe_h264_enc_picture_desc.dbk.disable_deblocking_filter_idc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "527def0171b0eeaa66ddfe7d0b82ee8b29cd2837", + "description": "gallium/vl: Check for VP9 and AV1 meson option support flags", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7b22dd8bfdc380be2e4037c1207fcb30a46ad296", + "description": "meson: add vp9 and av1 codec support options", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "870570ee668178a7bdbe7073f691dfaf53784eae", + "description": "frontend/va: Support VAEncMiscParameterMaxSliceSize", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ec4021b3c22ab6d19e21667019a2be73d89a41e3", + "description": "frontend/va: Parse VUI HEVC parameters", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4637f1db482376930f304dae833e40837341cae7", + "description": "frontend/va: Parse VUI H264 parameters", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bee4a3683c7e8ed5b75a664a7b8ef71bcdb9a99f", + "description": "frontend/va: Add log2_max_frame_num_minus4 and log2_max_pic_order_cnt_lsb_minus4 for h264enc", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9ce17de1fdae3099d195a0cd5620644275a4a88d", + "description": "pipe: Add max_slice_bytes for H264, HEVC encoding", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6b4010b9062957cfbf0ac694b09d477b1605a13c", + "description": "pipe: Add HEVC VUI encode params", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0c312c5c59c6e9215dc609db06f4ef5577638ba1", + "description": "pipe: Add H264 VUI encode params", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "10eb9296fe1437035932d8ebb4f6b087dc4da3f6", + "description": "pipe: Add PIPE_VIDEO_CAP_ENC_INTRA_REFRESH_MAX_DURATION", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "44a3bfcc67ccc22c7d0e79a8c5c33a8fedbb432f", + "description": "pipe: Add PIPE_VIDEO_CAP_ENC_H264_DISABLE_DBK_FILTER_MODES_SUPPORTED", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "be4287c3aa06b7f22ba83696108759f5fcd58323", + "description": "pipe: Extend get_feedback with additional metadata", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e6d754f183d21f5f9488c1e77cb23763c49f9b90", + "description": "gallium/auxiliary: Fix pb_bufmgr_slab.c leak", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "695201fe94a2ee4197f4256c407e2d4e83223092", + "description": "vl/win32: Add vl_win32_screen_create_from_d3d12_device", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e7204d02240977ce3c602bafdd0ee0a47eea67b4", + "description": "d3d12: Allow creating d3d12_dxcore_screen from existing ID3D12Device", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9657ef95b4932fa01f0aa2cd2d602094eb021255", + "description": "iris: use helper util_resource_at_index", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bc3bec76c0d4c1fc41a7b6bc9152fd7e81fdd033", + "description": "panfrost: Add a JOBX() macro to simplify job-frontend selection", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9dd4c5b4e60eee23c6cf463d2398a615f6fa1cfd", + "description": "panfrost: Move JM helpers to their own source file", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5e5a766a815bc62a68f41d7083272f2e92ff7170", + "description": "panfrost: Prepare things for the common/JM cmdstream split", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "635385a807aa5b1b6428b6cd30bd952450ff5230", + "description": "panfrost: s/init_batch/jm_init_batch/", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a0b38c4827456422fe42f04b92322588e05f9a53", + "description": "panfrost: s/preload/jm_preload_fb/", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2558a12633d601c1a3df30eb49c642419a3aece2", + "description": "panfrost: Rename JM-specific batch submission helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1dfc9ca3cf92549e6e2a1a38739862815eb803f4", + "description": "panfrost: s/panfrost_emit_primitive/jm_emit_primitive/", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fb2d2410bd8d218ecf80b1fa5616f0f01aeb4ff9", + "description": "panfrost: s/panfrost_emit_shader/jm_emit_shader_env/", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "50898556e0b9a4c0fec983cf1ce73764aa7be9d7", + "description": "panfrost: Rename panfrost_batch_get_bifrost_tiler()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5225eeb4b116f96edd0963b0a45ecc1a2ad48a8e", + "description": "panfrost: Drop the vertex_count argument passed to panfrost_batch_get_bifrost_tiler()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e44dae6cdbfc88c4d42a26c69d7c9b1d70d288a6", + "description": "panfrost: Move JM specific bits out of panfrost_launch_xfb()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6ed0968d3daef7a78fe32b051950af69b7992d58", + "description": "panfrost: Move JM-specific bits out of panfrost_launch_grid_on_batch()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0e168f2defba09bc918011e511293380739ba147", + "description": "panfrost: Use batch->tls.gpu to store the compute TLS descriptor", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9592b61883e63be43dcca3cf3366de2f07b3cd52", + "description": "panfrost: Move all JM-specific bits out of panfrost_direct_draw()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "691d9747e56189d6c54c6e8ad137d6edebc74d71", + "description": "panfrost: Re-order things in panfrost_direct_draw()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "172d4bccd29c71f21ed1d5fec524cd7bb9608cad", + "description": "panfrost: Factor out the vertex count logic", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f167e2facf9ba91f2a754c7a812af21e95e5e628", + "description": "panfrost: Factor out the point-sprite shader update logic", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "782dc11791f4cfd2e8c70383929acf7f7733c5ca", + "description": "panfrost: Rename several job emission helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e25b8d07b8b9b6c03ef0eab999b28bc11ae4264f", + "description": "panfrost: Move the JM-specific bits out of emit_fragment_job()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "04f4c39a4e8f1bd53270a89d11bd1d3d8f4f9bec", + "description": "panfrost: s/panfrost_emit_vertex_tiler_jobs/jm_push_vertex_tiler_jobs/", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "44bd7067b7776ba50e34f8e72baea0fc7397f7f6", + "description": "panfrost: Move JM specific fields to their own struct", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9de3ff9a784869c5b6c13aba1b741d274a625247", + "description": "panfrost: Add panfrost_get_{position,varying}_shader() helpers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f53c37892abd4c0cf70ad4ae4a19328f0a122fe7", + "description": "panfrost: Factor out vertex attribute stride calculation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ea72a0bec6e0593c8e5cf971124cb8d08ce7bb48", + "description": "panfrost: Add an allow_rotating_primitives() helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e81f99134ee2c9681bbea9694db6676dfa147ae3", + "description": "panfrost: Use u_reduced_prim() to do the is_line check", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a183b8c49542c5c3a4e2f8c95c6f32dc23593081", + "description": "panfrost: Store varying related fields in panfrost_batch", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "19d5963c5720bc124edb92e1eb4d70cc07adc45c", + "description": "panfrost: Stop passing vertex attribute arrays around", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a0d0e07036197aaa2eada53a1c6760407128b401", + "description": "panfrost: Store the index pointer in panfrost_batch", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d618a465903c0a2441769ed7528da4c22fc16e59", + "description": "panfrost: Add a submit_batch() hook to panfrost_vtable", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "46fc7d2dc93028b6e02612583b97f26163d63a7d", + "description": "panfrost: Get rid of unused fb parameter passed to panfrost_batch_submit_jobs()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "070bdd14baee8d75a41bb896420838ad251f63b9", + "description": "panfrost: Get rid of the out_sync parameter in panfrost_batch_submit_jobs()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "34512fabb47762ecc6cb364ddec875c8aa6fab19", + "description": "panfrost: Get rid of unused in_sync parameter in panfrost_batch_submit[_ioctl]()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7b6e959b731bc0013b0def916c5212a2d9d7e204", + "description": "panfrost: Move the panfrost_emit_tile_map() call around", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "037e7a530cdd07125e270db76d2cb0bb7a6c3572", + "description": "panfrost: Emit the fragment job from panfrost_batch_submit()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a4f037bd6d1d25117995c3432ddbf3d1ad840e76", + "description": "panfrost: Store the fragment job descriptor address in the batch", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d3b7b8c8071f3d3cb6ceee5c76f3118ecdb08bc5", + "description": "panfrost: Stop using the scoreboard to check the presence of draws/compute", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9b2e78b003396eb4ef7231150618ded374ad3c85", + "description": "panfrost: Make panfrost_has_fragment_job() public", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ab18d0709a408d307de92147c5ad051c9cb10a2c", + "description": "panfrost: Count the number of compute jobs at the batch level", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f16312c01b825b723b25da8ea895ceca01a97484", + "description": "panfrost: Express the per-batch limit in term of draws", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "539e5e435c1ab7fdacdb5d0be752e0e21ad9d50e", + "description": "panfrost: Count draws at the batch level", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "948062ee84dab8f8bf742f76b108ab0b481a6578", + "description": "panfrost: Inline pan_emit_tiler_ctx()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b378cfbc484f679e81b84dddfb68dfab14872cac", + "description": "panfrost: Inline pan_emit_tiler_heap()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "708a3a33a85e8b7af0a342f3d3a5028028135bdc", + "description": "panfrost: Rename panfrost_vtable::context_init", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9a53cca85a09f7fc2187c6e047bcd41832dd3424", + "description": "panfrost: do not open-code panfrost_has_fragment_job()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f9bab3566bcfbf4d33bcbb9fb8d5e8d416cb5674", + "description": "intel/perf: fix querying of configurations", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "46c91281171a86d25578f2d9a948010e50a02f1e", + "description": "amd/ci: track changes to the traces config file as well", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4de3ce1f2cce4ea644988078814bd7f77217b154", + "description": "ci/piglit: specify only the traces file in the job config", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "653405ee08e76173f8640adaa1e46de94f5bafa4", + "description": "mesa: add managarm support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0e68dd1a522380d0c4e59902be6f22c13c493c07", + "description": "drirc: use fake_sparse for Armored Core 6", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "29990912877df91d3854bc10710cfe3974a8b935", + "description": "ci/ci_run_n_monitor: abort when target gets skipped", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3d53022e6807b6d8f017541910a842b4a71a8804", + "description": "asahi: use util_resource_num() instead of open-coding it", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8191acd41e007a11512c1c984f87172833e2a7c5", + "description": "broadcom/compiler: update image store lowering to use v71 new packing/conversion instructions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c0cfa4f53bafca6cda90f64bd102f22a812c7f4c", + "description": "nir: add new opcodes to map new v71 packing/conversion instructions", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fc044928b29172fa1659ecaba97aec05edc86563", + "description": "radv: re-enable sparseResidencyImage3D on POLARIS10+", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e02a1f0a4456d6556b3a76105dd1c45c3829288f", + "description": "ac/surface: change tile mode for 3D PRT surfaces with bpp < 64 on GFX6-8", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e3afbd5c282265e4c5ae8a4b822f1d007f1e3bf9", + "description": "nir: Fix decomposed_prmcnt copy-paste error", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "cc3f20ca6c159c09bb06d4c6db0a499a853c1a54", + "notes": null + }, + { + "sha": "1fabf535faae9ec651a0574247e885f9cdcbdaad", + "description": "aco: handle GL_TEXTURE_RECTANGLE in tg4_integer_workarounds", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "695fc67baa342a2e4c0f112fc851d8341a77b549", + "description": "aco: set MIMG unrm for GL_TEXTURE_RECTANGLE", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dbbf566588cedc72062f3d3640a0cf1bebd40af9", + "description": "aco,ac/llvm,radeonsi: lower f2f16 to f2f16_rtz in nir", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7e4aac46ad41c7b928061552d4f48bc67c931f4b", + "description": "nir: add force_f2f16_rtz option to lower f2f16 to f2f16_rtz", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "56967904205c894c271ef28b7d37dcd5ba01819c", + "description": "ac/llvm: remove nir_op_*2*mp ops handling", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "909895ae2a377758812e3ac3098e97e21f952393", + "description": "radeonsi: only vectorize nir ops that aco support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5932990e08e6f8126ff1b6daee3391dda2a6a1ef", + "description": "aco,radv: add aco_is_nir_op_support_packed_math_16bit", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "10367618da072afc4f19c21ab9b599a23dd5a762", + "description": "gallivm/nir: Load all inputs into indirect inputs array", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "898700ca647b2de0eecff864b6b0a4cbeb935840", + "description": "v3dv: Rework to remove drm authentication for wsi", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "88c03ddd345fe6b0cd16c11cb5c5309f8d7d16ff", + "notes": null + }, + { + "sha": "2091515a70a07c3e4b80cb7637a2194790e285bb", + "description": "gallium: Do not create pipe-loader version scripts for disabled drivers", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "667de678a064da449969f2fa3da4aff850d91cf4", + "notes": null + }, + { + "sha": "b2da38413f5aaef0c225dcf730cfcd0d338d2f3e", + "description": "gallium: Fix i915 pipe-loader build", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "667de678a064da449969f2fa3da4aff850d91cf4", + "notes": null + }, { "sha": "f05688aa3299a27430119b27e45181a6f415bff8", "description": "util: Provide DRM_DEVICE_GET_PCI_REVISION definition", From 16361af817e79e24147523e1481a36ccc8f8954a Mon Sep 17 00:00:00 2001 From: Erico Nunes Date: Thu, 16 Nov 2023 17:00:16 +0100 Subject: [PATCH 152/356] v3dv: Rework to remove drm authentication for wsi For Wayland wsi allocations, v3dv used the wl_drm protocol, which is now being phased out in favor of dmabuf feedback. wl_drm is used to figure out the display device (in v3dv assumed to be vc4) and then to authenticate with the Wayland compositor in order to allocate scanout-able buffers (in this case, dumb buffers) directly at the display device. Recent commit 88c03ddd34 changed the behavior of the wsi code, and wl_drm is now passing the render device instead, which broke Wayland wsi. It turns out that the authentication code is not really needed and since we would like to remove wl_drm usage and the master device is assumed to be vc4 anyway, we can just remove some unneeded device-specific wsi code and get Vulkan Wayland wsi back to work. Fixes: 88c03ddd345 ("egl/drm: get compatible render-only device fd for kms-only device") Signed-off-by: Erico Nunes Reviewed-by: Iago Toral Quiroga Part-of: (cherry picked from commit 898700ca647b2de0eecff864b6b0a4cbeb935840) --- .pick_status.json | 2 +- src/broadcom/vulkan/v3dv_device.c | 295 +---------------------------- src/broadcom/vulkan/v3dv_private.h | 4 - src/broadcom/vulkan/v3dv_wsi.c | 79 +------- 4 files changed, 12 insertions(+), 368 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 984fa213f54..b78e6533a4f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1594,7 +1594,7 @@ "description": "v3dv: Rework to remove drm authentication for wsi", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "88c03ddd345fe6b0cd16c11cb5c5309f8d7d16ff", "notes": null diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 60c55120fe6..027c35ffe80 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -553,8 +553,6 @@ physical_device_finish(struct v3dv_physical_device *device) close(device->render_fd); if (device->display_fd >= 0) close(device->display_fd); - if (device->master_fd >= 0) - close(device->master_fd); free(device->name); @@ -636,273 +634,6 @@ compute_memory_budget(struct v3dv_physical_device *device) return MIN2(heap_size, heap_used + heap_available); } -#if !using_v3d_simulator -#ifdef VK_USE_PLATFORM_XCB_KHR -static int -create_display_fd_xcb(VkIcdSurfaceBase *surface) -{ - int fd = -1; - - xcb_connection_t *conn; - xcb_dri3_open_reply_t *reply = NULL; - if (surface) { - if (surface->platform == VK_ICD_WSI_PLATFORM_XLIB) - conn = XGetXCBConnection(((VkIcdSurfaceXlib *)surface)->dpy); - else - conn = ((VkIcdSurfaceXcb *)surface)->connection; - } else { - conn = xcb_connect(NULL, NULL); - } - - if (xcb_connection_has_error(conn)) - goto finish; - - const xcb_setup_t *setup = xcb_get_setup(conn); - xcb_screen_iterator_t iter = xcb_setup_roots_iterator(setup); - xcb_screen_t *screen = iter.data; - - xcb_dri3_open_cookie_t cookie; - cookie = xcb_dri3_open(conn, screen->root, None); - reply = xcb_dri3_open_reply(conn, cookie, NULL); - if (!reply) - goto finish; - - if (reply->nfd != 1) - goto finish; - - fd = xcb_dri3_open_reply_fds(conn, reply)[0]; - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); - -finish: - if (!surface) - xcb_disconnect(conn); - if (reply) - free(reply); - - return fd; -} -#endif - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR -struct v3dv_wayland_info { - struct wl_drm *wl_drm; - int fd; - bool is_set; - bool authenticated; -}; - -static void -v3dv_drm_handle_device(void *data, struct wl_drm *drm, const char *device) -{ - struct v3dv_wayland_info *info = data; - info->fd = open(device, O_RDWR | O_CLOEXEC); - info->is_set = info->fd != -1; - if (!info->is_set) { - fprintf(stderr, "v3dv_drm_handle_device: could not open %s (%s)\n", - device, strerror(errno)); - return; - } - - drm_magic_t magic; - if (drmGetMagic(info->fd, &magic)) { - fprintf(stderr, "v3dv_drm_handle_device: drmGetMagic failed\n"); - close(info->fd); - info->fd = -1; - info->is_set = false; - return; - } - wl_drm_authenticate(info->wl_drm, magic); -} - -static void -v3dv_drm_handle_format(void *data, struct wl_drm *drm, uint32_t format) -{ -} - -static void -v3dv_drm_handle_authenticated(void *data, struct wl_drm *drm) -{ - struct v3dv_wayland_info *info = data; - info->authenticated = true; -} - -static void -v3dv_drm_handle_capabilities(void *data, struct wl_drm *drm, uint32_t value) -{ -} - -struct wl_drm_listener v3dv_drm_listener = { - .device = v3dv_drm_handle_device, - .format = v3dv_drm_handle_format, - .authenticated = v3dv_drm_handle_authenticated, - .capabilities = v3dv_drm_handle_capabilities -}; - -static void -v3dv_registry_global(void *data, - struct wl_registry *registry, - uint32_t name, - const char *interface, - uint32_t version) -{ - struct v3dv_wayland_info *info = data; - if (strcmp(interface, wl_drm_interface.name) == 0) { - info->wl_drm = wl_registry_bind(registry, name, &wl_drm_interface, - MIN2(version, 2)); - wl_drm_add_listener(info->wl_drm, &v3dv_drm_listener, data); - }; -} - -static void -v3dv_registry_global_remove_cb(void *data, - struct wl_registry *registry, - uint32_t name) -{ -} - -static int -create_display_fd_wayland(VkIcdSurfaceBase *surface) -{ - struct wl_display *display; - struct wl_registry *registry = NULL; - - struct v3dv_wayland_info info = { - .wl_drm = NULL, - .fd = -1, - .is_set = false, - .authenticated = false - }; - - if (surface) - display = ((VkIcdSurfaceWayland *) surface)->display; - else - display = wl_display_connect(NULL); - - if (!display) - return -1; - - registry = wl_display_get_registry(display); - if (!registry) { - if (!surface) - wl_display_disconnect(display); - return -1; - } - - static const struct wl_registry_listener registry_listener = { - v3dv_registry_global, - v3dv_registry_global_remove_cb - }; - wl_registry_add_listener(registry, ®istry_listener, &info); - - wl_display_roundtrip(display); /* For the registry advertisement */ - wl_display_roundtrip(display); /* For the DRM device event */ - wl_display_roundtrip(display); /* For the authentication event */ - - wl_drm_destroy(info.wl_drm); - wl_registry_destroy(registry); - - if (!surface) - wl_display_disconnect(display); - - if (!info.is_set) - return -1; - - if (!info.authenticated) - return -1; - - return info.fd; -} -#endif - -/* Acquire an authenticated display fd without a surface reference. This is the - * case where the application is making WSI allocations outside the Vulkan - * swapchain context (only Zink, for now). Since we lack information about the - * underlying surface we just try our best to figure out the correct display - * and platform to use. It should work in most cases. - */ -static void -acquire_display_device_no_surface(struct v3dv_physical_device *pdevice) -{ -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - pdevice->display_fd = create_display_fd_wayland(NULL); -#endif - -#ifdef VK_USE_PLATFORM_XCB_KHR - if (pdevice->display_fd == -1) - pdevice->display_fd = create_display_fd_xcb(NULL); -#endif - -#ifdef VK_USE_PLATFORM_DISPLAY_KHR - if (pdevice->display_fd == - 1 && pdevice->master_fd >= 0) - pdevice->display_fd = dup(pdevice->master_fd); -#endif -} - -/* Acquire an authenticated display fd from the surface. This is the regular - * case where the application is using swapchains to create WSI allocations. - * In this case we use the surface information to figure out the correct - * display and platform combination. - */ -static void -acquire_display_device_surface(struct v3dv_physical_device *pdevice, - VkIcdSurfaceBase *surface) -{ - /* Mesa will set both of VK_USE_PLATFORM_{XCB,XLIB} when building with - * platform X11, so only check for XCB and rely on XCB to get an - * authenticated device also for Xlib. - */ -#ifdef VK_USE_PLATFORM_XCB_KHR - if (surface->platform == VK_ICD_WSI_PLATFORM_XCB || - surface->platform == VK_ICD_WSI_PLATFORM_XLIB) { - pdevice->display_fd = create_display_fd_xcb(surface); - } -#endif - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - if (surface->platform == VK_ICD_WSI_PLATFORM_WAYLAND) - pdevice->display_fd = create_display_fd_wayland(surface); -#endif - -#ifdef VK_USE_PLATFORM_DISPLAY_KHR - if (surface->platform == VK_ICD_WSI_PLATFORM_DISPLAY && - pdevice->master_fd >= 0) { - pdevice->display_fd = dup(pdevice->master_fd); - } -#endif -} -#endif /* !using_v3d_simulator */ - -/* Attempts to get an authenticated display fd from the display server that - * we can use to allocate BOs for presentable images. - */ -VkResult -v3dv_physical_device_acquire_display(struct v3dv_physical_device *pdevice, - VkIcdSurfaceBase *surface) -{ - VkResult result = VK_SUCCESS; - mtx_lock(&pdevice->mutex); - - if (pdevice->display_fd != -1) - goto done; - - /* When running on the simulator we do everything on a single render node so - * we don't need to get an authenticated display fd from the display server. - */ -#if !using_v3d_simulator - if (surface) - acquire_display_device_surface(pdevice, surface); - else - acquire_display_device_no_surface(pdevice); - - if (pdevice->display_fd == -1) - result = VK_ERROR_INITIALIZATION_FAILED; -#endif - -done: - mtx_unlock(&pdevice->mutex); - return result; -} - static bool v3d_has_feature(struct v3dv_physical_device *device, enum drm_v3d_param feature) { @@ -999,7 +730,7 @@ create_physical_device(struct v3dv_instance *instance, drmDevicePtr display_device) { VkResult result = VK_SUCCESS; - int32_t master_fd = -1; + int32_t display_fd = -1; int32_t render_fd = -1; struct v3dv_physical_device *device = @@ -1073,16 +804,19 @@ create_physical_device(struct v3dv_instance *instance, #endif if (instance->vk.enabled_extensions.KHR_display || + instance->vk.enabled_extensions.KHR_xcb_surface || + instance->vk.enabled_extensions.KHR_xlib_surface || + instance->vk.enabled_extensions.KHR_wayland_surface || instance->vk.enabled_extensions.EXT_acquire_drm_display) { #if !using_v3d_simulator /* Open the primary node on the vc4 display device */ assert(display_device); - master_fd = open(primary_path, O_RDWR | O_CLOEXEC); + display_fd = open(primary_path, O_RDWR | O_CLOEXEC); #else /* There is only one device with primary and render nodes. * Open its primary node. */ - master_fd = open(primary_path, O_RDWR | O_CLOEXEC); + display_fd = open(primary_path, O_RDWR | O_CLOEXEC); #endif } @@ -1091,8 +825,7 @@ create_physical_device(struct v3dv_instance *instance, #endif device->render_fd = render_fd; /* The v3d render node */ - device->display_fd = -1; /* Authenticated vc4 primary node */ - device->master_fd = master_fd; /* Master vc4 primary node */ + device->display_fd = display_fd; /* Master vc4 primary node */ if (!v3d_get_device_info(device->render_fd, &device->devinfo, &v3dv_ioctl)) { result = vk_errorf(instance, VK_ERROR_INITIALIZATION_FAILED, @@ -1196,8 +929,8 @@ create_physical_device(struct v3dv_instance *instance, if (render_fd >= 0) close(render_fd); - if (master_fd >= 0) - close(master_fd); + if (display_fd >= 0) + close(display_fd); return result; } @@ -2253,18 +1986,8 @@ device_alloc_for_wsi(struct v3dv_device *device, #if using_v3d_simulator return device_alloc(device, mem, size); #else - /* If we are allocating for WSI we should have a swapchain and thus, - * we should've initialized the display device. However, Zink doesn't - * use swapchains, so in that case we can get here without acquiring the - * display device and we need to do it now. - */ VkResult result; struct v3dv_physical_device *pdevice = device->pdevice; - if (unlikely(pdevice->display_fd < 0)) { - result = v3dv_physical_device_acquire_display(pdevice, NULL); - if (result != VK_SUCCESS) - return result; - } assert(pdevice->display_fd != -1); mem->is_for_wsi = true; diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h index 9c104b3d6d4..21934d802f8 100644 --- a/src/broadcom/vulkan/v3dv_private.h +++ b/src/broadcom/vulkan/v3dv_private.h @@ -138,7 +138,6 @@ struct v3dv_physical_device { char *name; int32_t render_fd; int32_t display_fd; - int32_t master_fd; /* We need these because it is not clear how to detect * valid devids in a portable way @@ -206,9 +205,6 @@ struct v3dv_physical_device { } caps; }; -VkResult v3dv_physical_device_acquire_display(struct v3dv_physical_device *pdevice, - VkIcdSurfaceBase *surface); - static inline struct v3dv_bo * v3dv_device_lookup_bo(struct v3dv_physical_device *device, uint32_t handle) { diff --git a/src/broadcom/vulkan/v3dv_wsi.c b/src/broadcom/vulkan/v3dv_wsi.c index 5efb1ea9530..404a64d0e17 100644 --- a/src/broadcom/vulkan/v3dv_wsi.c +++ b/src/broadcom/vulkan/v3dv_wsi.c @@ -24,8 +24,6 @@ */ #include "v3dv_private.h" -#include "drm-uapi/drm_fourcc.h" -#include "wsi_common_entrypoints.h" #include "vk_util.h" #include "wsi_common.h" #include "wsi_common_drm.h" @@ -41,19 +39,7 @@ static bool v3dv_wsi_can_present_on_device(VkPhysicalDevice _pdevice, int fd) { V3DV_FROM_HANDLE(v3dv_physical_device, pdevice, _pdevice); - - /* There are some instances with direct display extensions where this may be - * called before we have ever tried to create a swapchain, and therefore, - * before we have ever tried to acquire the display device, in which case we - * have to do it now. - */ - if (unlikely(pdevice->display_fd < 0 && pdevice->master_fd >= 0)) { - VkResult result = - v3dv_physical_device_acquire_display(pdevice, NULL); - if (result != VK_SUCCESS) - return false; - } - + assert(pdevice->display_fd != -1); return wsi_common_drm_devices_equal(fd, pdevice->display_fd); } @@ -66,7 +52,7 @@ v3dv_wsi_init(struct v3dv_physical_device *physical_device) v3dv_physical_device_to_handle(physical_device), v3dv_wsi_proc_addr, &physical_device->vk.instance->alloc, - physical_device->master_fd, NULL, + physical_device->display_fd, NULL, &(struct wsi_device_options){.sw_device = false}); if (result != VK_SUCCESS) @@ -89,67 +75,6 @@ v3dv_wsi_finish(struct v3dv_physical_device *physical_device) &physical_device->vk.instance->alloc); } -static void -constraint_surface_capabilities(VkSurfaceCapabilitiesKHR *caps) -{ - /* Our display pipeline requires that images are linear, so we cannot - * ensure that our swapchain images can be sampled. If we are running under - * a compositor in windowed mode, the DRM modifier negotiation should - * probably end up selecting an UIF layout for the swapchain images but it - * may still choose linear and send images directly for scanout if the - * surface is in fullscreen mode for example. If we are not running under - * a compositor, then we would always need them to be linear anyway. - */ - caps->supportedUsageFlags &= ~VK_IMAGE_USAGE_SAMPLED_BIT; -} - -VKAPI_ATTR VkResult VKAPI_CALL -v3dv_GetPhysicalDeviceSurfaceCapabilitiesKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) -{ - VkResult result; - result = wsi_GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, - surface, - pSurfaceCapabilities); - constraint_surface_capabilities(pSurfaceCapabilities); - return result; -} - -VKAPI_ATTR VkResult VKAPI_CALL -v3dv_GetPhysicalDeviceSurfaceCapabilities2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - VkSurfaceCapabilities2KHR* pSurfaceCapabilities) -{ - VkResult result; - result = wsi_GetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, - pSurfaceInfo, - pSurfaceCapabilities); - constraint_surface_capabilities(&pSurfaceCapabilities->surfaceCapabilities); - return result; -} - -VKAPI_ATTR VkResult VKAPI_CALL -v3dv_CreateSwapchainKHR( - VkDevice _device, - const VkSwapchainCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSwapchainKHR* pSwapchain) -{ - V3DV_FROM_HANDLE(v3dv_device, device, _device); - struct v3dv_physical_device *pdevice = device->pdevice; - - ICD_FROM_HANDLE(VkIcdSurfaceBase, surface, pCreateInfo->surface); - VkResult result = - v3dv_physical_device_acquire_display(pdevice, surface); - if (result != VK_SUCCESS) - return result; - - return wsi_CreateSwapchainKHR(_device, pCreateInfo, pAllocator, pSwapchain); -} - struct v3dv_image * v3dv_wsi_get_image_from_swapchain(VkSwapchainKHR swapchain, uint32_t index) { From 4e9ef47839f366b6d732af440ef4bddb1ea5182e Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Mon, 20 Nov 2023 11:43:24 +0200 Subject: [PATCH 153/356] intel/perf: fix querying of configurations Using the unsized data field is incorrect. The data is located behind the entire drm_i915_query_perf_config structure. Signed-off-by: Lionel Landwerlin Cc: mesa-stable Reviewed-by: Rohan Garg Part-of: (cherry picked from commit f9bab3566bcfbf4d33bcbb9fb8d5e8d416cb5674) --- .pick_status.json | 2 +- src/intel/perf/intel_perf.c | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index b78e6533a4f..c1056c20cc4 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1394,7 +1394,7 @@ "description": "intel/perf: fix querying of configurations", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/intel/perf/intel_perf.c b/src/intel/perf/intel_perf.c index 52f4d989e7a..a047525b375 100644 --- a/src/intel/perf/intel_perf.c +++ b/src/intel/perf/intel_perf.c @@ -280,18 +280,19 @@ i915_query_perf_config_data(struct intel_perf_config *perf, { char data[sizeof(struct drm_i915_query_perf_config) + sizeof(struct drm_i915_perf_oa_config)] = {}; - struct drm_i915_query_perf_config *query = (void *)data; + struct drm_i915_query_perf_config *i915_query = (void *)data; + struct drm_i915_perf_oa_config *i915_config = (void *)data + sizeof(*i915_query); - memcpy(query->uuid, guid, sizeof(query->uuid)); - memcpy(query->data, config, sizeof(*config)); + memcpy(i915_query->uuid, guid, sizeof(i915_query->uuid)); + memcpy(i915_config, config, sizeof(*config)); int32_t item_length = sizeof(data); if (intel_i915_query_flags(fd, DRM_I915_QUERY_PERF_CONFIG, DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID, - query, &item_length)) + i915_query, &item_length)) return false; - memcpy(config, query->data, sizeof(*config)); + memcpy(config, i915_config, sizeof(*config)); return true; } From 0f9443192248fe7832dbb5dadb681e0fb48aa008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Mon, 20 Nov 2023 20:42:31 +0200 Subject: [PATCH 154/356] drirc: Set limit_trig_input_range option for Valheim MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes ocean rendering in Valheim. Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10174 Signed-off-by: Tapani Pälli Reviewed-by: Lionel Landwerlin Part-of: (cherry picked from commit aba00ff391b9fe9e63e2a8b6ad807f338ad7a6a6) --- .pick_status.json | 2 +- src/util/00-mesa-defaults.conf | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index c1056c20cc4..df2714983bc 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -394,7 +394,7 @@ "description": "drirc: Set limit_trig_input_range option for Valheim", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf index d41b98ecedb..e0a9137c0a0 100644 --- a/src/util/00-mesa-defaults.conf +++ b/src/util/00-mesa-defaults.conf @@ -1131,6 +1131,9 @@ TODO: document the other workarounds. + + From ab01f44513e201e6a16d17038ffde68ac75f2aaa Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Tue, 21 Nov 2023 15:24:35 +0100 Subject: [PATCH 155/356] aco/sched: treat p_dual_src_export_gfx11 like export This prevents the scheduler from moving the dual source export above mrtz export, which caused hangs. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10173 Cc: mesa-stable Reviewed-by: Rhys Perry Part-of: (cherry picked from commit 0a5d3ac8d2b245e8b3f3589d3ade3de7356fe637) --- .pick_status.json | 2 +- src/amd/compiler/aco_scheduler.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index df2714983bc..4ef662c02b9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -264,7 +264,7 @@ "description": "aco/sched: treat p_dual_src_export_gfx11 like export", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/compiler/aco_scheduler.cpp b/src/amd/compiler/aco_scheduler.cpp index 592e42c54c4..f4cebf7a493 100644 --- a/src/amd/compiler/aco_scheduler.cpp +++ b/src/amd/compiler/aco_scheduler.cpp @@ -596,13 +596,15 @@ perform_hazard_query(hazard_query* query, Instruction* instr, bool upwards) return hazard_fail_exec; /* Don't move exports so that they stay closer together. + * Since GFX11, export order matters. MRTZ must come first, + * then color exports sorted from first to last. * Also, with Primitive Ordered Pixel Shading on GFX11+, the `done` export must not be moved * above the memory accesses before the queue family scope (more precisely, fragment interlock * scope, but it's not available in ACO) release barrier that is expected to be inserted before * the export, as well as before any `s_wait_event export_ready` which enters the ordered * section, because the `done` export exits the ordered section. */ - if (instr->isEXP()) + if (instr->isEXP() || instr->opcode == aco_opcode::p_dual_src_export_gfx11) return hazard_fail_export; /* don't move non-reorderable instructions */ From ac66a49ba6a255b13b27dfab1e767bfb6da8f3ff Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Fri, 10 Nov 2023 18:03:08 +0100 Subject: [PATCH 156/356] tu: Fix re-emitting VS param state after it is re-enabled We need to always re-emit it if it was disabled. Fixes vertex/instance offset in a direct draw after an indirect draw. Cc: mesa-stable Part-of: (cherry picked from commit 6be6b4ca711b157d0d92b4942b19eb74e71ed04f) --- .pick_status.json | 2 +- src/freedreno/ci/freedreno-a630-fails.txt | 1 - src/freedreno/ci/freedreno-a660-fails.txt | 2 -- src/freedreno/vulkan/tu_cmd_buffer.cc | 4 +++- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 4ef662c02b9..23d2443abaa 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -384,7 +384,7 @@ "description": "tu: Fix re-emitting VS param state after it is re-enabled", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/freedreno/ci/freedreno-a630-fails.txt b/src/freedreno/ci/freedreno-a630-fails.txt index ecd5de60ad2..c4c169bdc28 100644 --- a/src/freedreno/ci/freedreno-a630-fails.txt +++ b/src/freedreno/ci/freedreno-a630-fails.txt @@ -881,7 +881,6 @@ dEQP-VK.transform_feedback.primitives_generated_query.concurrent.pipeline_statis dEQP-VK.transform_feedback.primitives_generated_query.concurrent.pipeline_statistics_3.pgq_32bit_xfb_64bit.triangle_strip.indirect,Fail dEQP-VK.transform_feedback.primitives_generated_query.concurrent.pipeline_statistics_3.pgq_64bit_xfb_32bit.point_list.draw,Fail dEQP-VK.transform_feedback.primitives_generated_query.concurrent.pipeline_statistics_3.pgq_64bit_xfb_32bit.triangle_list_with_adjacency.indirect,Fail -dEQP-VK.transform_feedback.simple.backward_dependency_indirect_endqueryindexed_streamid_0,Fail dynamic-dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_2.d24_unorm_s8_uint.compatibility_depth_zero_stencil_zero_testing_stencil,Fail gmem-dEQP-VK.api.copy_and_blit.copy_commands2.image_to_image.all_formats.color.2d_to_1d.b4g4r4a4_unorm_pack16.r16_sfloat.optimal_general,Fail gmem-dEQP-VK.api.copy_and_blit.copy_commands2.image_to_image.all_formats.color.2d_to_1d.r16_uint.r16_sfloat.optimal_optimal,Fail diff --git a/src/freedreno/ci/freedreno-a660-fails.txt b/src/freedreno/ci/freedreno-a660-fails.txt index 975102e9cee..af006111325 100644 --- a/src/freedreno/ci/freedreno-a660-fails.txt +++ b/src/freedreno/ci/freedreno-a660-fails.txt @@ -1053,8 +1053,6 @@ dEQP-VK.transform_feedback.primitives_generated_query.concurrent.pipeline_statis dEQP-VK.transform_feedback.primitives_generated_query.concurrent.pipeline_statistics_3.pgq_64bit_xfb_32bit.triangle_strip.indirect,Fail dEQP-VK.transform_feedback.primitives_generated_query.concurrent.pipeline_statistics_3.pgq_64bit_xfb_32bit.triangle_strip_with_adjacency.draw,Fail dEQP-VK.transform_feedback.primitives_generated_query.concurrent.pipeline_statistics_3.pgq_64bit_xfb_32bit.triangle_strip_with_adjacency.indirect,Fail -dEQP-VK.transform_feedback.simple.backward_dependency_indirect_beginqueryindexed_streamid_0,Fail -dEQP-VK.transform_feedback.simple.backward_dependency_indirect_no_offset_array,Fail gmem-dEQP-VK.api.copy_and_blit.copy_commands2.image_to_image.all_formats.color.2d_to_1d.b4g4r4a4_unorm_pack16.r16_sfloat.general_general,Fail gmem-dEQP-VK.api.copy_and_blit.copy_commands2.image_to_image.all_formats.color.2d_to_1d.b4g4r4a4_unorm_pack16.r16_sfloat.optimal_general,Fail gmem-dEQP-VK.api.copy_and_blit.copy_commands2.image_to_image.all_formats.color.2d_to_1d.b4g4r4a4_unorm_pack16.r16_sfloat.optimal_optimal,Fail diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 23a1e4ae53f..4aa3ab770d0 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -4976,10 +4976,12 @@ tu6_emit_vs_params(struct tu_cmd_buffer *cmd, uint32_t offset = vs_params_offset(cmd); /* Beside re-emitting params when they are changed, we should re-emit - * them after constants are invalidated via HLSQ_INVALIDATE_CMD. + * them after constants are invalidated via HLSQ_INVALIDATE_CMD or after we + * emit an empty vs params. */ if (!(cmd->state.dirty & (TU_CMD_DIRTY_DRAW_STATE | TU_CMD_DIRTY_VS_PARAMS | TU_CMD_DIRTY_PROGRAM)) && + cmd->state.vs_params.iova && (offset == 0 || draw_id == cmd->state.last_vs_params.draw_id) && vertex_offset == cmd->state.last_vs_params.vertex_offset && first_instance == cmd->state.last_vs_params.first_instance) { From c05aadcf25acfdf259dc27001aa9cc4332f385e4 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Fri, 24 Nov 2023 17:15:13 +0000 Subject: [PATCH 157/356] .pick_status.json: Update to b07a58157d0b110dbc09a42cffe7046c3200dd3b --- .pick_status.json | 430 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 430 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 23d2443abaa..c1ee235878b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,434 @@ [ + { + "sha": "b07a58157d0b110dbc09a42cffe7046c3200dd3b", + "description": "radeonsi: remove the LAYER output if the framebuffer state has only 1 layer", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3a0a3a5c350e4bb354dfb4823e32b70ab9d7655e", + "description": "radeonsi: implement gl_Layer in FS as a system value", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "130428e758557872a16121c1aba4401b23e3d15d", + "description": "radeonsi: don't allocate output space for LAYER/VIEWPORT before TES and GS", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0cd3d58227bded43403c39962ea7cfec07dd0b0c", + "description": "radeonsi: clean up si_nir_kill_outputs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "17c38eb9a597fa111908b302cc06a21ae98c185e", + "description": "st/mesa: set pipe_framebuffer_state::layers for PBO blits", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e0a24c7fe04a06bd620b468092d5e882c92b514d", + "description": "ac/nir: add kill_layer flag to VS/GS/NGG lowering", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "27a9ddad28ab44207bb84b9fc0e00d87e9fb8dec", + "description": "nir: return progress from nir_remove_sysval_output", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "32ee6376ad3203beaa84bcdf1585d53d1f18a1d7", + "description": "nir: add lowering from FS LAYER input to LAYER_ID sysval", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a181c86e73ff9ac78090cd8c1a0a2d559a8e8f5d", + "description": "broadcom/ci: separate hiden jobs to -inc.yml files", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bc7e363f8e1a26342e6fd7241c1f0ebb722338d6", + "description": "fix: ac/llvm: LLVM 18: remove useless passes, partially removed upstream", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fff3fc45a0125b408ca8d4dbd48e5633d63ccc5a", + "description": "zink: initialize drm_fd to -1", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "268ab0cead7b5f455041b19d189a876146253f74", + "description": "ci: disable Anholt farm", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2404483706f4396920e94f7abc80368b7d25a965", + "description": "v3d/resource: Support offset query for multi-planar planes", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cb8cdab928ff2302bef00b341914168c78a89a7c", + "description": "vc4/resource: Support offset query for multi-planar planes", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b5bcb658b4dcac0a08031b30a66c6780ea66c6ff", + "description": "iris: Ensure virtual addresses are aligned to 2MB for 2MB+ blocks", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0b6693a3a14029c31db2ee8576baa78fc914b9e5", + "description": "iris: Align fresh BO allocations to 2MB in size", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6932827a47afaf9f92e27905a59681dcf5832854", + "description": "iris: Use 64K BOs for the shader uploader", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "21170a58d8ae919f820bf111aca32edaa58c5cff", + "description": "iris: Split system memory heap into cached-coherent and uncached heaps", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "81ebb6a10af856760d9117c1f78a0715382687ae", + "description": "iris: Rename heap_flags -> heap in i915_gem_create", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7a67ea0a6ed81ca9ae4542b70377f2f53129586f", + "description": "iris: Make an iris_heap_is_device_local() helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e27e5ee55cdb5034c94ee6de190fe6e71f36c02d", + "description": "iris: Make an iris_bucket_cache structure and array per heap", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7046a9e280f7ded13865c70a2577a489787fa016", + "description": "intel: Rename PAT entries", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "76aad457a1a2a8bf3c195f149ae65d45a15e3349", + "description": "iris: Change default PAT entry to WC", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f1c9e9014629fb0ea73ae73b35b642a97b06ba04", + "description": "r300: add late vectorization after nir_move_vec_src_uses_to_dest", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ad7efdea6e30c46e1b8b80672cac4f6042956df6", + "description": "radv: do not set OREO_MODE to fix rare corruption on GFX11", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d9f312b86aa979e237f2de3dc3f025e367cfe7b6", + "description": "radv: set radv_invariant_geom=true for War Thunder", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "46cc7ffb7982091cdbded41e27d8f9a0b9ee5359", + "description": "radv: add missing FDCC_CONTROL bits for GFX1103 R2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ab3460311509fbc3e1ff36647a21cffe7710962a", + "description": "radv: disable TC-compatible HTILE on Tonga and Iceland", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b7107efe41406b707f5907269936e6332ec3db2", + "description": "glsl: drop ir_binop_ubo_load", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9528d050a4b3bb081e5b142299033116673931a5", + "description": "d3d12: fix usage of GetAdapterLuid() in mingw/GCC using ABI helper", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "e7204d02240977ce3c602bafdd0ee0a47eea67b4", + "notes": null + }, + { + "sha": "43cb4cb6dde1e8fdbe609c42b47e0f27d8411982", + "description": "anv: use the right vertexOffset on CmdDrawMultiIndexed", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "c70ef757e6345652d4946fcc91b4816e56d86b43", + "notes": null + }, + { + "sha": "bb0ad6f0f5beb3764d084617361ef3a04f337567", + "description": "egl/haiku: Remove some dead cleanup code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c9e33f354569ee042085534fa14e2e40edd8d370", + "description": "hgl: Redefine visual options in hgl_context.h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "af90199fd87d1382d3e6f5fc1b4165b32d9ef784", + "description": "egl/haiku: Cleanup includes; minor build fix", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2f0ed0680cf26d3051b001565d02115ac1a5da28", + "description": "glsl/nir: return failure from link_varyings if there is a linker error", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a141b5264109f133ba244514e382514cb313295e", + "description": "st/mesa: disable light_twoside if back faces are culled", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2d3f0a834aefd0ca1ae4d8272ebb3b88f6805432", + "description": "anv: Add comment to copy image code block", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "73d69ef1e6b013f923ec459c789976570baaf447", + "description": "util/rbsp: Fill bits twice if reading more than 16 bits", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "db208af9670623be4a0f6429da1b4877e025bc69", + "description": "lima: Support parameter queries for PIPE_RESOURCE_PARAM_NPLANES", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3b10547e67d572a39db44e2b860b93eec6819292", + "description": "aco: enable helper lanes if shader->info.fs.require_full_quads", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f1110576d90fff96d30f985231908d66e67a5822", + "description": "nir: add info.fs.require_full_quads", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2db0507b5d56a632c78d965b0b8366e036570b0a", + "description": "nir/gather_info: add missing wide subgroup operations", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1179d83a89adc4a00900eee6d79c9a8b11639e1c", + "description": "nir: remove info.fs.needs_all_helper_invocations", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "f39ed0063b4cd3e5a71efad2d43ce31f574c698d", "description": "radv/ci: add missing expected failures for mesh queries on VANGOGH", From 142c333748e052b47bdfd2c224ae905bbd24d41c Mon Sep 17 00:00:00 2001 From: David Rosca Date: Sun, 19 Nov 2023 11:27:29 +0100 Subject: [PATCH 158/356] util/rbsp: Fill bits twice if reading more than 16 bits vl_rbsp_fillbits may fill less than 32 bits if it removes emulation prevention bytes, but will fill at least 16 bits. We need to call it twice when reading more than 16 bits. This fixes parsing H264 SPS packed header in va frontend when emulation prevention bytes are at position where 32 bit values are read. Cc: mesa-stable Reviewed-by: Leo Liu Part-of: (cherry picked from commit 73d69ef1e6b013f923ec459c789976570baaf447) --- .pick_status.json | 2 +- src/util/vl_rbsp.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index c1ee235878b..e0ad2657f6e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -374,7 +374,7 @@ "description": "util/rbsp: Fill bits twice if reading more than 16 bits", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/util/vl_rbsp.h b/src/util/vl_rbsp.h index 0842b0f1490..82043fc8752 100644 --- a/src/util/vl_rbsp.h +++ b/src/util/vl_rbsp.h @@ -138,6 +138,8 @@ static inline unsigned vl_rbsp_u(struct vl_rbsp *rbsp, unsigned n) return 0; vl_rbsp_fillbits(rbsp); + if (n > 16) + vl_rbsp_fillbits(rbsp); return vl_vlc_get_uimsbf(&rbsp->nal, n); } From ff6ed814f7b98cb1cfac3b0a3b32265084c095d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Briano?= Date: Mon, 20 Nov 2023 15:50:00 -0800 Subject: [PATCH 159/356] anv: use the right vertexOffset on CmdDrawMultiIndexed Fixes: c70ef757e63 ("anv: Use extended parameters on Gen11+") Reviewed-by: Lionel Landwerlin Part-of: (cherry picked from commit 43cb4cb6dde1e8fdbe609c42b47e0f27d8411982) --- .pick_status.json | 2 +- src/intel/vulkan/genX_cmd_buffer.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index e0ad2657f6e..dc97e394d12 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -304,7 +304,7 @@ "description": "anv: use the right vertexOffset on CmdDrawMultiIndexed", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "c70ef757e6345652d4946fcc91b4816e56d86b43", "notes": null diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 5090e0fe1ec..2a1ed111f2f 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -4545,7 +4545,7 @@ void genX(CmdDrawMultiIndexedEXT)( prim.StartInstanceLocation = firstInstance; prim.BaseVertexLocation = pVertexOffset ? *pVertexOffset : draw->vertexOffset; prim.ExtendedParametersPresent = true; - prim.ExtendedParameter0 = draw->vertexOffset; + prim.ExtendedParameter0 = pVertexOffset ? *pVertexOffset : draw->vertexOffset; prim.ExtendedParameter1 = firstInstance; prim.ExtendedParameter2 = i; } From c73c7c0b0bb062f65aecdc28187579a335064799 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 15 Nov 2023 11:52:12 +0100 Subject: [PATCH 160/356] radv: disable TC-compatible HTILE on Tonga and Iceland According to RadeonSI, TC-compat HTILE have issues on Tonga/Iceland (first GFX8 chips) and a bunch of games seem to have issues. Let's disable it instead of using a feature that is known broken. Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7101 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3894 Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit ab3460311509fbc3e1ff36647a21cffe7710962a) --- .pick_status.json | 2 +- src/amd/vulkan/radv_image.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index dc97e394d12..372b810537e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -274,7 +274,7 @@ "description": "radv: disable TC-compatible HTILE on Tonga and Iceland", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 2b6c5ea16fd..10edc11129c 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -75,6 +75,13 @@ radv_use_tc_compat_htile_for_image(struct radv_device *device, const VkImageCrea if (device->physical_device->rad_info.gfx_level < GFX8) return false; + /* TC-compat HTILE looks broken on Tonga (and Iceland is the same design) and the documented bug + * workarounds don't help. + */ + if (device->physical_device->rad_info.family == CHIP_TONGA || + device->physical_device->rad_info.family == CHIP_ICELAND) + return false; + if (pCreateInfo->tiling == VK_IMAGE_TILING_LINEAR) return false; From 2d4868629f5107f3e3a9f4322acf0532123a3e99 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 22 Nov 2023 18:40:32 +0100 Subject: [PATCH 161/356] radv: set radv_invariant_geom=true for War Thunder War Thunder has native Vulkan support. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10186 Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: (cherry picked from commit d9f312b86aa979e237f2de3dc3f025e367cfe7b6) --- .pick_status.json | 2 +- src/util/00-radv-defaults.conf | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 372b810537e..2f3beb77e24 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -254,7 +254,7 @@ "description": "radv: set radv_invariant_geom=true for War Thunder", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/util/00-radv-defaults.conf b/src/util/00-radv-defaults.conf index 45b571ba0ac..b13d92f84ce 100644 --- a/src/util/00-radv-defaults.conf +++ b/src/util/00-radv-defaults.conf @@ -144,6 +144,10 @@ Application bugs worked around in this file: + + + + + + + + + + + + + - - diff --git a/src/util/driconf.h b/src/util/driconf.h index c79f969d517..c3e6c7f5212 100644 --- a/src/util/driconf.h +++ b/src/util/driconf.h @@ -693,8 +693,8 @@ */ #define DRI_CONF_ANV_ASSUME_FULL_SUBGROUPS(def) \ - DRI_CONF_OPT_B(anv_assume_full_subgroups, def, \ - "Allow assuming full subgroups requirement even when it's not specified explicitly") + DRI_CONF_OPT_I(anv_assume_full_subgroups, def, 0, 32, \ + "Allow assuming full subgroups requirement even when it's not specified explicitly and set the given size") #define DRI_CONF_ANV_SAMPLE_MASK_OUT_OPENGL_BEHAVIOUR(def) \ DRI_CONF_OPT_B(anv_sample_mask_out_opengl_behaviour, def, \ From c2a1b11019572b3f74d6014c5659709d3b8fea41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Tue, 12 Dec 2023 10:40:38 +0200 Subject: [PATCH 271/356] drirc: setup anv_assume_full_subgroups=16 for UnrealEngine5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We set max subgroup size as 16 for 'UnrealEngine5.1', this improves a customer benchmark by 50% on A750. Cc: mesa-stable Signed-off-by: Tapani Pälli Reviewed-by: Lionel Landwerlin Part-of: (cherry picked from commit 012b6fbe632e190138f864ae4c6c6abe4c0ee81a) --- .pick_status.json | 2 +- src/util/00-mesa-defaults.conf | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 736954d6081..4a728277ff5 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -584,7 +584,7 @@ "description": "drirc: setup anv_assume_full_subgroups=16 for UnrealEngine5.1", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf index 79baae36208..cb41cc58b64 100644 --- a/src/util/00-mesa-defaults.conf +++ b/src/util/00-mesa-defaults.conf @@ -1178,6 +1178,7 @@ TODO: document the other workarounds. From fd1d0b4e65ca0c069c1d39d081b756ac1cc975db Mon Sep 17 00:00:00 2001 From: Friedrich Vock Date: Fri, 15 Dec 2023 17:40:35 +0100 Subject: [PATCH 272/356] radv/rt: Initialize unused children in PLOC early-exit Bad things happen when these aren't initialized. Fixes GPU hangs when loading Avatar: Frontiers of Pandora savegames. Cc: mesa-stable Part-of: (cherry picked from commit f9a394b753b55ccfc869568413b6fc6795dc1636) --- .pick_status.json | 2 +- src/amd/vulkan/bvh/ploc_internal.comp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 4a728277ff5..f81141b5f4f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -314,7 +314,7 @@ "description": "radv/rt: Initialize unused children in PLOC early-exit", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/bvh/ploc_internal.comp b/src/amd/vulkan/bvh/ploc_internal.comp index 267a914d89b..c7c8b5d394e 100644 --- a/src/amd/vulkan/bvh/ploc_internal.comp +++ b/src/amd/vulkan/bvh/ploc_internal.comp @@ -249,7 +249,8 @@ main(void) total_bounds.min = vec3(INFINITY); total_bounds.max = vec3(-INFINITY); - for (uint32_t i = 0; i < DEREF(args.header).active_leaf_count; i++) { + uint32_t i = 0; + for (; i < DEREF(args.header).active_leaf_count; i++) { uint32_t child_id = DEREF(INDEX(key_id_pair, src_ids, i)).id; if (child_id != RADV_BVH_INVALID_NODE) { @@ -263,6 +264,8 @@ main(void) DEREF(dst_node).children[i] = child_id; } + for (; i < 2; i++) + DEREF(dst_node).children[i] = RADV_BVH_INVALID_NODE; DEREF(dst_node).base.aabb = total_bounds; DEREF(dst_node).bvh_offset = RADV_UNKNOWN_BVH_OFFSET; From 8b389ea261c02a549d9780799dc4e6d363c1ba49 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Fri, 15 Dec 2023 18:21:49 +0000 Subject: [PATCH 273/356] vulkan/wsi: fix build when platform headers are installed in non-standard locations Anything that uses the platform defines in `vulkan_wsi_list` will need to be able to resole the includes they trigger, which are provided by `vulkan_wsi_deps`. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10304 Cc: mesa-stable Part-of: (cherry picked from commit 8043e8c4a66673675b2e1018f214e471942c717d) --- .pick_status.json | 2 +- src/vulkan/meson.build | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index f81141b5f4f..07735c5930f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -304,7 +304,7 @@ "description": "vulkan/wsi: fix build when platform headers are installed in non-standard locations", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/vulkan/meson.build b/src/vulkan/meson.build index 4202d700663..a94ed1af38c 100644 --- a/src/vulkan/meson.build +++ b/src/vulkan/meson.build @@ -92,6 +92,7 @@ endif idep_vulkan_wsi_defines = declare_dependency( compile_args : vulkan_wsi_list, + dependencies : vulkan_wsi_deps, ) vulkan_wsi_deps += idep_vulkan_wsi_defines From 79b2605743e40b4fb99bd79e8de6bf53647a59ba Mon Sep 17 00:00:00 2001 From: George Ouzounoudis Date: Thu, 24 Aug 2023 20:03:02 +0300 Subject: [PATCH 274/356] vulkan: Fix dynamic graphics state enum usage Simply replace the correct rasterization stream enum Fixes: 9d0ed9cbcc01 ("vulkan: Add more dynamic rasterizer state") Reviewed-by: Faith Ekstrand Part-of: (cherry picked from commit d8945dd51e47a026b5219b9f9d89fedb4ace04ca) --- .pick_status.json | 2 +- src/vulkan/runtime/vk_graphics_state.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 07735c5930f..621d38f2616 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -124,7 +124,7 @@ "description": "vulkan: Fix dynamic graphics state enum usage", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "9d0ed9cbcc01b31a71037fcb35742fc8b77f09fe", "notes": null diff --git a/src/vulkan/runtime/vk_graphics_state.c b/src/vulkan/runtime/vk_graphics_state.c index eb526cc1b3a..2a8e210c83e 100644 --- a/src/vulkan/runtime/vk_graphics_state.c +++ b/src/vulkan/runtime/vk_graphics_state.c @@ -2338,7 +2338,7 @@ vk_common_CmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer, VK_FROM_HANDLE(vk_command_buffer, cmd, commandBuffer); struct vk_dynamic_graphics_state *dyn = &cmd->dynamic_graphics_state; - SET_DYN_VALUE(dyn, RS_PROVOKING_VERTEX, + SET_DYN_VALUE(dyn, RS_RASTERIZATION_STREAM, rs.rasterization_stream, rasterizationStream); } From 25f02192a5ef95985dcf08a62bff8d6c56df3755 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Sat, 9 Dec 2023 23:31:05 +0000 Subject: [PATCH 275/356] vulkan/wsi/wayland: ensure drm modifiers stored in chain are immutable Chain stored modifiers point to the mapping of the current feedback shmem of the surface. The surface tracked feedback mapping will be gone and replaced with new mapping during surface_dmabuf_feedback_done. There are two issues here: 1. One issue is that the existing mapping is closed before been used to compare against new modifiers in sets_of_modifiers_are_the_same. 2. The other issue is that when the chain is still optimal, the chain persists while the mapping is still replaced with the one from the new format table shmem. This change makes a deep copy of the modifiers to store in the chain to ensure the modifiers used for the current chain are immutable through the chain lifecycle. Cc: mesa-stable Signed-off-by: Yiwei Zhang Reviewed-by: Lionel Landwerlin Reviewed-by: Leandro Ribeiro Part-of: (cherry picked from commit ddf2ca4faffdd309638aa0ebfcba2c43b4fc439d) --- .pick_status.json | 2 +- src/vulkan/wsi/wsi_common_wayland.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 621d38f2616..bbfbf4fca4e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -14,7 +14,7 @@ "description": "vulkan/wsi/wayland: ensure drm modifiers stored in chain are immutable", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index 94b9217cbdf..22e26bacbc5 100644 --- a/src/vulkan/wsi/wsi_common_wayland.c +++ b/src/vulkan/wsi/wsi_common_wayland.c @@ -2215,6 +2215,8 @@ wsi_wl_swapchain_chain_free(struct wsi_wl_swapchain *chain, pthread_mutex_destroy(&chain->present_ids.lock); } + vk_free(pAllocator, (void *)chain->drm_modifiers); + wsi_swapchain_finish(&chain->base); } @@ -2370,7 +2372,16 @@ wsi_wl_surface_create_swapchain(VkIcdSurfaceBase *icd_surface, chain->shm_format = wl_shm_format_for_vk_format(chain->vk_format, alpha); } chain->num_drm_modifiers = num_drm_modifiers; - chain->drm_modifiers = drm_modifiers; + if (num_drm_modifiers) { + uint64_t *drm_modifiers_copy = + vk_alloc(pAllocator, sizeof(*drm_modifiers) * num_drm_modifiers, 8, + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); + if (!drm_modifiers_copy) + goto fail; + + typed_memcpy(drm_modifiers_copy, drm_modifiers, num_drm_modifiers); + chain->drm_modifiers = drm_modifiers_copy; + } if (chain->wsi_wl_surface->display->wp_presentation_notwrapped) { if (!wsi_init_pthread_cond_monotonic(&chain->present_ids.list_advanced)) From cb65e078a7c93e9cf8a1b549d9bf7f430b27681f Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 20 Dec 2023 00:01:45 +0000 Subject: [PATCH 276/356] .pick_status.json: Update to 670a799ebff9a98daafccf49324c2a01311b0c41 --- .pick_status.json | 1000 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1000 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index bbfbf4fca4e..31d97296656 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,1004 @@ [ + { + "sha": "670a799ebff9a98daafccf49324c2a01311b0c41", + "description": "meson: Support for both packaging and distutils", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b4cde1b2a69c32dbcb544c4173ebbebc39e94812", + "description": "vulkan/video: drop encode beta checks and rename EXT->KHR", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4fdb381d02a4f4b9f124892969d91fe7c7cc33b0", + "description": "mesa: Drop not used program_written_to_cache", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ba0d39fb69e6896d8679e88a33abb1e4c8e2797e", + "description": "ci: skip EGL functional color_clears tests for Wayland", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7afd7299bf16ce7b475a50648a8c1cd28fde885e", + "description": "vulkan: drop VK_ENABLE_BETA_EXTENSIONS for video encode layouts", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "49759101a15e613dd3794bb294b43a1c6e2e2740", + "description": "vk/cmd_queue: exempt more descriptor functions from autogeneration", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cfa944635c619e61c6e3fee75bd94b4f2d520bbb", + "description": "vulkan: bump headers/registry to 1.3.274", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b8a07095d487aa288947ab0c525b893fa6e99ba", + "description": "intel/isl: Add Gfx 12.x RC_CCS_CC into modifier scores", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ed45f95b510ddb0ad860cc5e52aeaff519995649", + "description": "intel/vulkan: Add COMPRESSED_CLEAR state in layout translation", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "24b4f9c3badb2cab4246331245e6aeacf27f2776", + "description": "intel/vulkan: Update comment of a workaround of modifiers", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "12f07157876151e18faa8cde1700e4f4544f5eec", + "description": "intel/vulkan: Correct a comment about an offset in fast clear", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9c5a28d919139ca9088f2bdaf5dca30510912726", + "description": "intel/vulkan: Use the last 2 dwords of clear color struct", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "82f47acb1617728c8f045e529853e953970f18a9", + "description": "intel/vulkan: Remove private binding on fast clear region", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "91a10251b92e33696593910737c23a6adf8be5b6", + "description": "intel/vulkan: Import aux state tracking buffer", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1d5326b30e3f65353ea8328a41b01f6499d1ae1c", + "description": "intel/vulkan: Specify offset when creating aux state tracker", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a26d62df6b1b7ba8d1dc1e8bbb87b42c67fb24c5", + "description": "intel/vulkan: Allow modifiers supporting fast clear", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ab6f1b1d573d09e5af7fbab7345d50bcd7ba56a7", + "description": "intel/vulkan: Report clear color in subresource layout", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f280b6e8d562897329db48cb95ddeaa3f2a22e3d", + "description": "intel: Move mod_plane_is_clear_color() into isl", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3b885926e95ebbf545685890129f7063df5349e0", + "description": "intel/isl: Add a debug option to override modifer list", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8f8cde4c6050d1e91101ec66e8982036da9d7700", + "description": "intel/fs: Don't optimize DW*1 MUL if it stores value to the accumulator", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "a8b86459a1bb74cfdf0d63572a9fe194b2b5b53f", + "notes": null + }, + { + "sha": "a6459e0f7bcb662130c79764ccf54ccfa9151182", + "description": "nir/loop_analyze: Don't test non-positive iterations count", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "6772a17acc8ee90f9398348251a4455f988208fd", + "notes": null + }, + { + "sha": "dd144962c2bc036389540b68b7acee8b8c883d31", + "description": "ci/broadcom: separate HW definition from SW", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ef4f33b661b13bcc32fb957da08ab23c1cd502fd", + "description": "ci/v3d/vc4: remove explicit modules to load", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d913927fe9201f0fea71ef0e614b9c400c122d49", + "description": "egl/glx: fallback to software when Zink is forced and fails", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "8cd44b8843877a2f7d559d123eb3694841f16fdc", + "notes": null + }, + { + "sha": "49b8ccbcdc2f893c220a2cbab84457b37f736085", + "description": "intel/fs: Drop opt_register_renaming()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "866205d4d74747faff71727a88322003b74d9020", + "description": "intel/fs: Allow omitting the destination of A64 untyped atomics", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2487e18d4e25c56a70630ccf5faf5d2081fbee2f", + "description": "ci: bare-metal: poe: Create strutured logs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a530cb1889628f51b849e919c7beeb8dc2d52e2", + "description": "ci: copy logging script to install", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "aa0c4078de511730249c4dba2ceebba69b6c8a23", + "description": "ci: Add CustomLogger class and CLI tool", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b5153693cc38e631b23c741a5eb3b160a01b10e2", + "description": "radv: move image view related code to radv_image_view.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1db86d93f270a3815d5f8d993b75d10573a1b9d0", + "description": "radv: move buffer view related code to radv_buffer_view.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "02282fe482e6adfbaad76cf27aee4aa7afa3652c", + "description": "radv: move SI_GS_PER_ES to radv_constants.h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d057cfc8f6402d728658f777ef5dea3c9ff13600", + "description": "radv: move more shader related declarations to radv_shader.h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0481723cf05ea64b52109a2d20ed4d9abb147031", + "description": "radv: move radv_depth_clamp_mode to radv_cmd_buffer.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c0d7ef1e5847dfb4ec25e577780cc053eec49854", + "description": "radv: move more descriptor related declarations to radv_descriptor_set.h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a080390c3c2a036f89f89a9f0f0cde857646a878", + "description": "radv: move radv_image_is_renderable() to radv_image.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8a5106f91a36ee14d013e2a98005ff9e4922ea16", + "description": "radv: move RADV_HASH_SHADER_xxx flags to radv_pipeline.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9d153906350160b4b277766576be5e3690c4f6d6", + "description": "radv: move meta declarations to radv_meta.h", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "939936a328ed3174368f4eaf5c21f82dff2bc57a", + "description": "radv: remove radv_get_tess_output_topology() declaration", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "51bf1b26d08828bac0145cf82b2460a502f1afe2", + "description": "libgl-gdi: Update wgl test to set debug flags needed for tests", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8c88cc8630f3ba161fd9568102b03ec7786231f9", + "description": "libgl-gdi: Update wgl test to use a 32bit framebuffer", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "325fb6e26b62326c86514d263ffedd241fd36865", + "description": "d3d12: Only destroy the winsys during screen destruction, not reset", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "81c8e89ff8e846839fffc1d103b2080bef5c1b5c", + "notes": null + }, + { + "sha": "ff9868c569871ff96f3d1b6b165eb85dcefd4fa3", + "description": "d3d12: Add a debug flag to opt out of singleton behavior", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bed69133cda5bb6e29beacd61a665ef653d4d1f9", + "description": "util: Re-implement getenv for Windows", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a0b7ae859f490504b3409e5f446c64cad28502ac", + "description": "osmesa: Fixes building osmesa.c on windows", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "5bf68ab70133edd264f832f4a133288b8b45f66d", + "notes": null + }, + { + "sha": "601b826a5ec17da99c2984eeb720bc9e0f3ffeaa", + "description": "ci: lima farm is down", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8bcf33cdc1977db4f836ebac1460f804f6cd3b23", + "description": "radeonsi/vcn: ROI capability value initialization.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "148230db05eab00cddceb868b0b2db76ad0fe75e", + "description": "ci/freedreno: downgrade whole Adreno 6xx series, incl. zink-a618 jobs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "662f86c53384d44bc296aa6a3bc8b35c6e59d86c", + "description": "radv/bvh: Stop emitting leaf nodes inside the encoder", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8fca54a754e8489402c6942877f466172a2a9caf", + "description": "radv: Add more offsets acceleration_structure_layout", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a2a0cef9f415ed0f16912c2006c8a2c302d8bb90", + "description": "meson: Update our rust dependencies", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f0594915e631877bcdf8ce67636143a017b41fb1", + "description": "glx: Handle IGNORE_GLX_SWAP_METHOD_OML regardless of GLX_USE_APPLEGL", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "e64ab3e4a94c4e8baee3bec3a5eb4d098b8e7193", + "notes": null + }, + { + "sha": "9548f969bda1075b20dd56a73cbf1e35c0cf7aba", + "description": "gallium/dri: Return __DRI_ATTRIB_SWAP_UNDEFINED for _SWAP_METHOD", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "e64ab3e4a94c4e8baee3bec3a5eb4d098b8e7193", + "notes": null + }, + { + "sha": "290d958c63002e725f96770783497a57e16d8cc6", + "description": "nak/nir: Set nir_lower_io_lower_64bit_to_32 for varyings", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a9fb7b0280c90b81d7b3c0aaf89953b21e957e44", + "description": "nak: Implement b2f64", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "26d649f1200100f8f80936ab634c1cc76a15d7dc", + "description": "nak: Fix nir_op_f2f64", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7ced1d3648379e74a182a448729779e1348c182c", + "description": "nak: Wire up 64-bit nir_op_fadd/ffma/fmul and comparisons", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "995eea8d04f3f3680c643eee54b4278a6be21552", + "description": "nak: Split fmul/ffma handling from fmulz/ffmaz", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1236c5d4f1b6ba6c8d2b86270b0e7122853a498c", + "description": "nak: Add the rest of the double-precision ops", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2f899f44eb0c41a082d967505349799d0e01f071", + "description": "nak: Rework encoding of ALU instructions on SM70+", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c53f562d1a7bb05469832b4598fc0b5f0a4271af", + "description": "nak: OpDAdd doesn't have saturate", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ada338bfcce797a34b265f817d4abe40ae029a90", + "description": "nak/sm70: Allow src2 of 3src ops to be an immediate", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8b2232906ecfda2f78649b95d226e27bb6de0f9b", + "description": "nak: Pass SrcTypes around instead of RegFile in legalize", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d24eb539c570da449ab6067eb3f44b290af2fb59", + "description": "nak: Make OpAtom::cmpr a GPR source", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3b6e6e985ee5d21d1344f19c65c7c23623efe52d", + "description": "nak: Copy propagate and constant fold OpPrmt", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9ad5b544d80d3bf5efe27b884eebcaa92f052e69", + "description": "nak: Fix copy-prop for fp64", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d41b0a2bf592116febe576bfcda40970b22394da", + "description": "nak: Move the copy detection part of opt_copy_prop to a helper", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0b2e48f43203beb84ed100e92975124aa91516af", + "description": "freedreno/afuc: Fix gen autodetection for a7xx", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ae9604c29efea02043fd8a174d146ec35ab01ccf", + "description": "freedreno/afuc: README updates for a7xx", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5ca347e72750a1a524f2c9b5e095014650bf3fb3", + "description": "freedreno: Update more control/pipe registers for a7xx", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d01be5534091ee1e95d310087d5fcc6e5949dcb1", + "description": "freedreno/afuc: Decode (sdsN) modifier", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "55985b7301a19c6d7c027206390b39de5822ccdf", + "description": "freedreno/afuc: Add syntax for pre-increment addressing", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "579227e02829ed635648d2528d93a2d107b3bbbd", + "description": "freedreno/afuc: Use SQE registers for call stack", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "da3cf26564b3133d7c33d631cb04ad64c04aa0f7", + "description": "freedreno/afuc: Add separate \"SQE registers\"", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7c919f04066d3f2971e9cd4de0da88bfa6038865", + "description": "freedreno/afuc: Handle store instruction on a5xx", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "cef345129f816a046fd07d29300aec3d92544e56", + "description": "vulkan/wsi/wayland: fix wl_event_queue memory leak", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "30faa7a483eddcf1aa7aa7fc06e270a979c6affa", + "description": "anv, iris, intel/genxml: Update 3DSTATE_HS for xe2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8ba99888587e46e362c728232d832e7170e01111", + "description": "anv, iris, intel/genxml: Update 3DSTATE_GS for xe2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1bc7c966f47ae6f618e368fad1f9f04a652459d9", + "description": "intel/batch_decoder: Update 3DSTATE_PS decoding for xe2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a659b1f0c0f83f22020043d3c2910aa0d77f8922", + "description": "anv, blorp, iris, intel/genxml: Update 3DSTATE_PS_EXTRA for xe2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5548e6a478483a58a9081aab84720a27a2b22e9d", + "description": "anv, blorp, iris, intel/genxml: Update 3DSTATE_VS for xe2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f170995e6698059c2361b57e8f55c5fe538fe7c2", + "description": "anv, blorp, iris: Update 3DSTATE_PS programming for xe2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "80d9294d2df2f4d98936dd31b6045ae6fd9540d5", + "description": "intel/isl: update 3DSTATE_STENCIL_BUFFER (xe2)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2a49a598ce95f1f7a4b3b611c56b1a6265e593ec", + "description": "intel/genxml: update 3DSTATE_DEPTH_BUFFER instruction (xe2)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "99eadc2ecb7fe60e0ccc9e8add58052d01089dcf", + "description": "intel/genxml: Add UNIFIED_COMPRESSION_FORMAT enum for xe2", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2c418118085174522a02c319e16d2e382675889e", + "description": "intel/genxml: update 3DSTATE_WM_HZ_OP instruction (xe2)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5d4a9952947aa2a5f701097487fde3f0e5d08d46", + "description": "intel/genxml: Remove 3DSTATE_CLEAR_PARAMS instruction (xe2)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9512f61cd8a0efdc95acde71d4cd1eb3552aac1b", + "description": "iris,isl: Adjust driver for several commands of clear color (xe2)", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2d273c520c9b65f6567d8af29e387867d80a06ec", + "description": "ir3: lower 64b registers before creating preamble", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6cad2fc23085596f3b9d40d721eb2da304af79f4", + "description": "nir: add helper to create cursor after all @decl_regs", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "533ec9843e466e0cadf876a39d6fac74db2bdcd6", + "description": "radv: Precompute shader max_waves.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1161f22c2790a1c7617e02e66bdf56bdf39fee2d", + "description": "radv: Move up radv_get_max_waves, radv_get_max_scratch_waves.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e444908d65e77628232ed123f0ba6733a1934f90", + "description": "radv: Simplify shader config assignment.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4353b0ad722c5510343cd32d7240dbaeeeeb94da", + "description": "radv: move emitting the fb mip tail workaround when rendering begins", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7dd7e551b13d0190e9ccf85e6e6f992edc69b063", + "description": "radv: stop checking FMASK for the fb mip tail workaround", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "57efe44f43f6ec4672a0fb9035cb887de7048f42", + "description": "radv: add missing HTILE support for fb mip tail workaround", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "82553774e2d1c3edff4c8e8683808d159846f83d", + "description": "iris: use intel_needs_workaround with 14015055625", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "0f147240398a5e9d424e507d9cd271802a340114", + "notes": null + }, + { + "sha": "240d11eb8d81cfab28c7075b9f1b600eb4df18dc", + "description": "Revert \"ci: disable the valve-kws farm until it can be rebooted\"", + "nominated": false, + "nomination_type": 2, + "resolution": 4, + "main_sha": null, + "because_sha": "299cd1af82872256ea3e496ba98c54cbb512f3d4", + "notes": null + }, + { + "sha": "f76f4be301ef311e6be21486b6a3f5fd5e90240f", + "description": "intel/compiler: move gen5 final pass to actually be final pass", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "ce75c3c3fea9d0c045587f3a8dfa33c1dc8cc222", + "notes": null + }, + { + "sha": "299cd1af82872256ea3e496ba98c54cbb512f3d4", + "description": "ci: disable the valve-kws farm until it can be rebooted", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "377c6b2d45ee73da3e5431846a3b4bfdd7ae2b83", "description": "ci/build: drop redundant meson/build.sh from jobs that already inherit from .meson-build", From 5ea94d17248a91e3598306ada8085a7c144adb15 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 18 Dec 2023 16:47:56 +1000 Subject: [PATCH 277/356] intel/compiler: move gen5 final pass to actually be final pass This got broken by the register conversion, this pass needs to be after all the others. Fixes: ce75c3c3fea9 ("intel: Switch to intrinsic-based registers") Reviewed-by: Lionel Landwerlin Part-of: (cherry picked from commit f76f4be301ef311e6be21486b6a3f5fd5e90240f) --- .pick_status.json | 2 +- src/intel/compiler/brw_nir.c | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 31d97296656..2f529e90646 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -984,7 +984,7 @@ "description": "intel/compiler: move gen5 final pass to actually be final pass", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "ce75c3c3fea9d0c045587f3a8dfa33c1dc8cc222", "notes": null diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c index 8da98b0fbfd..c36269fd015 100644 --- a/src/intel/compiler/brw_nir.c +++ b/src/intel/compiler/brw_nir.c @@ -1753,14 +1753,6 @@ brw_postprocess_nir(nir_shader *nir, const struct brw_compiler *compiler, if (OPT(nir_opt_rematerialize_compares)) OPT(nir_opt_dce); - /* This is the last pass we run before we start emitting stuff. It - * determines when we need to insert boolean resolves on Gen <= 5. We - * run it last because it stashes data in instr->pass_flags and we don't - * want that to be squashed by other NIR passes. - */ - if (devinfo->ver <= 5) - brw_nir_analyze_boolean_resolves(nir); - OPT(nir_opt_dce); /* The mesh stages require this pass to be called at the last minute, @@ -1773,6 +1765,15 @@ brw_postprocess_nir(nir_shader *nir, const struct brw_compiler *compiler, brw_nir_adjust_payload(nir, compiler); nir_trivialize_registers(nir); + + /* This is the last pass we run before we start emitting stuff. It + * determines when we need to insert boolean resolves on Gen <= 5. We + * run it last because it stashes data in instr->pass_flags and we don't + * want that to be squashed by other NIR passes. + */ + if (devinfo->ver <= 5) + brw_nir_analyze_boolean_resolves(nir); + nir_sweep(nir); if (unlikely(debug_enabled)) { From ead6751f58c016f53fbb2793fe69b9e3e53a4dbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Fri, 15 Dec 2023 10:15:32 +0200 Subject: [PATCH 278/356] iris: use intel_needs_workaround with 14015055625 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was missing from the FS stage primitive-id check. Also add usage of macro to avoid running any extra code on platforms where this WA would not apply. Fixes: 0f147240398 ("iris: Implement Wa_14015297576") Signed-off-by: Tapani Pälli Reviewed-by: José Roberto de Souza Part-of: (cherry picked from commit 82553774e2d1c3edff4c8e8683808d159846f83d) --- .pick_status.json | 2 +- src/gallium/drivers/iris/iris_state.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 2f529e90646..5be7afcb4ec 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -964,7 +964,7 @@ "description": "iris: use intel_needs_workaround with 14015055625", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "0f147240398a5e9d424e507d9cd271802a340114", "notes": null diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index b7c194ab96e..33301e548c8 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -6806,13 +6806,16 @@ iris_upload_dirty_render_state(struct iris_context *ice, bool program_needs_wa_14015055625 = false; +#if INTEL_WA_14015055625_GFX_VER /* Check if FS stage will use primitive ID overrides for Wa_14015055625. */ const struct brw_vue_map *last_vue_map = &brw_vue_prog_data(ice->shaders.last_vue_shader->prog_data)->vue_map; if ((wm_prog_data->inputs & VARYING_BIT_PRIMITIVE_ID) && - last_vue_map->varying_to_slot[VARYING_SLOT_PRIMITIVE_ID] == -1) { + last_vue_map->varying_to_slot[VARYING_SLOT_PRIMITIVE_ID] == -1 && + intel_needs_workaround(batch->screen->devinfo, 14015055625)) { program_needs_wa_14015055625 = true; } +#endif for (int stage = 0; stage <= MESA_SHADER_FRAGMENT; stage++) { if (!(stage_dirty & (IRIS_STAGE_DIRTY_VS << stage))) @@ -6828,8 +6831,10 @@ iris_upload_dirty_render_state(struct iris_context *ice, uint32_t scratch_addr = pin_scratch_space(ice, batch, prog_data, stage); +#if INTEL_WA_14015055625_GFX_VER shader_program_needs_wa_14015055625(ice, batch, prog_data, stage, &program_needs_wa_14015055625); +#endif if (stage == MESA_SHADER_FRAGMENT) { UNUSED struct iris_rasterizer_state *cso = ice->state.cso_rast; From 2d842a3f3bf8781ad5a001bb6c109933f5f7564c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Thu, 14 Dec 2023 11:32:53 +0100 Subject: [PATCH 279/356] gallium/dri: Return __DRI_ATTRIB_SWAP_UNDEFINED for _SWAP_METHOD In contrast to __DRI_ATTRIB_SWAP_EXCHANGE, this is compatible with Mesa < 23.3 on the client side. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10080 Fixes: e64ab3e4a94c ("glx: Delete support for GLX_OML_swap_method.") Part-of: (cherry picked from commit 9548f969bda1075b20dd56a73cbf1e35c0cf7aba) --- .pick_status.json | 2 +- src/gallium/frontends/dri/dri_util.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 5be7afcb4ec..a28cf6665db 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -524,7 +524,7 @@ "description": "gallium/dri: Return __DRI_ATTRIB_SWAP_UNDEFINED for _SWAP_METHOD", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "e64ab3e4a94c4e8baee3bec3a5eb4d098b8e7193", "notes": null diff --git a/src/gallium/frontends/dri/dri_util.c b/src/gallium/frontends/dri/dri_util.c index 2476121634a..201fc7f63d4 100644 --- a/src/gallium/frontends/dri/dri_util.c +++ b/src/gallium/frontends/dri/dri_util.c @@ -326,7 +326,7 @@ driGetConfigAttribIndex(const __DRIconfig *config, * for the X server's sake, and EGL will expect us to handle it because * it iterates all __DRI_ATTRIBs. */ - *value = __DRI_ATTRIB_SWAP_EXCHANGE; + *value = __DRI_ATTRIB_SWAP_UNDEFINED; break; case __DRI_ATTRIB_MAX_SWAP_INTERVAL: *value = INT_MAX; From 0bbbc9e7102594590afa33e7a73d4e8a55af459e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Thu, 14 Dec 2023 11:43:44 +0100 Subject: [PATCH 280/356] glx: Handle IGNORE_GLX_SWAP_METHOD_OML regardless of GLX_USE_APPLEGL Avoids tons of WARNING: unknown fbconfig attribute from server: tag 0x8060 value 0x8063 messages with LIBGL_DEBUG=verbose. Fixes: e64ab3e4a94c ("glx: Delete support for GLX_OML_swap_method.") Part-of: (cherry picked from commit f0594915e631877bcdf8ce67636143a017b41fb1) --- .pick_status.json | 2 +- src/glx/glxext.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index a28cf6665db..a6307c1eae2 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -514,7 +514,7 @@ "description": "glx: Handle IGNORE_GLX_SWAP_METHOD_OML regardless of GLX_USE_APPLEGL", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "e64ab3e4a94c4e8baee3bec3a5eb4d098b8e7193", "notes": null diff --git a/src/glx/glxext.c b/src/glx/glxext.c index 7712e54c1d6..39d5f08bdcf 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -563,12 +563,11 @@ __glXInitializeVisualConfigFromTags(struct glx_config * config, int count, case GLX_SAMPLES_SGIS: config->samples = *bp++; break; -#ifdef GLX_USE_APPLEGL case IGNORE_GLX_SWAP_METHOD_OML: /* We ignore this tag. See the comment above this function. */ ++bp; break; -#else +#ifndef GLX_USE_APPLEGL case GLX_BIND_TO_TEXTURE_RGB_EXT: config->bindToTextureRgb = *bp++; break; From 684d11421c30c0f8230ccbcc8dcc94a457eb5f44 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Mon, 18 Dec 2023 10:44:25 -0800 Subject: [PATCH 281/356] d3d12: Only destroy the winsys during screen destruction, not reset Fixes: 81c8e89f ("d3d12: Fix screen->winsys leak in d3d12_screen") Part-of: (cherry picked from commit 325fb6e26b62326c86514d263ffedd241fd36865) --- .pick_status.json | 2 +- src/gallium/drivers/d3d12/d3d12_screen.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index a6307c1eae2..2056adad921 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -414,7 +414,7 @@ "description": "d3d12: Only destroy the winsys during screen destruction, not reset", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "81c8e89ff8e846839fffc1d103b2080bef5c1b5c", "notes": null diff --git a/src/gallium/drivers/d3d12/d3d12_screen.cpp b/src/gallium/drivers/d3d12/d3d12_screen.cpp index ee74cf2b064..9b0233fb9d9 100644 --- a/src/gallium/drivers/d3d12/d3d12_screen.cpp +++ b/src/gallium/drivers/d3d12/d3d12_screen.cpp @@ -735,15 +735,15 @@ d3d12_deinit_screen(struct d3d12_screen *screen) screen->dev->Release(); screen->dev = nullptr; } - if (screen->winsys) { - screen->winsys->destroy(screen->winsys); - screen->winsys = nullptr; - } } void d3d12_destroy_screen(struct d3d12_screen *screen) { + if (screen->winsys) { + screen->winsys->destroy(screen->winsys); + screen->winsys = nullptr; + } slab_destroy_parent(&screen->transfer_pool); mtx_destroy(&screen->submit_mutex); mtx_destroy(&screen->descriptor_pool_mutex); From ab4a2e97a9ae8340f755193f8d0b4f8cfa929b23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Date: Tue, 14 Nov 2023 09:23:23 +0100 Subject: [PATCH 282/356] egl/glx: fallback to software when Zink is forced and fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When `MESA_LOADER_DRIVER_OVERRIDE` is set to `zink` and the display initialization fails, fallback to software rendering. The error was reported in #10123 and it can be reproduced with: $ MESA_LOADER_DRIVER_OVERRIDE=zink eglinfo `eglinfo` would crash in `dri2_display_release()` because of `assert(dri2_dpy->ref_count > 0)`. After bisecting the error to commit 8cd44b884387 ("egl/glx: add autoloading for zink"), I found out that, before this change, the display was set to initialized even when `_eglDriver.Initialize(disp)` failed: disp->Options.Zink = env && !strcmp(env, "zink"); // disp->Options.Zink is true if (!_eglDriver.Initialize(disp)) { [...] // Zink initialization has failed at this point // However, success is set to true: bool success = disp->Options.Zink; if (!disp->Options.Zink && !getenv("GALLIUM_DRIVER")) { [...] } // Software initialization is ignored because success is true if (!success) { [...] } } // The display is set as initialized even though it shouldn't disp->Initialized = EGL_TRUE; Resolves: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10123 Fixes: 8cd44b884387 ("egl/glx: add autoloading for zink") Signed-off-by: José Expósito Part-of: (cherry picked from commit d913927fe9201f0fea71ef0e614b9c400c122d49) --- .pick_status.json | 2 +- src/egl/main/eglapi.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 2056adad921..446acdb8812 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -234,7 +234,7 @@ "description": "egl/glx: fallback to software when Zink is forced and fails", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "8cd44b8843877a2f7d559d123eb3694841f16fdc", "notes": null diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index b9f179c2ce3..d50be23e871 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -695,7 +695,7 @@ eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor) if (disp->Options.ForceSoftware) RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE); else { - bool success = disp->Options.Zink; + bool success = false; if (!disp->Options.Zink && !getenv("GALLIUM_DRIVER")) { disp->Options.Zink = EGL_TRUE; success = _eglDriver.Initialize(disp); From e17dfc075a4b2f339faaac6ef051836b6f7dd880 Mon Sep 17 00:00:00 2001 From: Sviatoslav Peleshko Date: Mon, 13 Nov 2023 13:40:10 +0200 Subject: [PATCH 283/356] nir/loop_analyze: Don't test non-positive iterations count Testing negative iterations count makes no sense, and can cause issues when the unsigned type is used. Testing 0 iterations is already covered with will_break_on_first_iteration, so it can be skipped too. Fixes: 6772a17a ("nir: Add a loop analysis pass") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9913 Signed-off-by: Sviatoslav Peleshko Reviewed-by: Ian Romanick Part-of: (cherry picked from commit a6459e0f7bcb662130c79764ccf54ccfa9151182) --- .pick_status.json | 2 +- src/compiler/nir/nir_loop_analyze.c | 4 +++- src/compiler/nir/tests/loop_analyze_tests.cpp | 11 +++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 446acdb8812..a10aa151b66 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -204,7 +204,7 @@ "description": "nir/loop_analyze: Don't test non-positive iterations count", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "6772a17acc8ee90f9398348251a4455f988208fd", "notes": null diff --git a/src/compiler/nir/nir_loop_analyze.c b/src/compiler/nir/nir_loop_analyze.c index f468d2316e5..d9c0492a065 100644 --- a/src/compiler/nir/nir_loop_analyze.c +++ b/src/compiler/nir/nir_loop_analyze.c @@ -1138,11 +1138,13 @@ calculate_iterations(nir_def *basis, nir_def *limit_basis, */ for (int bias = -1; bias <= 1; bias++) { const int iter_bias = iter_int + bias; + if (iter_bias < 1) + continue; if (test_iterations(iter_bias, step, limit, alu_op, bit_size, induction_base_type, initial, limit_rhs, invert_cond, execution_mode)) { - return iter_bias > 0 ? iter_bias - trip_offset : iter_bias; + return iter_bias - trip_offset; } } diff --git a/src/compiler/nir/tests/loop_analyze_tests.cpp b/src/compiler/nir/tests/loop_analyze_tests.cpp index f7c3c41d750..a530b7f226c 100644 --- a/src/compiler/nir/tests/loop_analyze_tests.cpp +++ b/src/compiler/nir/tests/loop_analyze_tests.cpp @@ -285,6 +285,7 @@ COMPARE_REVERSE(ishl) INOT_COMPARE(ilt_rev) INOT_COMPARE(ine) +INOT_COMPARE(uge_rev) #define KNOWN_COUNT_TEST(_init_value, _cond_value, _incr_value, cond, incr, count) \ TEST_F(nir_loop_analyze_test, incr ## _ ## cond ## _known_count_ ## count) \ @@ -567,6 +568,16 @@ KNOWN_COUNT_TEST_INVERT(0x00000000, 0x00000001, 0x00000006, ige, iadd, 5) */ KNOWN_COUNT_TEST(0x0000000a, 0x00000005, 0xffffffff, inot_ilt_rev, iadd, 5) +/* uint i = 0; + * while (true) { + * if (!(0 >= i)) + * break; + * + * i += 1; + * } + */ +KNOWN_COUNT_TEST(0x00000000, 0x00000000, 0x00000001, inot_uge_rev, iadd, 1) + /* uint i = 0; * while (true) { * if (i != 0) From af708d5e80d673cc3a03f898d84997ec1da58794 Mon Sep 17 00:00:00 2001 From: Sviatoslav Peleshko Date: Fri, 13 Oct 2023 05:02:22 +0300 Subject: [PATCH 284/356] intel/fs: Don't optimize DW*1 MUL if it stores value to the accumulator Fixes: a8b86459 ("i965/fs: Optimize a * 1.0 -> a.") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9570 Signed-off-by: Sviatoslav Peleshko Reviewed-by: Ian Romanick Part-of: (cherry picked from commit 8f8cde4c6050d1e91101ec66e8982036da9d7700) --- .pick_status.json | 2 +- src/intel/compiler/brw_fs.cpp | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index a10aa151b66..abc560dd200 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -194,7 +194,7 @@ "description": "intel/fs: Don't optimize DW*1 MUL if it stores value to the accumulator", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a8b86459a1bb74cfdf0d63572a9fe194b2b5b53f", "notes": null diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp index db67b332576..696b5db8d9d 100644 --- a/src/intel/compiler/brw_fs.cpp +++ b/src/intel/compiler/brw_fs.cpp @@ -2788,6 +2788,29 @@ fs_visitor::opt_algebraic() if (brw_reg_type_is_floating_point(inst->src[1].type)) break; + /* From the BDW PRM, Vol 2a, "mul - Multiply": + * + * "When multiplying integer datatypes, if src0 is DW and src1 + * is W, irrespective of the destination datatype, the + * accumulator maintains full 48-bit precision." + * ... + * "When multiplying integer data types, if one of the sources + * is a DW, the resulting full precision data is stored in + * the accumulator." + * + * There are also similar notes in earlier PRMs. + * + * The MOV instruction can copy the bits of the source, but it + * does not clear the higher bits of the accumulator. So, because + * we might use the full accumulator in the MUL/MACH macro, we + * shouldn't replace such MULs with MOVs. + */ + if ((brw_reg_type_to_size(inst->src[0].type) == 4 || + brw_reg_type_to_size(inst->src[1].type) == 4) && + (inst->dst.is_accumulator() || + inst->writes_accumulator_implicitly(devinfo))) + break; + /* a * 1.0 = a */ if (inst->src[1].is_one()) { inst->opcode = BRW_OPCODE_MOV; From 771c65fe5f183347b4295b6ef87d34b0f77f72e1 Mon Sep 17 00:00:00 2001 From: Sil Vilerino Date: Wed, 6 Dec 2023 20:09:44 -0500 Subject: [PATCH 285/356] d3d12: Fix AV1 video encode 32 bits build Reviewed-by: Jesse Natalie Part-of: (cherry picked from commit 096e17b57832e96e36fc27f70e7a0e5ccbb0ac8a) --- .pick_status.json | 2 +- .../drivers/d3d12/d3d12_video_enc_av1.cpp | 58 +++++++++---------- ...12_video_encoder_bitstream_builder_av1.cpp | 10 ++-- ...2_video_encoder_references_manager_av1.cpp | 2 +- 4 files changed, 36 insertions(+), 36 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index abc560dd200..f7837a6437d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -7044,7 +7044,7 @@ "description": "d3d12: Fix AV1 video encode 32 bits build", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp b/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp index 2c1964aa274..a5e2a2e3d39 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp @@ -2189,7 +2189,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc writtenTemporalDelimBytes // Bytes Written AFTER placingPositionStart arg above ); assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == writtenTemporalDelimBytes); - debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", writtenTemporalDelimBytes); + debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", static_cast(writtenTemporalDelimBytes)); } size_t writtenSequenceBytes = 0; @@ -2208,7 +2208,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc writtenSequenceBytes // Bytes Written AFTER placingPositionStart arg above ); assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == (writtenSequenceBytes + writtenTemporalDelimBytes)); - debug_printf("Written OBU_SEQUENCE_HEADER bytes: %" PRIu64 "\n", writtenSequenceBytes); + debug_printf("Written OBU_SEQUENCE_HEADER bytes: %" PRIu64 "\n", static_cast(writtenSequenceBytes)); } // Only supported bitstream format is with obu_size for now. @@ -2254,14 +2254,14 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc writtenFrameBytes // Bytes Written AFTER placingPositionStart arg above ); - debug_printf("Written OBU_FRAME bytes: %" PRIu64 "\n", writtenFrameBytes); + debug_printf("Written OBU_FRAME bytes: %" PRIu64 "\n", static_cast(writtenFrameBytes)); assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == (writtenSequenceBytes + writtenTemporalDelimBytes + writtenFrameBytes)); debug_printf("Uploading %" PRIu64 " bytes from OBU sequence and/or picture headers to comp_bit_destination %p at offset 0\n", - pD3D12Enc->m_BitstreamHeadersBuffer.size(), + static_cast(pD3D12Enc->m_BitstreamHeadersBuffer.size()), associatedMetadata.comp_bit_destination); // Upload headers to the finalized compressed bitstream buffer @@ -2330,13 +2330,13 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc writtenFrameBytes // Bytes Written AFTER placingPositionStart arg above ); - debug_printf("Written OBU_FRAME_HEADER bytes: %" PRIu64 "\n", writtenFrameBytes); + debug_printf("Written OBU_FRAME_HEADER bytes: %" PRIu64 "\n", static_cast(writtenFrameBytes)); assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == (writtenSequenceBytes + writtenTemporalDelimBytes + writtenFrameBytes)); debug_printf("Uploading %" PRIu64 " bytes from OBU headers to comp_bit_destination %p at offset 0\n", - pD3D12Enc->m_BitstreamHeadersBuffer.size(), + static_cast(pD3D12Enc->m_BitstreamHeadersBuffer.size()), associatedMetadata.comp_bit_destination); // Upload headers to the finalized compressed bitstream buffer @@ -2361,7 +2361,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc debug_printf("Uploading tile group %d to comp_bit_destination %p at offset %" PRIu64 "\n", tg_idx, associatedMetadata.comp_bit_destination, - comp_bitstream_offset); + static_cast(comp_bitstream_offset)); size_t tile_group_obu_size = 0; size_t decode_tile_elements_size = 0; @@ -2387,9 +2387,9 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc debug_printf("Written %" PRIu64 " bytes for OBU_TILE_GROUP open_bitstream_unit() prefix with obu_header() and " "obu_size to staging_bitstream_buffer %p at offset %" PRIu64 "\n", - writtenTileObuPrefixBytes, + static_cast(writtenTileObuPrefixBytes), associatedMetadata.m_StagingBitstreamConstruction.data(), - staging_bitstream_buffer_offset); + static_cast(staging_bitstream_buffer_offset)); writtenTileBytes += writtenTileObuPrefixBytes; @@ -2404,10 +2404,10 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc debug_printf("Uploading %" PRIu64 " bytes for OBU_TILE_GROUP open_bitstream_unit() prefix with obu_header() " "and obu_size: %" PRIu64 " to comp_bit_destination %p at offset %" PRIu64 "\n", - writtenTileObuPrefixBytes, - tile_group_obu_size, + static_cast(writtenTileObuPrefixBytes), + static_cast(tile_group_obu_size), associatedMetadata.comp_bit_destination, - comp_bitstream_offset); + static_cast(comp_bitstream_offset)); staging_bitstream_buffer_offset += writtenTileObuPrefixBytes; @@ -2517,7 +2517,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc // Add current pending frame being processed in the loop extra_show_existing_frame_payload_bytes += writtenTemporalDelimBytes; - debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", writtenTemporalDelimBytes); + debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", static_cast(writtenTemporalDelimBytes)); size_t writtenShowExistingFrameBytes = 0; av1_pic_header_t showExistingPicHdr = {}; @@ -2561,7 +2561,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc "in current frame ref_frame_idx[%" PRIu32 "]) bytes: %" PRIu64 "\n", *pendingFrameIt /*PictureIndex*/, showExistingPicHdr.frame_to_show_map_idx, - writtenShowExistingFrameBytes); + static_cast(writtenShowExistingFrameBytes)); // Remove it from the list of pending frames pendingFrameIt = @@ -2628,7 +2628,7 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, tileGroup.tg_start, tileGroup.tg_end, comp_bit_destination, - comp_bit_destination_offset); + static_cast(comp_bit_destination_offset)); debug_printf("[Tile group start %d to end %d] Using staging_bitstream_buffer %p at offset %" PRIu64 " to write the tile_obu_group() prefix syntax: tile_start_and_end_present_flag, tg_start, tg_end and " @@ -2636,7 +2636,7 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, tileGroup.tg_start, tileGroup.tg_end, staging_bitstream_buffer.data(), - staging_bitstream_buffer_offset); + static_cast(staging_bitstream_buffer_offset)); // Reserve space upfront in the scratch storage // Do not modify anything before staging_bitstream_buffer_offset @@ -2673,9 +2673,9 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, " for tile_obu_group() prefix syntax: tile_start_and_end_present_flag, tg_start, tg_end\n", tileGroup.tg_start, tileGroup.tg_end, - bitstream_tile_group_obu_bytes, + static_cast(bitstream_tile_group_obu_bytes), staging_bitstream_buffer.data(), - staging_bitstream_buffer_offset); + static_cast(staging_bitstream_buffer_offset)); // Save this to compare the final written destination byte size against the expected tile_group_obu_size @@ -2699,11 +2699,11 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, " to comp_bit_destination %p at offset %" PRIu64 "\n", tileGroup.tg_start, tileGroup.tg_end, - bitstream_tile_group_obu_bytes, + static_cast(bitstream_tile_group_obu_bytes), staging_bitstream_buffer.data(), - staging_bitstream_buffer_offset, + static_cast(staging_bitstream_buffer_offset), comp_bit_destination, - comp_bit_destination_offset); + static_cast(comp_bit_destination_offset)); comp_bit_destination_offset += bitstream_tile_group_obu_bytes; written_bytes_to_staging_bitstream_buffer += bitstream_tile_group_obu_bytes; @@ -2729,9 +2729,9 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, tileGroup.tg_start, tileGroup.tg_end, TileIdx, - TileSizeBytes, + static_cast(TileSizeBytes), staging_bitstream_buffer.data(), - (written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset)); + static_cast(written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset)); // Upload current tile_size_minus_1 // Note: The buffer_subdata is queued in pD3D12Enc->base.context but doesn't execute immediately @@ -2751,11 +2751,11 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, tileGroup.tg_start, tileGroup.tg_end, TileIdx, - TileSizeBytes, + static_cast(TileSizeBytes), staging_bitstream_buffer.data(), - (written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset), + static_cast(written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset), comp_bit_destination, - comp_bit_destination_offset); + static_cast(comp_bit_destination_offset)); comp_bit_destination_offset += TileSizeBytes; written_bytes_to_staging_bitstream_buffer += TileSizeBytes; @@ -2788,11 +2788,11 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, tileGroup.tg_start, tileGroup.tg_end, TileIdx, - tile_size, + static_cast(tile_size), src_driver_bitstream, - src_buf_tile_position, + static_cast(src_buf_tile_position), comp_bit_destination, - comp_bit_destination_offset); + static_cast(comp_bit_destination_offset)); comp_bit_destination_offset += tile_size; } diff --git a/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp b/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp index 25550a2b4fb..96b7e32eb8e 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp @@ -153,7 +153,7 @@ d3d12_video_bitstream_builder_av1::write_temporal_delimiter_obu(std::vector(bitstream_seq.get_byte_count()); + const uint64_t obu_size_in_bytes = bitstream_seq.get_byte_count(); debug_printf("obu_size: %" PRIu64 "\n", obu_size_in_bytes); pack_obu_header_size(&bitstream_full_obu, obu_size_in_bytes); @@ -802,7 +802,7 @@ d3d12_video_bitstream_builder_av1::write_frame_header(const av1_seq_header_t *pS debug_printf("frame_header_obu() bytes (without OBU_FRAME nor OBU_FRAME_HEADER alignment padding): %" PRId32 "\n", bitstream_pic.get_byte_count()); // May be bit unaligned at this point (see padding below) debug_printf("extra_obu_size_bytes (ie. tile_group_obu_size if writing OBU_FRAME ): %" PRIu64 "\n", - extra_obu_size_bytes); + static_cast(extra_obu_size_bytes)); // Write the obu_header constexpr uint32_t obu_extension_flag = 0; @@ -825,7 +825,7 @@ d3d12_video_bitstream_builder_av1::write_frame_header(const av1_seq_header_t *pS bitstream_pic.flush(); // Write the obu_size element - const size_t obu_size_in_bytes = bitstream_pic.get_byte_count() + extra_obu_size_bytes; + const uint64_t obu_size_in_bytes = bitstream_pic.get_byte_count() + extra_obu_size_bytes; debug_printf("obu_size: %" PRIu64 "\n", obu_size_in_bytes); pack_obu_header_size(&bitstream_full_obu, obu_size_in_bytes); @@ -913,7 +913,7 @@ d3d12_video_bitstream_builder_av1::write_obu_tile_group_header(size_t tile_group // Write the obu_size element pack_obu_header_size(&bitstream_full_obu, tile_group_obu_size); - debug_printf("obu_size: %" PRIu64 "\n", tile_group_obu_size); + debug_printf("obu_size: %" PRIu64 "\n", static_cast(tile_group_obu_size)); bitstream_full_obu.flush(); diff --git a/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp b/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp index 49892338984..2f4bcf0e1eb 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp @@ -213,7 +213,7 @@ d3d12_video_encoder_references_manager_av1::print_virtual_dpb_entries() "Number of DPB virtual entries is %" PRIu64 " entries for frame with OrderHint " "%d (PictureIndex %d) are: \n%s \n", m_PhysicalAllocationsStorage.get_number_of_pics_in_dpb(), - m_CurrentFrameReferencesData.pVirtualDPBEntries.size(), + static_cast(m_CurrentFrameReferencesData.pVirtualDPBEntries.size()), m_CurrentFramePicParams.OrderHint, m_CurrentFramePicParams.PictureIndex, dpbContents.c_str()); From 8d2fa241ae9ee1a9c5066835cfe4f76deade622c Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Wed, 20 Dec 2023 19:49:29 +0000 Subject: [PATCH 286/356] .pick_status.json: Update to e61fae6eb8ae1ae1228d6f89329324310db808ae --- .pick_status.json | 520 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 520 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index f7837a6437d..136bb42286f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,524 @@ [ + { + "sha": "e61fae6eb8ae1ae1228d6f89329324310db808ae", + "description": "lavapipe: bump image alignment up to 64 bytes", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4d93aac74df68fad9b2ca5a9c653b913874f383d", + "description": "radv: Use correct plane and binding index with SDMA.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "ab4720691c65e2624d0c41237cbee2801ddf90ac", + "description": "radv: Clean up SDMA chunked copy info struct.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7fe899a3b6350d4b82bf716560be2b202b922251", + "description": "radv: Use SDMA surface structs for determining unaligned buffer copies.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dab48633966d15b398737f987ea934e86363304e", + "description": "radv: Pass radv_sdma_surf from copy functions to SDMA.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "85fa749c639a4adf00d51ab10f4321ae09882f60", + "description": "radv: Refactor and simplify SDMA surface info functions.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a21cba679917680e6ac41ed4c8df49d1eefe82b4", + "description": "radv: Unify SDMA surface struct for linear and tiled images.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "65dfdd3fff293bcd4ac7e3ca2292d97d63537cd2", + "description": "radv: Move SDMA function and struct declarations to a new header.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2ce0ea8e7c1bb4fc0552f8e6bf67b6966b688106", + "description": "radv/ci: update CI lists for NAVI10,NAVI31 and RENOIR", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "27c46dd20778d08a74a483ab1857d3e4df72511a", + "description": "radeonsi: emit SQ_NON_EVENT for GFX11_5", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "981fbafa187b0d040be8acd22de962cd23de6cbb", + "description": "radeonsi: fix extra_md handling with fmask", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5371fca829d16e778e9c29a0708cd3185997f9ff", + "description": "radeonsi/sqtt: handle COMPUTE queues as well", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2efd1baa6446bed0426058eb0424ba40112c347c", + "description": "radeonsi/sqtt: fix capturing RGP on RDNA3 with more than one Shader Engine", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e0507ec50b0186ac0a31d0751a93127fe50842e6", + "description": "radeonsi/sqtt: fix emitting SQTT userdata when CAM is needed", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "a2cfd4186f80d9c78846b5ddface39bf60d37537", + "description": "radeonsi/winsys: add cs_get_ip_type function", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c1f08608b8097dfce7d6a79bcb8b7ed13b0b044b", + "description": "radeonsi/sqtt: fix capturing indirect dispatches with SQTT", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5139441c96d9f0ecfc5d62bd3eb1811afd3a3c65", + "description": "radeonsi/sqtt: reformat with clang-format", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "af8e6c93473da991abbf588ce24ef409b08e84ce", + "description": "radeonsi/sqtt: use calloc instead of malloc", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b55a2065e03e0f033217b1b58a0c18e3a5e86136", + "description": "radeonsi/sqtt: rework pm4.reg_va_low_idx", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "8034a71430be0b6473449028d90937729b77d6d9", + "notes": null + }, + { + "sha": "e4d537fb84369906d7eda9229f847f5d4cdfb124", + "description": "radeonsi/sqtt: clear record_counts variable", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "94ce6540d8c8c46c285d3877af4a56f5b59e5d80", + "notes": null + }, + { + "sha": "77098ec467fae56d3e3885d8e84137ac410e15cc", + "description": "radeonsi/sqtt: fix RGP pm4 state emit function", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "c3129b2b83955277f9dc73f4acb0dfb0ad50e566", + "notes": null + }, + { + "sha": "63e08bd61d61a0ab92ca6bcd85567217a052a8d5", + "description": "rusticl/nir: add missing nir include", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c4d8f257ce5ca76144dcacc0c16702f114f73003", + "description": "rusticl: fix constant and printf buffer size", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7e74ee07e3a7aebc46cbd6d724b49790cb9f9c29", + "description": "rusticl: silence clippy::arc-with-non-send-sync for now", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "382718e0e1493ae9d654a667f4c5a75ac86422b6", + "description": "rusticl: do not warn on empty RUSTICL_DEBUG or RUSTICL_FEATURES", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "b90d1cfbfea9fe40e2ec6d44e788ab27ff213e2a", + "notes": null + }, + { + "sha": "f8afd416677d3c7abb527eb71299fda841bef73d", + "description": "clc: add workaround for clang always defining __IMAGE_SUPPORT_ and __opencl_c_int64", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "07ad6fd34a6ed32b74a3f9697545261a3fd84de2", + "description": "radv: Use correct writemask for cooperative matrix ordering.", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "9df4703fbb59d1295a9d3daf6320f329c9de2d66", + "notes": null + }, + { + "sha": "16af090908e8eb4fff552151dbb130120e11c1f9", + "description": "ci/lava: separate HW definitions from SW", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d04ee0771277d475c005847c8797107335fd4d22", + "description": "radeonsi: Add support to clear LDS at the end of a shader.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "eaf61adea56a9242a160afa4f68827e6568b4e80", + "description": "radv: Add option to clear LDS at the end of a shader.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "da6a5e1f63713d0d1dd66841e1f9bb754a0cdb99", + "description": "nir: Add pass for clearing memory at the end of a shader.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bc99b73d70b9ab84390564ad2ade7bca998135e7", + "description": "nir: Add nir_static_workgroup_size helper.", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "21d569b081ca68f47d5a5dd54f840867c34e148e", + "description": "radeonsi: unify elf and raw shader binary upload", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f11b4d1ebef0d5014a1ba69c1e9227736461fe13", + "description": "nvk: Advertise shaderFloat64", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4a4815b8552bf216cebe6e598905c1714dd9a203", + "description": "nak/nir: Lower a bunch of fp64", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3e042173e4bb2ba5cdac1b3328d9b8021ba19c07", + "description": "nir/lower_doubles: Add lowering for fmin/fmax/fsat", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e1fecd83edcd6d6682acb14f8256b3436272856a", + "description": "nak/sm50: Add DMnMx and use it for fp64 fmin/fmax", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1a7e83c87f09eca150da25efa852fc36dd330105", + "description": "nak/sm50: Properly legalize OpSel and drop an assert", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "7f5c6642d807060a9be1baf5fe3bc3ef6cf23f05", + "description": "nak/sm50: Fix encoding of iadd with imm32", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0ac6a81ab5f0f7aa083afd6bf674c78af13e0878", + "description": "nak: sm50: fix ineg legalization", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "73a1acef18fabbfc1699eb3504a3f829dbd7030f", + "description": "nak/sm50: Fix encoding of f20 immediates", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "17d2b2f2cc39e6020e49ea06855e083361956e94", + "description": "nak/sm50: Add encoding and legalization for dadd/dfma/dmul/dsetp", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1f5623c5576ed87f44333f255ab8c62be22d95d6", + "description": "nak: Implement 64-bit nir_op_fsign", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d03cbac05af0398a8e126296829f40b9e4986d13", + "description": "nak: Fix encoding of dsetp with RZ on SM70+", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "52dbf44d2e9a39d12b17366efbc1eedabf0e632b", + "description": "glsl: add support for inout params to glsl_to_nir()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3d3ba9f4287f09f391e861b8e57882e3a7df4ea5", + "description": "glsl: move glsl ir lowering out of glsl_to_nir()", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "bb1873faad7f29986b62f9f13eb1d5930e71f0b9", + "description": "glsl: add additional lower mediump test", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "d42f9d94afc0d1e1e9ad2414634e4a0c7c04176b", + "description": "glsl: copy precision val of function output params", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e3c26889acf6baecb99d5fa5c29881ad5b0e9fb3", + "description": "d3d12: Report support for PIPE_VIDEO_CAP_ENC_ROI for Delta QP", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "917044db98ed3c6f9bed2941efad07cc93aa1173", + "description": "d3d12: Implement Delta QP ROI In h264, hevc and av1 video encode", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "37e83a93d76fbd496164f86b85370ad3094862f4", + "description": "glsl: remove some unused linker code", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4584acca6b3f4be649b1c2f495ff88a929484b35", + "description": "glsl: tidy up validation loop in linker", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, { "sha": "670a799ebff9a98daafccf49324c2a01311b0c41", "description": "meson: Support for both packaging and distutils", From a23408d57a8bf5d09e0c562c9d1bd032f5e217c7 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Mon, 18 Dec 2023 23:05:46 +0100 Subject: [PATCH 287/356] rusticl: do not warn on empty RUSTICL_DEBUG or RUSTICL_FEATURES Fixes: b90d1cfbfea ("rusticl/platform: add RUSTICL_FEATURES boilerplate") Fixes: ca1e9917a9b ("rusticl/program: allow dumping compilation logs through RUSTICL_DEBUG") Signed-off-by: Karol Herbst Part-of: (cherry picked from commit 382718e0e1493ae9d654a667f4c5a75ac86422b6) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/core/platform.rs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 136bb42286f..33b7de9321e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -244,7 +244,7 @@ "description": "rusticl: do not warn on empty RUSTICL_DEBUG or RUSTICL_FEATURES", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "b90d1cfbfea9fe40e2ec6d44e788ab27ff213e2a", "notes": null diff --git a/src/gallium/frontends/rusticl/core/platform.rs b/src/gallium/frontends/rusticl/core/platform.rs index 24f60f2af9d..d9605092ca5 100644 --- a/src/gallium/frontends/rusticl/core/platform.rs +++ b/src/gallium/frontends/rusticl/core/platform.rs @@ -79,6 +79,7 @@ fn load_env() { "clc" => debug.clc = true, "program" => debug.program = true, "sync" => debug.sync_every_event = true, + "" => (), _ => eprintln!("Unknown RUSTICL_DEBUG flag found: {}", flag), } } @@ -90,6 +91,7 @@ fn load_env() { match flag { "fp16" => features.fp16 = true, "fp64" => features.fp64 = true, + "" => (), _ => eprintln!("Unknown RUSTICL_FEATURES flag found: {}", flag), } } From 953da130705a0e775facc01ad7c06df925b0a759 Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Wed, 20 Dec 2023 00:19:55 +0100 Subject: [PATCH 288/356] radv: Use correct writemask for cooperative matrix ordering. Not expecting this to actually fix anything externally visible, but reduces some invalid usage when the resulting vector is not 16 elements long (e.g. the C/result matrix). Fixes: 9df4703fbb5 ("radv: Add cooperative matrix lowering.") Part-of: (cherry picked from commit 07ad6fd34a6ed32b74a3f9697545261a3fd84de2) --- .pick_status.json | 2 +- .../nir/radv_nir_lower_cooperative_matrix.c | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 33b7de9321e..08e8966ac91 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -264,7 +264,7 @@ "description": "radv: Use correct writemask for cooperative matrix ordering.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "9df4703fbb59d1295a9d3daf6320f329c9de2d66", "notes": null diff --git a/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c b/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c index d81231b0137..e882100e141 100644 --- a/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c +++ b/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c @@ -181,7 +181,7 @@ radv_nir_lower_cooperative_matrix(nir_shader *shader, unsigned wave_size) nir_def *elem = intr->src[1].ssa; nir_def *r = nir_vector_insert(&b, src1, elem, index); - nir_store_deref(&b, dst_deref, r, 0xffff); + nir_store_deref(&b, dst_deref, r, nir_component_mask(r->num_components)); nir_instr_remove(instr); progress = true; break; @@ -193,7 +193,7 @@ radv_nir_lower_cooperative_matrix(nir_shader *shader, unsigned wave_size) nir_def *r = nir_replicate(&b, elem, radv_nir_cmat_length(desc, wave_size)); - nir_store_deref(&b, dst_deref, r, 0xffff); + nir_store_deref(&b, dst_deref, r, nir_component_mask(r->num_components)); nir_instr_remove(instr); progress = true; break; @@ -253,7 +253,7 @@ radv_nir_lower_cooperative_matrix(nir_shader *shader, unsigned wave_size) } nir_def *mat = nir_vec(&b, vars, length); - nir_store_deref(&b, dst_deref, mat, 0xffff); + nir_store_deref(&b, dst_deref, mat, nir_component_mask(mat->num_components)); nir_instr_remove(instr); progress = true; break; @@ -332,7 +332,8 @@ radv_nir_lower_cooperative_matrix(nir_shader *shader, unsigned wave_size) ret = nir_cmat_muladd_amd(&b, A, B, C, .saturate = nir_intrinsic_saturate(intr), .cmat_signed_mask = nir_intrinsic_cmat_signed_mask(intr)); - nir_store_deref(&b, nir_instr_as_deref(intr->src[0].ssa->parent_instr), ret, 0xffff); + nir_store_deref(&b, nir_instr_as_deref(intr->src[0].ssa->parent_instr), ret, + nir_component_mask(ret->num_components)); nir_instr_remove(instr); progress = true; break; @@ -366,7 +367,7 @@ radv_nir_lower_cooperative_matrix(nir_shader *shader, unsigned wave_size) ret = nir_vec(&b, components, ret->num_components * 2); } - nir_store_deref(&b, dst_deref, ret, 0xffff); + nir_store_deref(&b, dst_deref, ret, nir_component_mask(ret->num_components)); nir_instr_remove(instr); progress = true; break; @@ -375,7 +376,8 @@ radv_nir_lower_cooperative_matrix(nir_shader *shader, unsigned wave_size) nir_def *src1 = radv_nir_load_cmat(&b, wave_size, intr->src[1].ssa); nir_op op = nir_intrinsic_alu_op(intr); nir_def *ret = nir_build_alu2(&b, op, src1, intr->src[2].ssa); - nir_store_deref(&b, nir_instr_as_deref(intr->src[0].ssa->parent_instr), ret, 0xffff); + nir_store_deref(&b, nir_instr_as_deref(intr->src[0].ssa->parent_instr), ret, + nir_component_mask(ret->num_components)); nir_instr_remove(instr); progress = true; break; @@ -385,14 +387,16 @@ radv_nir_lower_cooperative_matrix(nir_shader *shader, unsigned wave_size) nir_def *src2 = radv_nir_load_cmat(&b, wave_size, intr->src[2].ssa); nir_op op = nir_intrinsic_alu_op(intr); nir_def *ret = nir_build_alu2(&b, op, src1, src2); - nir_store_deref(&b, nir_instr_as_deref(intr->src[0].ssa->parent_instr), ret, 0xffff); + nir_store_deref(&b, nir_instr_as_deref(intr->src[0].ssa->parent_instr), ret, + nir_component_mask(ret->num_components)); nir_instr_remove(instr); progress = true; break; } case nir_intrinsic_cmat_bitcast: { nir_def *src1 = radv_nir_load_cmat(&b, wave_size, intr->src[1].ssa); - nir_store_deref(&b, nir_instr_as_deref(intr->src[0].ssa->parent_instr), src1, 0xffff); + nir_store_deref(&b, nir_instr_as_deref(intr->src[0].ssa->parent_instr), src1, + nir_component_mask(src1->num_components)); nir_instr_remove(instr); progress = true; break; From 78b48817d1b2f9ce672a72c521c659a02ca7b206 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 25 Sep 2023 11:14:20 +0200 Subject: [PATCH 289/356] radeonsi/sqtt: fix RGP pm4 state emit function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It was missing in c3129b2b839. Fixes: c3129b2b839 ("radeonsi: add a simple version of si_pm4_emit_state for non-shader states") Reviewed-by: Marek Olšák Part-of: (cherry picked from commit 77098ec467fae56d3e3885d8e84137ac410e15cc) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/si_state.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 08e8966ac91..7f15a8855a1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -204,7 +204,7 @@ "description": "radeonsi/sqtt: fix RGP pm4 state emit function", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "c3129b2b83955277f9dc73f4acb0dfb0ad50e566", "notes": null diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index b33626fb690..6329e3218ea 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -5441,6 +5441,7 @@ void si_init_state_functions(struct si_context *sctx) sctx->atoms.s.pm4_states[SI_STATE_IDX(rasterizer)].emit = si_pm4_emit_state; sctx->atoms.s.pm4_states[SI_STATE_IDX(dsa)].emit = si_pm4_emit_state; sctx->atoms.s.pm4_states[SI_STATE_IDX(poly_offset)].emit = si_pm4_emit_state; + sctx->atoms.s.pm4_states[SI_STATE_IDX(sqtt_pipeline)].emit = si_pm4_emit_state; sctx->atoms.s.pm4_states[SI_STATE_IDX(ls)].emit = si_pm4_emit_shader; sctx->atoms.s.pm4_states[SI_STATE_IDX(hs)].emit = si_pm4_emit_shader; sctx->atoms.s.pm4_states[SI_STATE_IDX(es)].emit = si_pm4_emit_shader; From 4425ef5653565c1361b15fdf80cb00946af87bc1 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 25 Sep 2023 11:21:38 +0200 Subject: [PATCH 290/356] radeonsi/sqtt: clear record_counts variable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This avoids hitting the asserts in ac_sqtt_finish. Fixes: 94ce6540d8c ("ac/sqtt: add helpers for initializing ac_thread_trace_data") Reviewed-by: Marek Olšák Part-of: (cherry picked from commit e4d537fb84369906d7eda9229f847f5d4cdfb124) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/si_sqtt.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 7f15a8855a1..8392b8ec25f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -194,7 +194,7 @@ "description": "radeonsi/sqtt: clear record_counts variable", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "94ce6540d8c8c46c285d3877af4a56f5b59e5d80", "notes": null diff --git a/src/gallium/drivers/radeonsi/si_sqtt.c b/src/gallium/drivers/radeonsi/si_sqtt.c index 63618e666be..eeaa83f05c4 100644 --- a/src/gallium/drivers/radeonsi/si_sqtt.c +++ b/src/gallium/drivers/radeonsi/si_sqtt.c @@ -677,12 +677,14 @@ void si_destroy_sqtt(struct si_context *sctx) { list_for_each_entry_safe(struct rgp_pso_correlation_record, record, &pso_correlation->record, list) { list_del(&record->list); + pso_correlation->record_count--; free(record); } list_for_each_entry_safe(struct rgp_loader_events_record, record, &loader_events->record, list) { list_del(&record->list); + loader_events->record_count--; free(record); } @@ -698,6 +700,7 @@ void si_destroy_sqtt(struct si_context *sctx) { } list_del(&record->list); free(record); + code_object->record_count--; } ac_sqtt_finish(sctx->sqtt); From fab56a0d03b8e1470a1fabf78499d86a58e0319a Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 7 Nov 2023 16:05:52 +0100 Subject: [PATCH 291/356] radeonsi/sqtt: rework pm4.reg_va_low_idx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The initial logic was to remember the place were SPI_SHADER_PGM_LO_* are written, then assume that we can get the register offset because the sequence would always be: PKT3_SET_SH_REG SPI_SHADER_PGM_LO_* register offset VA low 32 bits value <- reg_va_low_idx The problem is that this sequence isn't guaranteed, for instance we can get this instead: 0 c0067600 | 1 00000046 | 2 003ffffd | SPI_SHADER_PGM_RSRC3_VS 3 00000020 | SPI_SHADER_LATE_ALLOC_VS 4 * 00002080 | SPI_SHADER_PGM_LO_VS 5 00000080 | SPI_SHADER_PGM_HI_VS So the assert in si_state_draw.cpp would fail as well as the VA update logic. So instead remember which the SPI_SHADER_PGM_LO_* offset, and the low 32 bits of the VA in si_update_shaders. Fixes: 8034a71430b ("radeonsi/sqtt: re-export shaders in a single bo") Reviewed-by: Marek Olšák Part-of: (cherry picked from commit b55a2065e03e0f033217b1b58a0c18e3a5e86136) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/si_pm4.c | 5 +++-- src/gallium/drivers/radeonsi/si_pm4.h | 2 +- src/gallium/drivers/radeonsi/si_state_draw.cpp | 5 ++--- src/gallium/drivers/radeonsi/si_state_shaders.cpp | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 8392b8ec25f..1345c776293 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -184,7 +184,7 @@ "description": "radeonsi/sqtt: rework pm4.reg_va_low_idx", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "8034a71430be0b6473449028d90937729b77d6d9", "notes": null diff --git a/src/gallium/drivers/radeonsi/si_pm4.c b/src/gallium/drivers/radeonsi/si_pm4.c index 58badc48a2d..bed0023eb64 100644 --- a/src/gallium/drivers/radeonsi/si_pm4.c +++ b/src/gallium/drivers/radeonsi/si_pm4.c @@ -135,7 +135,7 @@ void si_pm4_finalize(struct si_pm4_state *state) if (strstr(ac_get_register_name(state->screen->info.gfx_level, state->screen->info.family, reg_offset), "SPI_SHADER_PGM_LO_")) { - state->reg_va_low_idx = get_packed_reg_valueN_idx(state, i); + state->spi_shader_pgm_lo_reg = reg_offset; break; } } @@ -162,7 +162,8 @@ void si_pm4_finalize(struct si_pm4_state *state) if (strstr(ac_get_register_name(state->screen->info.gfx_level, state->screen->info.family, reg_base_offset + i * 4), "SPI_SHADER_PGM_LO_")) { - state->reg_va_low_idx = state->last_pm4 + 2 + i; + state->spi_shader_pgm_lo_reg = reg_base_offset + i * 4; + break; } } diff --git a/src/gallium/drivers/radeonsi/si_pm4.h b/src/gallium/drivers/radeonsi/si_pm4.h index 39f72ed4167..56a6b654d3a 100644 --- a/src/gallium/drivers/radeonsi/si_pm4.h +++ b/src/gallium/drivers/radeonsi/si_pm4.h @@ -45,7 +45,7 @@ struct si_pm4_state { uint16_t max_dw; /* Used by SQTT to override the shader address */ - uint16_t reg_va_low_idx; + uint32_t spi_shader_pgm_lo_reg; /* This must be the last field because the array can continue after the structure. */ uint32_t pm4[64]; diff --git a/src/gallium/drivers/radeonsi/si_state_draw.cpp b/src/gallium/drivers/radeonsi/si_state_draw.cpp index 9b9858091a2..987765d8e33 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.cpp +++ b/src/gallium/drivers/radeonsi/si_state_draw.cpp @@ -370,9 +370,8 @@ static bool si_update_shaders(struct si_context *sctx) struct si_pm4_state *pm4 = &shader->pm4; - uint32_t va_low = (pipeline->bo->gpu_address + pipeline->offset[i]) >> 8; - assert(PKT3_IT_OPCODE_G(pm4->pm4[pm4->reg_va_low_idx - 2]) == PKT3_SET_SH_REG); - uint32_t reg = (pm4->pm4[pm4->reg_va_low_idx - 1] << 2) + SI_SH_REG_OFFSET; + uint64_t va_low = (pipeline->bo->gpu_address + pipeline->offset[i]) >> 8; + uint32_t reg = pm4->spi_shader_pgm_lo_reg; si_pm4_set_reg(&pipeline->pm4, reg, va_low); } } diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.cpp b/src/gallium/drivers/radeonsi/si_state_shaders.cpp index 7f4a73335da..f71523b974e 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.cpp +++ b/src/gallium/drivers/radeonsi/si_state_shaders.cpp @@ -1983,7 +1983,7 @@ static void si_shader_init_pm4_state(struct si_screen *sscreen, struct si_shader assert(0); } - assert(!(sscreen->debug_flags & DBG(SQTT)) || shader->pm4.reg_va_low_idx != 0); + assert(!(sscreen->debug_flags & DBG(SQTT)) || shader->pm4.spi_shader_pgm_lo_reg != 0); } static void si_clear_vs_key_inputs(struct si_context *sctx, union si_shader_key *key, From d93e7ef99f470ef1ea2391b90b21907c3665ab70 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Mon, 13 Nov 2023 21:20:12 +0100 Subject: [PATCH 292/356] radeonsi/sqtt: use calloc instead of malloc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes sure the record is fully initialized and fixes RGP crashes or missing shaders. Cc: mesa-stable Reviewed-by: Marek Olšák Part-of: (cherry picked from commit af8e6c93473da991abbf588ce24ef409b08e84ce) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/si_sqtt.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 1345c776293..759b86b4638 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -174,7 +174,7 @@ "description": "radeonsi/sqtt: use calloc instead of malloc", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/radeonsi/si_sqtt.c b/src/gallium/drivers/radeonsi/si_sqtt.c index eeaa83f05c4..f80d01a401f 100644 --- a/src/gallium/drivers/radeonsi/si_sqtt.c +++ b/src/gallium/drivers/radeonsi/si_sqtt.c @@ -1031,7 +1031,7 @@ si_sqtt_add_code_object(struct si_context* sctx, struct rgp_code_object *code_object = &sctx->sqtt->rgp_code_object; struct rgp_code_object_record *record; - record = malloc(sizeof(struct rgp_code_object_record)); + record = calloc(1, sizeof(struct rgp_code_object_record)); if (!record) return false; From 3c7025cc4e604d08fb0b6bdaf7e93df34b1c61bd Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Fri, 22 Dec 2023 15:47:28 +0000 Subject: [PATCH 293/356] .pick_status.json: Update to 1e6fcd6a611574241b1cde306afcc416a03ac76b --- .pick_status.json | 350 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 350 insertions(+) diff --git a/.pick_status.json b/.pick_status.json index 759b86b4638..8429adc40e1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1,4 +1,354 @@ [ + { + "sha": "1e6fcd6a611574241b1cde306afcc416a03ac76b", + "description": "dzn: Remove #if D3D12_SDK_VERSION blocks now that 611 is required", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "8023ede00adf08359e6d0c2ebd6e62ebbbcc3c4c", + "description": "ci: Remove per-driver wayland-dEQP-EGL xfails", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "c2bb95653b7873b1b61e712355a0488d33af31f2", + "description": "ci: Add wayland-dEQP-EGL.functional.render.* skips", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "4261621a7ee1b3b5af292ae5c980903d8a34e1cd", + "description": "ci: List specific color_clears skips", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dbe5b8b5a468981e793dde2b285f6cbb43773304", + "description": "ci: More context for color_clear skips for Wayland", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f49624fc97d3ca8362774f1a2d81f153b10f7a13", + "description": "freedreno/drm: fallback to default BO allocation if heap alloc fails", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "9e88c711a3da96cb633bdc35e009bcb1bd193d74", + "description": "drirc/anv: disable FCV optimization for Baldur's Gate 3", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f5d08bdf4e3a0e75a846b76889e234b7c9bbd754", + "description": "etnaviv: Remove duplicate initializers", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "9dc4ee91215cfd5ea6d98c4879abc4e7979b4c64", + "notes": null + }, + { + "sha": "184fc71aa171ae920eb8bd8309704f535fa5cd84", + "description": "iris: Only initialize batch decoder if necessary", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "68c53ec2c2b6e898f7e93c8e79f1b91d95ac07de", + "description": "freedreno: Add layout metadata support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "32fa9bed1223ff3636c39b416d9df9ff28d33389", + "description": "freedreno/drm: Add BO metadata support", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b8df7069d3e16be20f4c08537ca1ac389b7bb68d", + "description": "tu: Add metadata support for dedicated allocations", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "0105c2e2ebad80f2a8171f753b85a9f27783cb70", + "description": "freedreno/layout: Add layout metadata", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "96aba6e8e3b62795a859b557c2c50f496d8046a0", + "description": "drm-uapi: Sync drm-uapi", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "f2c97440f22a65028e13f21c8f7e906c1d435f6f", + "description": "intel: Only validate inst compaction if debugging a shader stage", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2309451c4f9b8687c31820d40edbd00ea2336cb5", + "description": "ci/google: re-enable farm", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "555955fc9f616042e669df2be6f7a16f544c2473", + "description": "dzn: Fix 3D to 2D image copies", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "629b15f446a41492fc5057c04008c6de9c52b078", + "description": "mesa: fix enum support for EXT_clip_cull_distance", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "979bcb9f4288564fb6c5807bcfbfd0a78176c3ef", + "notes": null + }, + { + "sha": "423f9d1bb0f506fa5e68d050d2c60e3fd41c788c", + "description": "ci: add nvk to the clang build", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2763655571acfc0020a1d3f4e41b599003a33474", + "description": "ci/freedreno: add FARM variable", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dc66de302980dadf2f4d866628d6e77c4f352b0e", + "description": "ci: bare-metal: cros-servo: Create strutured logs for a630", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "dc69d797ba1d80b4a0747a8936aa986c5c5333b3", + "description": "mesa: enable GL_SELECT and GL_FEEDBACK modes for indirect draws", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "1b09fbd9aa265bd1f969f9f85564b7ac4260a950", + "description": "mesa: add a pipe_draw_indirect_info* parameter into the DrawGallium callback", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "3ad1c3eb7c956f3bcc43327f9d92f088fbd5da46", + "description": "st/mesa: restore pipe_draw_info::mode at the end of st_hw_select_draw_gallium", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "e40f5a7cb3212f1d8b5faa7d9d0c40648625d2f7", + "description": "mesa: micro-improvements in draw.c", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "5a4eddc2987acbedca5cfdff4b1b9b38e5def5dd", + "description": "glthread: add a missing end-of-batch marker", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "c3b95d1507d809ff9c812c64021148a1681e47ce", + "notes": null + }, + { + "sha": "9643671dae06701fa5ad926b6f30909407d1f8ac", + "description": "rusticl: check rustc version for flags requiring newer rustc/clippy", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "7e74ee07e3a7aebc46cbd6d724b49790cb9f9c29", + "notes": null + }, + { + "sha": "eb5bb5c784e97c533e30b348e82e446ac0da59c8", + "description": "vk/util: ignore unsupported feature structs", + "nominated": true, + "nomination_type": 0, + "resolution": 0, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2816db0182fbc0555fde4503a2cda797a3472a56", + "description": "ci: disable the google/freedreno farm because it's down", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "fbb9ce014080edd085b2e998c3e6d7fb569ef0b0", + "description": "intel/common: add directory prefix to intel_gem.h include", + "nominated": true, + "nomination_type": 1, + "resolution": 0, + "main_sha": null, + "because_sha": "e050a00b9f4d057e93f61f79019b5cf8bcd04e49", + "notes": null + }, + { + "sha": "91e4428dc445e409fccfcb5f2016622a7e6c6a53", + "description": "radv/ci: add flake on raven", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "b2067001d43fd83ae4942fd2412f6a75b3769167", + "description": "radv/rt: bsearch inlined shaders", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "6b1fafe7164305fbdab6a2c88abf2e8f5cc88bc4", + "description": "nvk: Enable KHR_present_id and KHR_present_wait", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "edb52295387839b032d9c14bbf09994d4a3416d7", + "description": "nvk: Hook up driconf for nvk_instance", + "nominated": false, + "nomination_type": 3, + "resolution": 4, + "main_sha": null, + "because_sha": null, + "notes": null + }, + { + "sha": "2464cd81d3b74bfe1ac198777cc354010146225e", + "description": "nvk: Fix tautological-overlap-compare warning", + "nominated": false, + "nomination_type": 1, + "resolution": 4, + "main_sha": null, + "because_sha": "f1c909edd5c9159609ab27e7b6a7374796cceab3", + "notes": null + }, { "sha": "e61fae6eb8ae1ae1228d6f89329324310db808ae", "description": "lavapipe: bump image alignment up to 64 bytes", From 0c6d7bcd0c639a016312ee1b4923cfd040a30189 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Mon, 18 Dec 2023 23:05:58 +0100 Subject: [PATCH 294/356] rusticl: silence clippy::arc-with-non-send-sync for now Allows compilation with newer clippy Cc: mesa-stable Signed-off-by: Karol Herbst Part-of: (cherry picked from commit 7e74ee07e3a7aebc46cbd6d724b49790cb9f9c29) --- .pick_status.json | 2 +- src/gallium/frontends/rusticl/meson.build | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 8429adc40e1..6ea6ab5751d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -584,7 +584,7 @@ "description": "rusticl: silence clippy::arc-with-non-send-sync for now", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/frontends/rusticl/meson.build b/src/gallium/frontends/rusticl/meson.build index 92b23f548ff..279bd8d4d5a 100644 --- a/src/gallium/frontends/rusticl/meson.build +++ b/src/gallium/frontends/rusticl/meson.build @@ -89,6 +89,8 @@ rusticl_args = [ '-Aclippy::redundant_field_names', '-Aclippy::too_many_arguments', '-Aclippy::type_complexity', + # Needs to be fixed + '-Aclippy::arc-with-non-send-sync', ] rusticl_gen_args = [ From 676fd7a287a0509a2903f748bca631f05894fd00 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Wed, 20 Dec 2023 23:08:34 +0100 Subject: [PATCH 295/356] rusticl: check rustc version for flags requiring newer rustc/clippy Fixes: 7e74ee07e3a ("rusticl: silence clippy::arc-with-non-send-sync for now") Signed-off-by: Karol Herbst Part-of: (cherry picked from commit 9643671dae06701fa5ad926b6f30909407d1f8ac) --- .pick_status.json | 2 +- meson.build | 1 + src/gallium/frontends/rusticl/meson.build | 9 +++++++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 6ea6ab5751d..7b16caa7276 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -264,7 +264,7 @@ "description": "rusticl: check rustc version for flags requiring newer rustc/clippy", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "7e74ee07e3a7aebc46cbd6d724b49790cb9f9c29", "notes": null diff --git a/meson.build b/meson.build index fbb0b29322d..35cc5f1cd5f 100644 --- a/meson.build +++ b/meson.build @@ -796,6 +796,7 @@ if with_gallium_rusticl endif add_languages('rust', required: true) + rustc = meson.get_compiler('rust') with_clc = true endif diff --git a/src/gallium/frontends/rusticl/meson.build b/src/gallium/frontends/rusticl/meson.build index 279bd8d4d5a..32a8bb85d4e 100644 --- a/src/gallium/frontends/rusticl/meson.build +++ b/src/gallium/frontends/rusticl/meson.build @@ -89,10 +89,15 @@ rusticl_args = [ '-Aclippy::redundant_field_names', '-Aclippy::too_many_arguments', '-Aclippy::type_complexity', - # Needs to be fixed - '-Aclippy::arc-with-non-send-sync', ] +if rustc.version().version_compare('>=1.72') + rusticl_args += [ + # Needs to be fixed + '-Aclippy::arc-with-non-send-sync' + ] +endif + rusticl_gen_args = [ # can't do anything about it anyway '-Aclippy::all', From fa0f07c5e1302d68f483c0a9094d5962e6fcadf0 Mon Sep 17 00:00:00 2001 From: Jonathan Gray Date: Tue, 19 Dec 2023 18:27:16 +1100 Subject: [PATCH 296/356] intel/common: add directory prefix to intel_gem.h include MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Otherwise common/intel_gem.h may get included instead of common/i915/intel_gem.h when building in a different directory. Fixes: e050a00b9f4 ("intel/common: Move i915 files to i915 folder") Reviewed-by: José Roberto de Souza Part-of: (cherry picked from commit fbb9ce014080edd085b2e998c3e6d7fb569ef0b0) --- .pick_status.json | 2 +- src/intel/common/i915/intel_engine.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 7b16caa7276..8a54d9baf93 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -294,7 +294,7 @@ "description": "intel/common: add directory prefix to intel_gem.h include", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "e050a00b9f4d057e93f61f79019b5cf8bcd04e49", "notes": null diff --git a/src/intel/common/i915/intel_engine.c b/src/intel/common/i915/intel_engine.c index cc5d9bc6b7a..6d99df53da7 100644 --- a/src/intel/common/i915/intel_engine.c +++ b/src/intel/common/i915/intel_engine.c @@ -25,7 +25,7 @@ #include -#include "intel_gem.h" +#include "i915/intel_gem.h" static enum intel_engine_class i915_engine_class_to_intel(enum drm_i915_gem_engine_class i915) From 7cfc8d3ab9d5834cf7a2330301cf235746c81517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Thu, 14 Dec 2023 13:12:23 +0200 Subject: [PATCH 297/356] mesa: fix enum support for EXT_clip_cull_distance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extension was enabled but required enums not. Fixes: 979bcb9f428 ("glsl: add EXT_clip_cull_distance support based on ARB_cull_distance") Signed-off-by: Tapani Pälli Reviewed-by: Marek Olšák Part-of: (cherry picked from commit 629b15f446a41492fc5057c04008c6de9c52b078) --- .pick_status.json | 2 +- src/mesa/main/get_hash_params.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 8a54d9baf93..1fcc51a9e19 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -174,7 +174,7 @@ "description": "mesa: fix enum support for EXT_clip_cull_distance", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "979bcb9f4288564fb6c5807bcfbfd0a78176c3ef", "notes": null diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py index 90d09c4a631..267efa5b3be 100644 --- a/src/mesa/main/get_hash_params.py +++ b/src/mesa/main/get_hash_params.py @@ -494,6 +494,10 @@ # GL_EXT_framebuffer_EXT / GLES 3.0 + EXT_sRGB_write_control [ "FRAMEBUFFER_SRGB_EXT", "CONTEXT_BOOL(Color.sRGBEnabled), extra_EXT_framebuffer_sRGB" ], + +# GL_ARB_cull_distance, GL_EXT_clip_cull_distance + [ "MAX_CULL_DISTANCES", "CONTEXT_INT(Const.MaxClipPlanes), extra_ARB_cull_distance" ], + [ "MAX_COMBINED_CLIP_AND_CULL_DISTANCES", "CONTEXT_INT(Const.MaxClipPlanes), extra_ARB_cull_distance" ], ]}, { "apis": ["GLES", "GLES2"], "params": [ @@ -1009,10 +1013,6 @@ [ "GPU_MEMORY_INFO_EVICTION_COUNT_NVX", "LOC_CUSTOM, TYPE_INT, NO_OFFSET, extra_NVX_gpu_memory_info" ], [ "GPU_MEMORY_INFO_EVICTED_MEMORY_NVX", "LOC_CUSTOM, TYPE_INT, NO_OFFSET, extra_NVX_gpu_memory_info" ], -# GL_ARB_cull_distance - [ "MAX_CULL_DISTANCES", "CONTEXT_INT(Const.MaxClipPlanes), extra_ARB_cull_distance" ], - [ "MAX_COMBINED_CLIP_AND_CULL_DISTANCES", "CONTEXT_INT(Const.MaxClipPlanes), extra_ARB_cull_distance" ], - # GL_ARB_compute_variable_group_size [ "MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB", "CONTEXT_INT(Const.MaxComputeVariableGroupInvocations), extra_ARB_compute_variable_group_size" ], From 04ed77a1aea135a51ea8c6594950d48f321d1d9e Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Tue, 19 Dec 2023 21:13:16 -0800 Subject: [PATCH 298/356] etnaviv: Remove duplicate initializers Fix initializer-overrides warnings. ../src/gallium/drivers/etnaviv/etnaviv_compiler.c:62:29: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides] 62 | .lower_extract_byte = true, | ^~~~ ../src/gallium/drivers/etnaviv/etnaviv_compiler.c:63:29: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides] 63 | .lower_extract_word = true, | ^~~~ Fixes: 9dc4ee91215 ("etnaviv: lower (un)pack_{2x16,2x32}_split and extract_{byte,word}") Signed-off-by: Vinson Lee Reviewed-by: Lucas Stach Reviewed-by: Christian Gmeiner Part-of: (cherry picked from commit f5d08bdf4e3a0e75a846b76889e234b7c9bbd754) --- .pick_status.json | 2 +- src/gallium/drivers/etnaviv/etnaviv_compiler.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 1fcc51a9e19..79d95f48cf1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -74,7 +74,7 @@ "description": "etnaviv: Remove duplicate initializers", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "9dc4ee91215cfd5ea6d98c4879abc4e7979b4c64", "notes": null diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler.c b/src/gallium/drivers/etnaviv/etnaviv_compiler.c index f25250c12a8..afc70cfcb3c 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_compiler.c +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler.c @@ -54,8 +54,6 @@ etna_compiler_create(const char *renderer, const struct etna_specs *specs) .lower_fmod = true, .lower_vector_cmp = true, .lower_fdph = true, - .lower_extract_byte = true, - .lower_extract_word = true, .lower_insert_byte = true, .lower_insert_word = true, .lower_fdiv = true, /* !specs->has_new_transcendentals */ From 99fdd1bcf18e50f55c2fd1bacafb4134b380016f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Tue, 19 Dec 2023 12:45:50 +0200 Subject: [PATCH 299/356] drirc/anv: disable FCV optimization for Baldur's Gate 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: mesa-stable Signed-off-by: Tapani Pälli Reviewed-by: Lionel Landwerlin Part-of: (cherry picked from commit 9e88c711a3da96cb633bdc35e009bcb1bd193d74) --- .pick_status.json | 2 +- src/util/00-mesa-defaults.conf | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 79d95f48cf1..d11fe7125a3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -64,7 +64,7 @@ "description": "drirc/anv: disable FCV optimization for Baldur's Gate 3", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf index cb41cc58b64..9e9fbb89913 100644 --- a/src/util/00-mesa-defaults.conf +++ b/src/util/00-mesa-defaults.conf @@ -1166,6 +1166,9 @@ TODO: document the other workarounds. + +