mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-27 01:10:25 +01:00
zink: use 64bit mask for xfb analysis
I don't know how this worked before since all the values are oob?
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15224>
(cherry picked from commit a5c7d34fdf)
This commit is contained in:
parent
c2541d65c8
commit
a46dbbdc12
2 changed files with 6 additions and 6 deletions
|
|
@ -1759,7 +1759,7 @@
|
|||
"description": "zink: use 64bit mask for xfb analysis",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
@ -1912,7 +1912,7 @@
|
|||
"description": "zink: fix 64bit float shader ops",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -597,7 +597,7 @@ update_so_info(struct zink_shader *zs, const struct pipe_stream_output_info *so_
|
|||
var->data.explicit_xfb_buffer = 0;
|
||||
|
||||
bool inlined[VARYING_SLOT_MAX][4] = {0};
|
||||
uint32_t packed = 0;
|
||||
uint64_t packed = 0;
|
||||
uint8_t packed_components[VARYING_SLOT_MAX] = {0};
|
||||
uint8_t packed_streams[VARYING_SLOT_MAX] = {0};
|
||||
uint8_t packed_buffers[VARYING_SLOT_MAX] = {0};
|
||||
|
|
@ -626,7 +626,7 @@ update_so_info(struct zink_shader *zs, const struct pipe_stream_output_info *so_
|
|||
inlined[slot][output->start_component + j] = true;
|
||||
} else {
|
||||
/* otherwise store some metadata for later */
|
||||
packed |= BITFIELD_BIT(slot);
|
||||
packed |= BITFIELD64_BIT(slot);
|
||||
packed_components[slot]++;
|
||||
packed_streams[slot] |= BITFIELD_BIT(output->stream);
|
||||
packed_buffers[slot] |= BITFIELD_BIT(output->output_buffer);
|
||||
|
|
@ -650,7 +650,7 @@ update_so_info(struct zink_shader *zs, const struct pipe_stream_output_info *so_
|
|||
* being output with the same stream on the same buffer, this entire variable
|
||||
* can be consolidated into a single output to conserve locations
|
||||
*/
|
||||
if (packed & BITFIELD_BIT(slot) &&
|
||||
if (packed & BITFIELD64_BIT(slot) &&
|
||||
glsl_get_components(var->type) == packed_components[slot] &&
|
||||
util_bitcount(packed_streams[slot]) == 1 &&
|
||||
util_bitcount(packed_buffers[slot]) == 1) {
|
||||
|
|
@ -672,7 +672,7 @@ update_so_info(struct zink_shader *zs, const struct pipe_stream_output_info *so_
|
|||
var->data.stream = output->stream;
|
||||
for (unsigned j = 0; j < packed_components[slot]; j++)
|
||||
inlined[slot][j] = true;
|
||||
packed &= ~BITFIELD_BIT(slot);
|
||||
packed &= ~BITFIELD64_BIT(slot);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue