Forum

weird (numleafs+31)>>3 in SV_FatPVS

Discuss programming topics for the various GPL'd game engine sources.

Moderator: InsideQC Admins

weird (numleafs+31)>>3 in SV_FatPVS

Postby ericw » Wed Jul 26, 2017 3:58 am

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.
ericw
 
Posts: 91
Joined: Sat Jan 18, 2014 2:11 am

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

Postby mh » Thu Jul 27, 2017 1:01 pm

I think the intention is that it's to allow the following Q_memset to take it's fast path.
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
User avatar
mh
 
Posts: 2287
Joined: Sat Jan 12, 2008 1:38 am

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

Postby ericw » Fri Jul 28, 2017 7:46 pm

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
ericw
 
Posts: 91
Joined: Sat Jan 18, 2014 2:11 am


Return to Engine Programming

Who is online

Users browsing this forum: No registered users and 1 guest