URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=40792790517d09b641bd0666d9e6cda1f027f6a1 Author: Jason Ekstrand <ja...@jlekstrand.net> Date: Tue Mar 16 10:08:21 2021 -0500
anv/apply_pipeline_layout: Add support for A64 descriptor access Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b704d03efd47678613248fce3d63954f1fae61f8 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Jan 15 16:44:44 2021 -0600 anv: Do UBO loads with global addresses for bindless This makes UBO loads in the variable pointers or bindless case work just like SSBO loads in the sense that they use A64 messages and 64-bit global addresses. The primary difference is that we have an optimization in anv_nir_lower_ubo_loads which uses a (possibly predicated) block load message when the offset is constant so we get roughly the same performance as we would from plumbing load_ubo all the way to the back-end. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=61749b5a1513888767c39b2099be3e82f8d91871 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Jan 15 14:59:42 2021 -0600 anv: Add a pass for lowering A64 UBO access Instead of load_global_constant_offset/bounded, we want to use the Intel-specific block load intrinsic whenever we can. This way we get the same wide block loads that we usually use for constant offset UBO pulls with a binding table. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c8748771bb68951a2921e76ceab61b68fca9417d Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Jan 15 00:35:19 2021 -0600 nir/lower_io: Support global addresses for UBOs in nir_lower_explicit_io For nir_address_format_64bit_global_32bit_offset and nir_address_format_64bit_bounded_global, we use a new intrinsics which take the base address and offset as separate parameters. For bounds- checked access, the bound is also included in the intrinsic. This gives the drive more control over the bounds checking so that UBOs don't suddenly become massively more expensive. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bd65e4d19923be87e94a5a4eca6cc5285a3c3d40 Author: Jason Ekstrand <ja...@jlekstrand.net> Date: Sat Mar 13 23:58:13 2021 -0600 anv/apply_pipeline_layout: Use the new helpers for images Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4113a3750cf5f2b72cf75dd74e6af0ba2b0b67ee Author: Jason Ekstrand <ja...@jlekstrand.net> Date: Fri Mar 12 17:35:32 2021 -0600 anv/apply_pipeline_layout: Use the new helpers for early lowering This also means that some of the newly added helpers need to grow a bit to support VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_DATA_EXT. Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=93126b641c61717264464b36b3e72b0a9330cdde Author: Jason Ekstrand <ja...@jlekstrand.net> Date: Fri Mar 12 17:49:40 2021 -0600 anv/apply_pipeline_layout: Rework the desc_addr_format helper We're about to add a new helper which is more detailed. Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f95134a0fe7a8fb5bf02e5419926bbfebaca1e73 Author: Jason Ekstrand <ja...@jlekstrand.net> Date: Fri Mar 12 15:25:13 2021 -0600 anv/apply_pipeline_layout: Refactor all our descriptor address builders Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=42de744155b801c45c80dbaa69ea280c4a5612ba Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Jan 20 15:59:23 2021 -0600 anv/apply_pipeline_layout: Apply dynamic offsets in load_ssbo_descriptor This function has exactly two call sites. The first is where we had these calculations before. The second only cares about the size of the SSBO so all the extra code we emit will be dead. However, NIR should easily clean that up and this lets us consolidate things a bit better. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8a61e3a0c0704dcc81fcccb17b815f5f5475b7e0 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Jan 15 17:20:22 2021 -0600 anv: Zero out the last dword of UBO/SSBO descriptors in the shader This way, NIR can constant fold it. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=422798caef9d5bb711008bf57751974f978e3df4 Author: Jason Ekstrand <ja...@jlekstrand.net> Date: Fri Mar 12 18:27:28 2021 -0600 anv: Rework the 64bit_bounded_global resource index format Instead of packing the descriptor offset into the packed portion, use that unused channel we have lying around. This potentially allows for larger descriptor sets. We also re-arrange the components a bit to make it more like the 64bit_bounded_global memory address format. Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e06144a818950e1b3aaefaae04fd1c5df23ca536 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Jan 20 15:07:23 2021 -0600 anv: Use 64bit_global_32bit_offset for SSBOs This has the advantage of giving us cheaper address calculations because we can calculate in 32 bits first and then do a single 64x32 add. It also lets us delete a bunch of code for dealing with descriptor dereferences (vulkan_resource_reindex, and friends) because our bindless SSBO pointers are now vec4s regardless of whether or not we're doing bounds checking. This also unifies UBOs and SSBOs. The one down-side is that, in certain variable pointers cases, it may end up burning more memory and/or increasing register pressure. This seems like a worth- while trade-off. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=93a3f187195aad44624451a2929f5803be619fe2 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Jan 20 14:27:32 2021 -0600 nir: Add a new 64+32-bit address format This is a global address format where you have a 64-bit base pointer and a 32-bit offset. It's intentionally identical to 64bit_bounded_global except nir_lower_explicit_io does no bounds checking with it. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e13246e053fd994dbe95b9ba2f50913529a5bc30 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Jan 21 17:31:50 2021 -0600 anv/apply_pipeline_layout: Add some switch statements Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f872a269916d1a5d032f3db41fc63ba769b5b231 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Jan 15 16:40:41 2021 -0600 anv/apply_pipeline_layout: Plumb through a UBO address format Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b8f76b12896a548893ad9f45a10b9b3a15918bc Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Mar 9 17:32:14 2021 -0600 anv/apply_pipeline_layout: Move bounds checking later for index/offset Instead of doing the array check at the load_vulkan_resource_index intrinsic, stuff it in the vec2 and handle it at load_vulkan_descriptor time. This allows the bounds check to take any re-index intrinsics into account. This only affects variablePointers + SSBOs + Gen7. Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2beba9dd5a2458203b8837233dc60a80cfc68904 Author: Jason Ekstrand <ja...@jlekstrand.net> Date: Fri Mar 12 14:04:38 2021 -0600 anv/apply_pipeline_layout: Run DCE between the early and late passes This allows us to ignore UBOs in the late code going forward. Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a7fe687bde150f2e21a3994083f8d9a9ee7d970e Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Jan 15 00:18:37 2021 -0600 anv/apply_pipeline_layout: Lower UBO loads in the early pass We're about to enable bindless UBOs via A64 memory access like we do for SSBOs. In order to prevent 100% of UBOs from hitting that path, we enable them in the early lowering. This way we'll still get binding table-based UBO access for any non-bindless ones. In particular, we need this for UBO pushing to work. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=799a931d127f977d7720069c3fbd5263426f1fc9 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Jan 20 19:42:16 2021 -0600 anv/apply_pipeline_layout: Rework the early pass index/offset helpers Rewrite them all to work on an index/offset vec2 instead of some only returning the index. This means SSBO size handling is a tiny bit more complicated but it will also mean we can use them for descriptor buffers properly. This also fixes a bug where we weren't bounds-checking re-index intrinsics because we applied the bounds check at the tail of the recursion and not at the beginning. Fixes: 3cf78ec2bd "anv: Lower some SSBO operations in..." Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cdb88f67dc291ccf1f4e9f0a33d4e266710b20a6 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Jan 20 18:49:26 2021 -0600 anv/apply_pipeline_layout: Refactor descriptor chasing code This makes things a bit more generic for use in the next commit. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0aa3d68206f3f4ff54267037fcba896b51f24c2d Author: Jason Ekstrand <ja...@jlekstrand.net> Date: Fri Mar 12 13:00:47 2021 -0600 anv: Use nir_shader_instructions_pass in apply_pipeline_layout Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bfe92b83db46bf3b30139e17d64a4a6e0a41ed21 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Jan 20 16:21:38 2021 -0600 anv: Use load_global_constant for shader constants NIR can do a bit better job optimizing this version. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1ce3660a5a5a942c54d2da761dc4d3b5fa6864e7 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Jan 14 18:00:00 2021 -0600 intel/fs,rt: Add a predicate to load_global_const_block This allows us to do bounds checked A64 block load without the it being counted as control-flow by NIR. This means that NIR optimizations like CSE will be able to work on these the same as a regular load. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8635> _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit