URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ddc25a8d4796316f0296eaa10eba26bd6dd1718 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Sep 26 16:08:52 2014 -0700
i965/fs: Properly calculate the number of instructions in calculate_register_pressure Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=514fd1c55e617bb325979cbee4a89f0727c3b567 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Sep 12 16:17:37 2014 -0700 i965/fs: Use the GRF for FB writes on gen >= 7 On gen 7, the MRF was removed and we gained the ability to do send instructions directly from the GRF. This commit enables that functinoality for FB writes. v2: Make handling of components more sane. i965/fs: Force a high register for the final FB write v2: Renamed the array for the range mappings and added a comment Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1dd9b90ecd8e001b40febfb8908c0b9a0c08c7d5 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Sep 16 16:28:53 2014 -0700 i965/fs: Handle COMPR4 in LOAD_PAYLOAD Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=29f4c5b5d5d142f19283c06e77bedd4b3793657a Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Sep 24 14:51:22 2014 -0700 i965/fs: Constant propagate into LOAD_PAYLOAD Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d770ce93aacf29940bacb6fe2ae78cf716751dc Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Sep 19 21:03:25 2014 -0700 i965/fs: Add split_virtual_grfs and compute_to_mrf after lower_load_payload If we are going to use LOAD_PAYLOAD operations to fill MRF registers, then we will need this. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b0e4b387a2aeb28e32df5b680013338a841859b Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Sep 16 15:16:20 2014 -0700 i965/fs: Add a an optional source to the FS_OPCODE_FB_WRITE instruction Previously, we were use the base_mrf parameter of fs_inst to store the MRF location. In preparation for doing FB writes from the GRF, we now also allow you to set inst->base_mrf to -1 and provide a source register. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e1f52a6e2b0277de063a8d8b07c5e520795a23b Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Sep 11 16:43:37 2014 -0700 i965/fs: Use the GRF for UNTYPED_SURFACE_READ instructions Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d25aaf1cb1688b38b2a4025dbbff26d74291723c Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Sep 11 16:13:15 2014 -0700 i965/fs: Use the GRF for UNTYPED_ATOMIC instructions Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=65ddf6f40469c5da1e5daf4270ca698a03860472 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Sep 11 16:15:10 2014 -0700 i965/fs: Add a function for getting a component of a 8 or 16-wide register Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=30d718c2fbaeeffb24468ce773e44a6bf6f6aa2a Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Aug 29 17:22:57 2014 -0700 i965/fs: Use the instruction execution size directly for texture generation Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=48ddd2889e15aaf8ddb6dff5d8b6dc275f7f3f8d Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Sep 16 18:02:52 2014 -0700 i965/fs: Use exec_size instead of force_uncompressed in dump_instruction Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b18fd234da275a0ec6b3c5cb77497a4c487c6366 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Sat Aug 16 11:34:56 2014 -0700 i965/fs: Use instruction execution sizes instead of heuristics Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=894ec5a1d819ed896395117303b1ff25be59ba75 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Aug 15 20:58:50 2014 -0700 i965/fs: Use instruction execution sizes to set compression state Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f1adb59659617a682988bc503b8a0a7077abb84 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Sep 4 20:40:34 2014 -0700 i965/fs: Remove unneeded uses of force_uncompressed Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2999f83bd987fd53e2348ceb887dc2d40096c813 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Sat Aug 16 11:38:07 2014 -0700 i965/fs: Derive force_uncompressed from instruction exec_size Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5f41d052bf53e32761fb528f4be99a1af3a33ebc Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Sep 19 20:36:52 2014 -0700 i965/fs: Make fs_reg::effective_width take fs_inst* instead of fs_visitor* Now that we have execution sizes, we can use that instead of the dispatch width. This way it also works for 8-wide instructions in SIMD16. i965/fs: Make effective_width a variable instead of a function i965/fs: Preserve effective width in constant propagation Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ba31cc000b096a3b1fe0e0a935a3ab2aa6803d2 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Sep 11 22:33:52 2014 -0700 i965/fs: Better guess the width of LOAD_PAYLOAD Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=071ac3a467479ce1ada1b86e2f65d4cc7d07753e Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Aug 14 13:56:24 2014 -0700 i965/fs: Add an exec_size field to fs_inst This will, eventually, allow us to manage execution sizes of instructions in a much more natural way from the fs_visitor level. i965/fs: Explicitly set instruction execute size a couple of places i965/blorp: Explicitly set instruction execute sizes Since blorp is all 16-wide and nothing isn't, in general, very careful about register width, we'll just set it all explicitly. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fbc0a798eef49c366437014134c59e16c39c7f95 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Aug 29 17:18:42 2014 -0700 i965/fs: Determine partial writes based on the destination width Now that we track both halves of a 16-wide vgrf, we no longer need to worry about force_sechalf or force_uncompressed. The only real issue is if the destination is too small. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=27d7ef094a55d6aeac22a11f20a9e819af4dd633 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Sep 16 16:34:23 2014 -0700 i965/fs: Fix a bug in register coalesce This commit fixes a bug in register coalesce that happens when one register is moved to another the proper number of times but the channels are re-arranged. When this happens, the previous code would happily coalesce the registers regardless of the fact that the channel mappins were wrong. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=16819b48ab0af244ccb5ef466a7343b1982792be Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Sep 18 12:16:25 2014 -0700 i965/fs: Rework GEN5 texturing code to use fs_reg and offset() Now that offset() can properly handle MRF registers, we can use an MRF fs_reg and let offset() handle incrementing it correctly for different dispatch widths. While this doesn't have any noticeable effect currently, it does ensure that the destination register is 16-wide which will be necessary later when we start detecting execution sizes based on source and destination registers. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7210583eb84a5d49803dbe37b0960373b4224d10 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Mon Aug 18 14:27:55 2014 -0700 i965/fs_reg: Allocate double the number of vgrfs in SIMD16 mode This is actually the squash of a bunch of different changes. Individual commit titles follow: i965/fs: Always 2-align registers SIMD16 for gen <= 5 i965/fs: Use the register width when applying offsets This reworks both byte_offset() and offset() to be more intelligent. The byte_offset() function now supports offsets bigger than 32. The offset() function uses the byte_offset() function together with the register width and the type size to offset the register by the correct amount. i965/fs: Change regs_read to be in hardware registers i965/fs: Change regs_written to be actual hardware registers i965/fs: Properly handle register widths in LOAD_PAYLOAD The LOAD_PAYLOAD instruction is a bit special because it collects a bunch of registers (with possibly different widths) into a single payload block. Once the payload is constructed, it's treated as a single block of data and most of the information such as register widths doesn't matter anymore. In particular, the offset of any particular source register is the accumulation of the sizes of the previous source registers. i965/fs: Properly set writemasks in LOAD_PAYLOAD i965/fs: Handle register widths in demote_pull_constants i965/fs: Get rid of implicit register doubling in the allocator i965/fs: Reserve enough registers for PLN instructions i965/fs: Make sources and destinations interfere in 16-wide i965/fs: Properly handle register widths in CSE i965/fs: Properly handle register widths in register_coalesce i965/fs: Properly handle widths in copy propagation i965/fs: Properly handle register widths in VARYING_PULL_CONSTANT_LOAD i965/fs: Properly handle register widths and odd register sizes in spilling i965/fs: Don't waste a register on texture lookups for gen >= 7 Previously, we were waisting a register in SIMD16 mode because we could only allocate registers in pairs. Now that we can allocate and address odd-sized registers, let's get rid of this special-case. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4232a776a699d80601496802ab2d817374a31f56 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Aug 13 14:42:40 2014 -0700 i965/fs: Handle printing of registers better. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5390ca8ce93028d2d6016d4817e92427d09e4a21 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Thu Sep 25 12:06:42 2014 -0700 i965: Explicitly set widths on gen5 math instruction destinations. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=004fbd53759a8993198883a32d93c9e3f6a65bbd Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Sat Aug 16 10:48:18 2014 -0700 i965/fs: Make half() divide the register width by 2 and use it more Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=24d023b9fe18847158ec6c14e1e0e32ff022f060 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Aug 13 12:25:58 2014 -0700 i965/fs: Add a concept of a width to fs_reg Every register in i965 assembly implicitly has a concept of a "width". Usually, this is derived from the execution size of the instruction. However, when writing a compiler it turns out that it is frequently a useful to have the width explicitly in the register and derive the execution size of the instruction from the widths of the registers used in it. This commit adds a width field to fs_reg along with an effective_width() helper function. The effective_width() function tells you how wide the register effectively is when used in an instruction. For example, uniform values have width 1 since the data is not actually repeated, but when used in an instruction they take on the width of the instruction. However, for some instructions (LOAD_PAYLOAD being the notable exception), the width is not the same. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1030ee6e9b0cc6c05a7f25c17c0cf722a6731c89 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Sep 19 16:42:10 2014 -0700 i965/fs: A little harmless refactoring of register_coalesce Just pass the visitor into is_copy_payload() and is_coalesce_candidate() instead of a register size and the virtual_grf_sizes array. Among other things, this makes the code more obvious because you don't have to figure out where src_size came from. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f91b566f55390d1a0e472ac970d017374b91ee83 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Aug 13 12:23:47 2014 -0700 i965/brw_reg: Add a firsthalf function and use it in the generator Right now, this function is a no-op but it indicates that we intend to only use the first half of the 16-wide register. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1728e74957a62b1b4b9fbb62a7de2c12b77c8a75 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Sep 23 17:22:09 2014 -0700 i965/fs: Copy propagate partial reads. This commit reworks copy propagation a bit to support propagating the copying of partial registers. This comes up every time we have pull constants because we do a pull constant read immediately followed by a move to splat the one component of the out to 8 or 16-wide. This allows us to eliminate the copy and simply use the one component of the register. Shader DB results: total instructions in shared programs: 5044937 -> 5044428 (-0.01%) instructions in affected programs: 66112 -> 65603 (-0.77%) GAINED: 0 LOST: 0 Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4d5f0eb0487ad13e90f7248c95c023c35457eaf9 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Sat Sep 13 11:49:55 2014 -0700 i965/fs: Refactor fs_inst::is_send_from_grf() A switch statement is much easier to read/edit than a big giant or statement. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=54688cd03b087740173b0e11638df1cf0f3a19e1 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Sep 12 17:49:49 2014 -0700 i965/fs: Clean up emit_fb_writes This splits emit_fb_writes into two functions: emit_fb_writes and emit_single_fb_write. This reduces the amount of duplicated code in emit_fb_writes and makes the register number fiddling less arcane. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=72a3780f26951c405c35a1ae51598f7b0a65b92f Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Sep 16 15:56:47 2014 -0700 i965/fs: Print BAD_FILE registers in dump_instruction Sometimes these show up in LOAD_PAYLOAD instructions and it's nice to be able to see them. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2af4b0aeaff53190b0e17a971119d1b77ddad25b Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Sep 16 13:14:09 2014 -0700 i965/fs: Make compact_virtual_grfs an optimization pass Previously we disabled compact_virtual_grfs when dumping optimizations. The idea here was to make it easier to diff the dumped shader because you didn't have a sudden renaming. However, sometimes a bug is affected by compact_virtual_grfs and, when this happens, you want to keep dumping instructions with compact_virtual_grfs enabled. By turning it into an optimization pass and dumping it along with the others, we retain the ability to diff because you can just diff against the compact_virtual_grf output. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a25db10c1248d70cf7f4097833fa03fdccd98fe8 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Sep 10 10:17:28 2014 -0700 i964/fs: Make immediate fs_reg constructors explicit Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c89e098e8e644d6c33b36fabbba0b8d675d115d Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Sep 10 11:28:27 2014 -0700 i965/fs: Make null_reg_* const members of fs_visitor instead of globals We also set the register width equal to the dispatch width. Right now, this is effectively a no-op since we don't do anything with it. However, it will be important once we add an actual width field to fs_reg. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab7234c8520499fcfeed153e0aefeb6b43758d1f Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Mon Sep 8 18:34:28 2014 -0700 i965/fs: Use the var_from_vgrf helper function instead of doing it manually Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c24dd54f973d1a42b0e2cc81aa219bb58f7523d9 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Sep 24 13:16:43 2014 -0700 i965/fs: Fix a bug with dead_code_eliminate on large writes Previously, if an instruction wrote to more than one register, we implicitly assumed that it filled the entire register. We never hit this before because the only time we did multi-register writes was things like texturing which always wrote to all of the registers. However, with the upcoming ability to do 16-wide instructions in SIMD8 and things of that nature, we can have multi-register writes at offsets and we'll hit this. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1385a4b706afa71eebcb72cd232faecc0b956b50 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Mon Sep 8 15:26:24 2014 -0700 i965/fs: Use the UW type for the destination of VARYING_PULL_CONSTANT_LOAD instructions Using a floating-point type doesn't usually cause hangs on my HSW, but the simulator complains about it quite a bit. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f0d43c09b2fa32db66b7b6dc13becb0c7d3edeea Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Sat Sep 6 13:48:34 2014 -0700 i965/fs: Use offset a lot more places We have this wonderful offset() function for advancing registers, but we're not using it. Using offset() allows us to do some sanity checking and avoid manually touching fs_reg::reg_offset. In a few commits, we will make offset do even more nifty things for us. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0089d025aa7f7497b3097c5067b589410cd40fbc Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Aug 19 16:11:36 2014 -0700 i965/fs: fix a comment in compact_virtual_grfs Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3dc3fccb7586e6198c50114d6245017fc9badde8 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Tue Aug 19 13:57:11 2014 -0700 i965/fs: Rewrite fs_visitor::split_virtual_grfs The original vgrf splitting code was written with the assumption that vgrfs came in two types: those that can be split into single registers and those that can't be split at all It was very conservative and bailed as soon as more than one element of a register was read or written. This won't work once we start allowing a regular MOV or ADD operation to operate on multiple registers. This rewrite allows for the case where a vgrf of size 5 may appropriately be split in to one register of size 1 and two registers of size 2. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Acked-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9da0740e22f27a6f8bd429f0bb768752b311398 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Sat Sep 6 10:37:22 2014 -0700 i965/fs_live_variables: Use var_from_vgrf insead of repeating the calculation Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=75afe17b7954984ea5b55c2a6d5d124f5eb03328 Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Fri Sep 26 14:47:03 2014 -0700 i965/fs: Manually generate the meta fast-clear shader Previously, we were generating the fast-clear shader from GLSL. The problem is that fast clears require that we use a replicated write rather than a regular write instruction. In order to get this we had a complicated and somewhat fragile optimization pass that looked for places where we can use a replicated write and used it. Since replicated writes have a lot of restrictions, we only ever use them for fast-clear operations. This commit replaces the optimization pass with a function that just generates the shader we want. This is a) less code, b) less fragile than the optimization pass, and c) generates a more efficient shader. Signed-off-by: Jason Ekstrand <jason.ekstr...@intel.com> Reviewed-by: Kristian Høgsberg <k...@bitplanet.net> Acked-by: Kenneth Graunke <kenn...@whitecape.org> _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit