Page 1 of 1

weird (numleafs+31)>>3 in SV_FatPVS

Posted: Wed Jul 26, 2017 3:58 am
by ericw
This is a bug/typo, right?

Code: Select all

fatbytes = (sv.worldmodel->numleafs+31)>>3;
https://github.com/id-Software/Quake/bl ... ain.c#L412

That gives the number of bytes for the bitvector, plus 3 bytes padding, which seems useless.
It should just be (numleafs+7)>>3 like all of the other PVS buffers?

There are some occurences of:

Code: Select all

4*((sv.worldmodel->numleafs+31)>>5);
in Quakeworld, which is rounding up to the nearest 4 byte boundary, so possibly that's where the typo came from.

Re: weird (numleafs+31)>>3 in SV_FatPVS

Posted: Thu Jul 27, 2017 1:01 pm
by mh
I think the intention is that it's to allow the following Q_memset to take it's fast path.

Re: weird (numleafs+31)>>3 in SV_FatPVS

Posted: Fri Jul 28, 2017 7:46 pm
by ericw
Yeah, I think it must have been an attempt to round up to the nearest multiple of 4, but even then it doesn't work as written:

>>> x = 12
>>> (x + 31) / 8
5