mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 17:48:10 +02:00
intel/fs: don't consider fixup_nomask_control_flow SENDs predicate
Those SENDs are still doing a full register write. We just inserted
some predication for a workaround.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21853>
(cherry picked from commit 362a07db3a)
This commit is contained in:
parent
f6a518de2d
commit
600f80c8c2
3 changed files with 10 additions and 2 deletions
|
|
@ -175,7 +175,7 @@
|
|||
"description": "intel/fs: don't consider fixup_nomask_control_flow SENDs predicate",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -644,7 +644,8 @@ fs_visitor::limit_dispatch_width(unsigned n, const char *msg)
|
|||
bool
|
||||
fs_inst::is_partial_write() const
|
||||
{
|
||||
if (this->predicate && this->opcode != BRW_OPCODE_SEL)
|
||||
if (this->predicate && !this->predicate_trivial &&
|
||||
this->opcode != BRW_OPCODE_SEL)
|
||||
return true;
|
||||
|
||||
if (this->dst.offset % REG_SIZE != 0)
|
||||
|
|
@ -6579,6 +6580,7 @@ fs_visitor::fixup_nomask_control_flow()
|
|||
|
||||
set_predicate(pred, inst);
|
||||
inst->flag_subreg = 0;
|
||||
inst->predicate_trivial = true;
|
||||
|
||||
if (save_flag)
|
||||
ubld.group(1, 0).at(block, inst->next).MOV(flag, tmp);
|
||||
|
|
|
|||
|
|
@ -178,6 +178,12 @@ struct backend_instruction {
|
|||
* the scratch surface offset to build
|
||||
* extended descriptor
|
||||
*/
|
||||
bool predicate_trivial:1; /**< The predication mask applied to this
|
||||
* instruction is guaranteed to be uniform and
|
||||
* a superset of the execution mask of the
|
||||
* present block, no currently enabled channels
|
||||
* will be disabled by the predicate.
|
||||
*/
|
||||
bool eot:1;
|
||||
|
||||
/* Chooses which flag subregister (f0.0 to f1.1) is used for conditional
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue