mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-14 08:31:23 +00:00
162 lines
4.7 KiB
C++
162 lines
4.7 KiB
C++
|
|
#pragma once
|
|
|
|
struct WorkerThreadData
|
|
{
|
|
int32_t core;
|
|
int32_t num_cores;
|
|
int32_t pass_start_y;
|
|
int32_t pass_end_y;
|
|
};
|
|
|
|
struct DrawWallArgs
|
|
{
|
|
uint32_t *dest;
|
|
const uint32_t *source[4];
|
|
const uint32_t *source2[4];
|
|
int32_t pitch;
|
|
int32_t count;
|
|
int32_t dest_y;
|
|
uint32_t texturefrac[4];
|
|
uint32_t texturefracx[4];
|
|
uint32_t iscale[4];
|
|
uint32_t textureheight[4];
|
|
uint32_t light[4];
|
|
uint32_t srcalpha;
|
|
uint32_t destalpha;
|
|
|
|
uint16_t light_alpha;
|
|
uint16_t light_red;
|
|
uint16_t light_green;
|
|
uint16_t light_blue;
|
|
uint16_t fade_alpha;
|
|
uint16_t fade_red;
|
|
uint16_t fade_green;
|
|
uint16_t fade_blue;
|
|
uint16_t desaturate;
|
|
uint32_t flags;
|
|
enum Flags
|
|
{
|
|
simple_shade = 1,
|
|
nearest_filter = 2
|
|
};
|
|
};
|
|
|
|
struct DrawSpanArgs
|
|
{
|
|
uint32_t *destorg;
|
|
const uint32_t *source;
|
|
int32_t destpitch;
|
|
int32_t xfrac;
|
|
int32_t yfrac;
|
|
int32_t xstep;
|
|
int32_t ystep;
|
|
int32_t x1;
|
|
int32_t x2;
|
|
int32_t y;
|
|
int32_t xbits;
|
|
int32_t ybits;
|
|
uint32_t light;
|
|
uint32_t srcalpha;
|
|
uint32_t destalpha;
|
|
|
|
uint16_t light_alpha;
|
|
uint16_t light_red;
|
|
uint16_t light_green;
|
|
uint16_t light_blue;
|
|
uint16_t fade_alpha;
|
|
uint16_t fade_red;
|
|
uint16_t fade_green;
|
|
uint16_t fade_blue;
|
|
uint16_t desaturate;
|
|
uint32_t flags;
|
|
enum Flags
|
|
{
|
|
simple_shade = 1,
|
|
nearest_filter = 2
|
|
};
|
|
};
|
|
|
|
struct DrawColumnArgs
|
|
{
|
|
uint32_t *dest;
|
|
const uint8_t *source;
|
|
uint8_t *colormap;
|
|
uint8_t *translation;
|
|
const uint32_t *basecolors;
|
|
int32_t pitch;
|
|
int32_t count;
|
|
int32_t dest_y;
|
|
uint32_t iscale;
|
|
uint32_t texturefrac;
|
|
uint32_t light;
|
|
uint32_t color;
|
|
uint32_t srccolor;
|
|
uint32_t srcalpha;
|
|
uint32_t destalpha;
|
|
|
|
uint16_t light_alpha;
|
|
uint16_t light_red;
|
|
uint16_t light_green;
|
|
uint16_t light_blue;
|
|
uint16_t fade_alpha;
|
|
uint16_t fade_red;
|
|
uint16_t fade_green;
|
|
uint16_t fade_blue;
|
|
uint16_t desaturate;
|
|
uint32_t flags;
|
|
enum Flags
|
|
{
|
|
simple_shade = 1
|
|
};
|
|
};
|
|
|
|
class LLVMDrawers
|
|
{
|
|
public:
|
|
virtual ~LLVMDrawers() { }
|
|
|
|
static void Create();
|
|
static void Destroy();
|
|
static LLVMDrawers *Instance();
|
|
|
|
void(*DrawColumn)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnAdd)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnTranslated)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnTlatedAdd)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnShaded)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnAddClamp)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnAddClampTranslated)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnSubClamp)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnSubClampTranslated)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnRevSubClamp)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*DrawColumnRevSubClampTranslated)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*FillColumn)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*FillColumnAdd)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*FillColumnAddClamp)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*FillColumnSubClamp)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*FillColumnRevSubClamp)(const DrawColumnArgs *, const WorkerThreadData *) = nullptr;
|
|
|
|
void(*DrawSpan)(const DrawSpanArgs *) = nullptr;
|
|
void(*DrawSpanMasked)(const DrawSpanArgs *) = nullptr;
|
|
void(*DrawSpanTranslucent)(const DrawSpanArgs *) = nullptr;
|
|
void(*DrawSpanMaskedTranslucent)(const DrawSpanArgs *) = nullptr;
|
|
void(*DrawSpanAddClamp)(const DrawSpanArgs *) = nullptr;
|
|
void(*DrawSpanMaskedAddClamp)(const DrawSpanArgs *) = nullptr;
|
|
|
|
void(*vlinec1)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*vlinec4)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*mvlinec1)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*mvlinec4)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*tmvline1_add)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*tmvline4_add)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*tmvline1_addclamp)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*tmvline4_addclamp)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*tmvline1_subclamp)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*tmvline4_subclamp)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*tmvline1_revsubclamp)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
void(*tmvline4_revsubclamp)(const DrawWallArgs *, const WorkerThreadData *) = nullptr;
|
|
|
|
private:
|
|
static LLVMDrawers *Singleton;
|
|
};
|