[Mesa-dev] [PATCH 09/12] i965/fs: Hook up SIMD lowering to handle texturing opcodes of unsupported width.
Kenneth Graunke
kenneth at whitecape.org
Thu Jul 23 17:33:30 PDT 2015
On Saturday, July 18, 2015 05:34:55 PM Francisco Jerez wrote:
> This should match the set of cases in which we currently call fail()
> or no16() from the emit_texture_*() methods and the ones in which
> emit_texture_gen4() enables the SIMD16 workaround.
>
> Hint for reviewers: It's not a big deal if I happen to have missed
> some case here, it will just lead to an assertion failure down the
> road which is easily fixable, however being stricter than necessary
> won't cause any visible breakage, it would just decrease performance
> silently due to the unnecessary message splitting, so feel free to
> double-check that all cases listed here already cause a SIMD8/16
> fall-back with the current texturing code -- You may want to skip over
> the Gen5-6 cases though if you don't have pencil and paper at hand.
> ---
> src/mesa/drivers/dri/i965/brw_fs.cpp | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index 043d9e9..f291202 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -3918,6 +3918,33 @@ get_lowered_simd_width(const struct brw_device_info *devinfo,
> /* Dual-source FB writes are unsupported in SIMD16 mode. */
> return (inst->src[1].file != BAD_FILE ? 8 : inst->exec_size);
>
> + case SHADER_OPCODE_TXD_LOGICAL:
> + /* TXD is unsupported in SIMD16 mode. */
> + return 8;
> +
> + case SHADER_OPCODE_TG4_OFFSET_LOGICAL: {
> + /* gather4_po_c is unsupported in SIMD16 mode. */
> + const fs_reg &shadow_c = inst->src[1];
> + return (shadow_c.file != BAD_FILE ? 8 : inst->exec_size);
> + }
> + case SHADER_OPCODE_TXL_LOGICAL:
> + case FS_OPCODE_TXB_LOGICAL: {
> + /* Gen4 doesn't have SIMD8 non-shadow-compare bias/LOD instructions, and
> + * Gen4-6 don't support TXL and TXB with shadow comparison in SIMD16
> + * mode.
> + */
I agree with Jason here, I think this would be a lot easier to read if
we separated the gen == 4 and gen <= 6 cases into two if statements.
(I do like pure expressions in general, though!)
While you're doing that, it would be great to say
/* Gen4-6 can't support TXL and TXB with shadow comparison in SIMD16
* mode because the message exceeds the maximum length of 11.
*/
(it wasn't obvious to me why that was disallowed, at first)
Other than my concern about regs_read() for offset in patch 1,
everything looks great to me. With that sorted out, this series is:
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Thanks Curro!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150723/a607870c/attachment.sig>
More information about the mesa-dev
mailing list