Merge pull request #294 from neobrain/master

BPMemory: Cleanup GenMode and fix incorrect bitfield size.
This commit is contained in:
Pierre Bourdon 2014-04-22 01:18:09 +02:00
commit 782d271548
2 changed files with 19 additions and 11 deletions

View File

@ -531,16 +531,24 @@ struct FourTexUnits
union GenMode
{
struct
enum CullMode : u32
{
u32 numtexgens : 4; // 0xF
u32 numcolchans : 5; // 0x1E0
u32 multisampling : 1; // 0x200
u32 numtevstages : 4; // 0x3C00
u32 cullmode : 2; // 0xC000
u32 numindstages : 3; // 0x30000
u32 zfreeze : 5; //0x3C0000
CULL_NONE = 0,
CULL_BACK = 1, // cull back-facing primitives
CULL_FRONT = 2, // cull front-facing primitives
CULL_ALL = 3, // cull all primitives
};
BitField< 0,4,u32> numtexgens;
BitField< 4,3,u32> numcolchans;
// 1 bit unused?
BitField< 8,1,u32> flat_shading; // unconfirmed
BitField< 9,1,u32> multisampling;
BitField<10,4,u32> numtevstages;
BitField<14,2,CullMode> cullmode;
BitField<16,3,u32> numindstages;
BitField<19,5,u32> zfreeze;
u32 hex;
};

View File

@ -91,9 +91,9 @@ void BPWritten(const BPCmd& bp)
case BPMEM_GENMODE: // Set the Generation Mode
{
PRIM_LOG("genmode: texgen=%d, col=%d, multisampling=%d, tev=%d, cullmode=%d, ind=%d, zfeeze=%d",
bpmem.genMode.numtexgens, bpmem.genMode.numcolchans,
bpmem.genMode.multisampling, bpmem.genMode.numtevstages+1, bpmem.genMode.cullmode,
bpmem.genMode.numindstages, bpmem.genMode.zfreeze);
(u32)bpmem.genMode.numtexgens, (u32)bpmem.genMode.numcolchans,
(u32)bpmem.genMode.multisampling, (u32)bpmem.genMode.numtevstages+1, (u32)bpmem.genMode.cullmode,
(u32)bpmem.genMode.numindstages, (u32)bpmem.genMode.zfreeze);
// Only call SetGenerationMode when cull mode changes.
if (bp.changes & 0xC000)