panfrost: Fix off-by-one in pan_invocation.c

When instance_count=2, the packing code was broken. Fixes a dEQP test.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig 2019-12-24 22:33:13 -05:00
parent 467ae0d39d
commit 9c249d3e6b
1 changed files with 9 additions and 13 deletions

View File

@ -50,25 +50,21 @@ panfrost_pack_work_groups_compute(
unsigned size_z,
bool quirk_graphics)
{
/* First of all, all 6 values are off-by-one (strictly positive). */
num_x = MALI_POSITIVE(num_x);
num_y = MALI_POSITIVE(num_y);
num_z = MALI_POSITIVE(num_z);
size_x = MALI_POSITIVE(size_x);
size_y = MALI_POSITIVE(size_y);
size_z = MALI_POSITIVE(size_z);
/* Next up is to pack in order */
uint32_t packed = 0;
/* The values needing packing, in order, and the corresponding shifts.
* Indicies into shift are off-by-one to make the logic easier */
unsigned shifts[7] = { 0 };
unsigned values[6] = { size_x, size_y, size_z, num_x, num_y, num_z };
unsigned values[6] = {
MALI_POSITIVE(size_x),
MALI_POSITIVE(size_y),
MALI_POSITIVE(size_z),
MALI_POSITIVE(num_x),
MALI_POSITIVE(num_y),
MALI_POSITIVE(num_z),
};
for (unsigned i = 0; i < 6; ++i) {
/* OR it in, shifting as required */