mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 15:40:11 +01:00
intel/fs: Use writes_memory from shader_info
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4815>
This commit is contained in:
parent
d89c28d314
commit
6a6c36e977
2 changed files with 3 additions and 25 deletions
|
|
@ -8306,6 +8306,9 @@ fs_visitor::run_fs(bool allow_spilling, bool do_rep_send)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (nir->info.writes_memory)
|
||||||
|
wm_prog_data->has_side_effects = true;
|
||||||
|
|
||||||
emit_nir_code();
|
emit_nir_code();
|
||||||
|
|
||||||
if (failed)
|
if (failed)
|
||||||
|
|
|
||||||
|
|
@ -4090,10 +4090,6 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
||||||
case nir_intrinsic_bindless_image_atomic_xor:
|
case nir_intrinsic_bindless_image_atomic_xor:
|
||||||
case nir_intrinsic_bindless_image_atomic_exchange:
|
case nir_intrinsic_bindless_image_atomic_exchange:
|
||||||
case nir_intrinsic_bindless_image_atomic_comp_swap: {
|
case nir_intrinsic_bindless_image_atomic_comp_swap: {
|
||||||
if (stage == MESA_SHADER_FRAGMENT &&
|
|
||||||
instr->intrinsic != nir_intrinsic_image_load)
|
|
||||||
brw_wm_prog_data(prog_data)->has_side_effects = true;
|
|
||||||
|
|
||||||
/* Get some metadata from the image intrinsic. */
|
/* Get some metadata from the image intrinsic. */
|
||||||
const nir_intrinsic_info *info = &nir_intrinsic_infos[instr->intrinsic];
|
const nir_intrinsic_info *info = &nir_intrinsic_infos[instr->intrinsic];
|
||||||
|
|
||||||
|
|
@ -4227,9 +4223,6 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
||||||
}
|
}
|
||||||
|
|
||||||
case nir_intrinsic_image_store_raw_intel: {
|
case nir_intrinsic_image_store_raw_intel: {
|
||||||
if (stage == MESA_SHADER_FRAGMENT)
|
|
||||||
brw_wm_prog_data(prog_data)->has_side_effects = true;
|
|
||||||
|
|
||||||
fs_reg srcs[SURFACE_LOGICAL_NUM_SRCS];
|
fs_reg srcs[SURFACE_LOGICAL_NUM_SRCS];
|
||||||
srcs[SURFACE_LOGICAL_SRC_SURFACE] =
|
srcs[SURFACE_LOGICAL_SRC_SURFACE] =
|
||||||
get_nir_image_intrinsic_image(bld, instr);
|
get_nir_image_intrinsic_image(bld, instr);
|
||||||
|
|
@ -4594,9 +4587,6 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
||||||
case nir_intrinsic_store_global:
|
case nir_intrinsic_store_global:
|
||||||
assert(devinfo->gen >= 8);
|
assert(devinfo->gen >= 8);
|
||||||
|
|
||||||
if (stage == MESA_SHADER_FRAGMENT)
|
|
||||||
brw_wm_prog_data(prog_data)->has_side_effects = true;
|
|
||||||
|
|
||||||
assert(nir_src_bit_size(instr->src[0]) <= 32);
|
assert(nir_src_bit_size(instr->src[0]) <= 32);
|
||||||
assert(nir_intrinsic_write_mask(instr) ==
|
assert(nir_intrinsic_write_mask(instr) ==
|
||||||
(1u << instr->num_components) - 1);
|
(1u << instr->num_components) - 1);
|
||||||
|
|
@ -4681,9 +4671,6 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
||||||
case nir_intrinsic_store_ssbo: {
|
case nir_intrinsic_store_ssbo: {
|
||||||
assert(devinfo->gen >= 7);
|
assert(devinfo->gen >= 7);
|
||||||
|
|
||||||
if (stage == MESA_SHADER_FRAGMENT)
|
|
||||||
brw_wm_prog_data(prog_data)->has_side_effects = true;
|
|
||||||
|
|
||||||
const unsigned bit_size = nir_src_bit_size(instr->src[0]);
|
const unsigned bit_size = nir_src_bit_size(instr->src[0]);
|
||||||
fs_reg srcs[SURFACE_LOGICAL_NUM_SRCS];
|
fs_reg srcs[SURFACE_LOGICAL_NUM_SRCS];
|
||||||
srcs[SURFACE_LOGICAL_SRC_SURFACE] =
|
srcs[SURFACE_LOGICAL_SRC_SURFACE] =
|
||||||
|
|
@ -5305,9 +5292,6 @@ void
|
||||||
fs_visitor::nir_emit_ssbo_atomic(const fs_builder &bld,
|
fs_visitor::nir_emit_ssbo_atomic(const fs_builder &bld,
|
||||||
int op, nir_intrinsic_instr *instr)
|
int op, nir_intrinsic_instr *instr)
|
||||||
{
|
{
|
||||||
if (stage == MESA_SHADER_FRAGMENT)
|
|
||||||
brw_wm_prog_data(prog_data)->has_side_effects = true;
|
|
||||||
|
|
||||||
/* The BTI untyped atomic messages only support 32-bit atomics. If you
|
/* The BTI untyped atomic messages only support 32-bit atomics. If you
|
||||||
* just look at the big table of messages in the Vol 7 of the SKL PRM, they
|
* just look at the big table of messages in the Vol 7 of the SKL PRM, they
|
||||||
* appear to exist. However, if you look at Vol 2a, there are no message
|
* appear to exist. However, if you look at Vol 2a, there are no message
|
||||||
|
|
@ -5347,9 +5331,6 @@ void
|
||||||
fs_visitor::nir_emit_ssbo_atomic_float(const fs_builder &bld,
|
fs_visitor::nir_emit_ssbo_atomic_float(const fs_builder &bld,
|
||||||
int op, nir_intrinsic_instr *instr)
|
int op, nir_intrinsic_instr *instr)
|
||||||
{
|
{
|
||||||
if (stage == MESA_SHADER_FRAGMENT)
|
|
||||||
brw_wm_prog_data(prog_data)->has_side_effects = true;
|
|
||||||
|
|
||||||
fs_reg dest;
|
fs_reg dest;
|
||||||
if (nir_intrinsic_infos[instr->intrinsic].has_dest)
|
if (nir_intrinsic_infos[instr->intrinsic].has_dest)
|
||||||
dest = get_nir_dest(instr->dest);
|
dest = get_nir_dest(instr->dest);
|
||||||
|
|
@ -5459,9 +5440,6 @@ void
|
||||||
fs_visitor::nir_emit_global_atomic(const fs_builder &bld,
|
fs_visitor::nir_emit_global_atomic(const fs_builder &bld,
|
||||||
int op, nir_intrinsic_instr *instr)
|
int op, nir_intrinsic_instr *instr)
|
||||||
{
|
{
|
||||||
if (stage == MESA_SHADER_FRAGMENT)
|
|
||||||
brw_wm_prog_data(prog_data)->has_side_effects = true;
|
|
||||||
|
|
||||||
fs_reg dest;
|
fs_reg dest;
|
||||||
if (nir_intrinsic_infos[instr->intrinsic].has_dest)
|
if (nir_intrinsic_infos[instr->intrinsic].has_dest)
|
||||||
dest = get_nir_dest(instr->dest);
|
dest = get_nir_dest(instr->dest);
|
||||||
|
|
@ -5493,9 +5471,6 @@ void
|
||||||
fs_visitor::nir_emit_global_atomic_float(const fs_builder &bld,
|
fs_visitor::nir_emit_global_atomic_float(const fs_builder &bld,
|
||||||
int op, nir_intrinsic_instr *instr)
|
int op, nir_intrinsic_instr *instr)
|
||||||
{
|
{
|
||||||
if (stage == MESA_SHADER_FRAGMENT)
|
|
||||||
brw_wm_prog_data(prog_data)->has_side_effects = true;
|
|
||||||
|
|
||||||
assert(nir_intrinsic_infos[instr->intrinsic].has_dest);
|
assert(nir_intrinsic_infos[instr->intrinsic].has_dest);
|
||||||
fs_reg dest = get_nir_dest(instr->dest);
|
fs_reg dest = get_nir_dest(instr->dest);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue