10#ifndef BLITTER_32BPP_SSE4_ANIM_HPP
11#define BLITTER_32BPP_SSE4_ANIM_HPP
20#define SSE_TARGET "sse4.1"
24#define FULL_ANIMATION 1
28#include "32bpp_anim_sse2.hpp"
31#undef MARGIN_NORMAL_THRESHOLD
32#define MARGIN_NORMAL_THRESHOLD 4
35class Blitter_32bppSSE4_Anim final :
public Blitter_32bppSSE2_Anim,
public Blitter_32bppSSE4 {
39 template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last,
bool translucent,
bool animated>
43 return Blitter_32bppSSE_Base::Encode(sprite, allocator);
45 std::string_view GetName()
override {
return "32bpp-sse4-anim"; }
46 using Blitter_32bppSSE2_Anim::LookupColourInPalette;
52 FBlitter_32bppSSE4_Anim() :
BlitterFactory(
"32bpp-sse4-anim",
"32bpp SSE4 Blitter (palette animation)",
HasCPUIDFlag(1, 2, 19)) {}
53 Blitter *
CreateInstance()
override {
return static_cast<Blitter_32bppSSE2_Anim *
>(
new Blitter_32bppSSE4_Anim()); }
A 32 bpp blitter with animation support.
BlitterMode
The modes of blitting we can do.
The base factory, keeping track of all blitters.
virtual Blitter * CreateInstance()=0
Create an instance of this Blitter-class.
How all blitters should look like.
Interface for something that can allocate memory for a sprite.
std::array< Sprite, ZOOM_LVL_END > SpriteCollection
Type defining a collection of sprites, one for each zoom level.
bool HasCPUIDFlag(uint type, uint index, uint bit)
Check whether the current CPU has the given flag.
Parameters related to blitting.
Data structure describing a sprite.
ZoomLevel
All zoom levels we know.