Reorder TileSpec. (#5591)

Put accessed members that are needed by updateFastFaceRow()
all in the same cacheline.
This commit is contained in:
Auke Kok 2017-04-17 22:48:17 -07:00 committed by Loïc Blot
parent eddf16eee9
commit 93c1d511e3
1 changed files with 29 additions and 26 deletions

View File

@ -197,22 +197,22 @@ struct FrameSpec
struct TileSpec struct TileSpec
{ {
TileSpec(): TileSpec():
texture_id(0),
texture(NULL), texture(NULL),
normal_texture(NULL), texture_id(0),
flags_texture(NULL), color(),
material_type(TILE_MATERIAL_BASIC), material_type(TILE_MATERIAL_BASIC),
material_flags( material_flags(
//0 // <- DEBUG, Use the one below //0 // <- DEBUG, Use the one below
MATERIAL_FLAG_BACKFACE_CULLING MATERIAL_FLAG_BACKFACE_CULLING
), ),
shader_id(0),
animation_frame_count(1),
animation_frame_length_ms(0),
rotation(0), rotation(0),
has_color(false), emissive_light(0),
color(), shader_id(0),
emissive_light(0) normal_texture(NULL),
flags_texture(NULL),
animation_frame_length_ms(0),
animation_frame_count(1),
has_color(false)
{ {
} }
@ -284,30 +284,33 @@ struct TileSpec
material.TextureLayer[1].TextureWrapV = video::ETC_CLAMP_TO_EDGE; material.TextureLayer[1].TextureWrapV = video::ETC_CLAMP_TO_EDGE;
} }
} }
u32 texture_id; // ordered for performance! please do not reorder unless you pahole it first.
video::ITexture *texture; video::ITexture *texture;
video::ITexture *normal_texture; u32 texture_id;
video::ITexture *flags_texture; // The color of the tile, or if the tile does not own
// a color then the color of the node owning this tile.
video::SColor color;
// Material parameters // Material parameters
u8 material_type; u8 material_type;
u8 material_flags; u8 material_flags;
u32 shader_id;
// Animation parameters
u8 animation_frame_count;
u16 animation_frame_length_ms;
std::vector<FrameSpec> frames;
u8 rotation; u8 rotation;
//! If true, the tile has its own color.
bool has_color;
/*!
* The color of the tile, or if the tile does not own
* a color then the color of the node owning this tile.
*/
video::SColor color;
//! This much light does the tile emit. //! This much light does the tile emit.
u8 emissive_light; u8 emissive_light;
u32 shader_id;
video::ITexture *normal_texture;
// cacheline (64)
video::ITexture *flags_texture;
// Animation parameters
u16 animation_frame_length_ms;
u8 animation_frame_count;
//! If true, the tile has its own color.
bool has_color;
std::vector<FrameSpec> frames;
}; };
#endif #endif