Draw Manager: Use engine type pointer instead of engine name.
Faster search
This commit is contained in:
@@ -106,7 +106,7 @@ typedef struct CLAY_PassList {
|
||||
} CLAY_PassList;
|
||||
|
||||
typedef struct CLAY_Data {
|
||||
char engine_name[32];
|
||||
void *engine_type;
|
||||
CLAY_FramebufferList *fbl;
|
||||
CLAY_TextureList *txl;
|
||||
CLAY_PassList *psl;
|
||||
|
||||
@@ -58,7 +58,7 @@ typedef struct EEVEE_LightsInfo {
|
||||
} EEVEE_LightsInfo;
|
||||
|
||||
typedef struct EEVEE_Data {
|
||||
char engine_name[32];
|
||||
void *engine_type;
|
||||
EEVEE_FramebufferList *fbl;
|
||||
EEVEE_TextureList *txl;
|
||||
EEVEE_PassList *psl;
|
||||
|
||||
@@ -237,7 +237,6 @@ typedef enum {
|
||||
|
||||
void DRW_viewport_init(const bContext *C);
|
||||
void DRW_viewport_matrix_get(float mat[4][4], DRWViewportMatrixType type);
|
||||
void *DRW_viewport_engine_data_get(const char *engine_name);
|
||||
float *DRW_viewport_size_get(void);
|
||||
float *DRW_viewport_screenvecs_get(void);
|
||||
float *DRW_viewport_pixelsize_get(void);
|
||||
|
||||
@@ -1292,12 +1292,12 @@ void DRW_framebuffer_blit(struct GPUFrameBuffer *fb_read, struct GPUFrameBuffer
|
||||
}
|
||||
|
||||
/* ****************************************** Viewport ******************************************/
|
||||
void *DRW_viewport_engine_data_get(const char *engine_name)
|
||||
static void *DRW_viewport_engine_data_get(void *engine_type)
|
||||
{
|
||||
void *data = GPU_viewport_engine_data_get(DST.viewport, engine_name);
|
||||
void *data = GPU_viewport_engine_data_get(DST.viewport, engine_type);
|
||||
|
||||
if (data == NULL) {
|
||||
data = GPU_viewport_engine_data_create(DST.viewport, engine_name);
|
||||
data = GPU_viewport_engine_data_create(DST.viewport, engine_type);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
@@ -1421,7 +1421,7 @@ static void DRW_engines_init(void)
|
||||
{
|
||||
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
|
||||
DrawEngineType *engine = link->data;
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine->idname);
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine);
|
||||
double stime = PIL_check_seconds_timer();
|
||||
|
||||
if (engine->engine_init) {
|
||||
@@ -1437,7 +1437,7 @@ static void DRW_engines_cache_init(void)
|
||||
{
|
||||
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
|
||||
DrawEngineType *engine = link->data;
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine->idname);
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine);
|
||||
double stime = PIL_check_seconds_timer();
|
||||
data->cache_time = 0.0;
|
||||
|
||||
@@ -1453,7 +1453,7 @@ static void DRW_engines_cache_populate(Object *ob)
|
||||
{
|
||||
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
|
||||
DrawEngineType *engine = link->data;
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine->idname);
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine);
|
||||
double stime = PIL_check_seconds_timer();
|
||||
|
||||
if (engine->cache_populate) {
|
||||
@@ -1468,7 +1468,7 @@ static void DRW_engines_cache_finish(void)
|
||||
{
|
||||
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
|
||||
DrawEngineType *engine = link->data;
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine->idname);
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine);
|
||||
double stime = PIL_check_seconds_timer();
|
||||
|
||||
if (engine->cache_finish) {
|
||||
@@ -1483,7 +1483,7 @@ static void DRW_engines_draw_background(void)
|
||||
{
|
||||
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
|
||||
DrawEngineType *engine = link->data;
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine->idname);
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine);
|
||||
double stime = PIL_check_seconds_timer();
|
||||
|
||||
if (engine->draw_background) {
|
||||
@@ -1503,7 +1503,7 @@ static void DRW_engines_draw_scene(void)
|
||||
{
|
||||
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
|
||||
DrawEngineType *engine = link->data;
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine->idname);
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine);
|
||||
double stime = PIL_check_seconds_timer();
|
||||
|
||||
if (engine->draw_scene) {
|
||||
@@ -1642,7 +1642,7 @@ static void DRW_debug_cpu_stats(void)
|
||||
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
|
||||
u = 0;
|
||||
DrawEngineType *engine = link->data;
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine->idname);
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine);
|
||||
|
||||
draw_stat(&rect, u++, v, engine->idname, sizeof(engine->idname));
|
||||
|
||||
@@ -1702,7 +1702,7 @@ static void DRW_debug_gpu_stats(void)
|
||||
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
|
||||
GLuint64 engine_time = 0;
|
||||
DrawEngineType *engine = link->data;
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine->idname);
|
||||
ViewportEngineData *data = DRW_viewport_engine_data_get(engine);
|
||||
int vsta = v;
|
||||
|
||||
draw_stat(&rect, 0, v, engine->idname, sizeof(engine->idname));
|
||||
|
||||
@@ -48,7 +48,7 @@ typedef struct EDIT_ARMATURE_StorageList {
|
||||
} EDIT_ARMATURE_StorageList;
|
||||
|
||||
typedef struct EDIT_ARMATURE_Data {
|
||||
char engine_name[32];
|
||||
void *engine_type;
|
||||
void *fbl;
|
||||
void *txl;
|
||||
EDIT_ARMATURE_PassList *psl;
|
||||
|
||||
@@ -83,7 +83,7 @@ typedef struct EDIT_CURVE_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
EDIT_CURVE_FramebufferList *fbl;
|
||||
EDIT_CURVE_TextureList *txl;
|
||||
EDIT_CURVE_PassList *psl;
|
||||
|
||||
@@ -83,7 +83,7 @@ typedef struct EDIT_LATTICE_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
EDIT_LATTICE_FramebufferList *fbl;
|
||||
EDIT_LATTICE_TextureList *txl;
|
||||
EDIT_LATTICE_PassList *psl;
|
||||
|
||||
@@ -81,7 +81,7 @@ typedef struct EDIT_MESH_StorageList {
|
||||
} EDIT_MESH_StorageList;
|
||||
|
||||
typedef struct EDIT_MESH_Data {
|
||||
char engine_name[32];
|
||||
void *engine_type;
|
||||
EDIT_MESH_FramebufferList *fbl;
|
||||
EDIT_MESH_TextureList *txl;
|
||||
EDIT_MESH_PassList *psl;
|
||||
|
||||
@@ -83,7 +83,7 @@ typedef struct EDIT_METABALL_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
EDIT_METABALL_FramebufferList *fbl;
|
||||
EDIT_METABALL_TextureList *txl;
|
||||
EDIT_METABALL_PassList *psl;
|
||||
|
||||
@@ -83,7 +83,7 @@ typedef struct EDIT_SURFACE_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
EDIT_SURFACE_FramebufferList *fbl;
|
||||
EDIT_SURFACE_TextureList *txl;
|
||||
EDIT_SURFACE_PassList *psl;
|
||||
|
||||
@@ -83,7 +83,7 @@ typedef struct EDIT_TEXT_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
EDIT_TEXT_FramebufferList *fbl;
|
||||
EDIT_TEXT_TextureList *txl;
|
||||
EDIT_TEXT_PassList *psl;
|
||||
|
||||
@@ -93,7 +93,7 @@ typedef struct OBJECT_StorageList {
|
||||
} OBJECT_StorageList;
|
||||
|
||||
typedef struct OBJECT_Data {
|
||||
char engine_name[32];
|
||||
void *engine_type;
|
||||
void *fbl;
|
||||
void *txl;
|
||||
OBJECT_PassList *psl;
|
||||
|
||||
@@ -83,7 +83,7 @@ typedef struct PAINT_TEXTURE_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
PAINT_TEXTURE_FramebufferList *fbl;
|
||||
PAINT_TEXTURE_TextureList *txl;
|
||||
PAINT_TEXTURE_PassList *psl;
|
||||
|
||||
@@ -83,7 +83,7 @@ typedef struct PAINT_VERTEX_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
PAINT_VERTEX_FramebufferList *fbl;
|
||||
PAINT_VERTEX_TextureList *txl;
|
||||
PAINT_VERTEX_PassList *psl;
|
||||
|
||||
@@ -83,7 +83,7 @@ typedef struct PAINT_WEIGHT_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
PAINT_WEIGHT_FramebufferList *fbl;
|
||||
PAINT_WEIGHT_TextureList *txl;
|
||||
PAINT_WEIGHT_PassList *psl;
|
||||
|
||||
@@ -77,7 +77,7 @@ typedef struct PARTICLE_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
PARTICLE_FramebufferList *fbl;
|
||||
PARTICLE_TextureList *txl;
|
||||
PARTICLE_PassList *psl;
|
||||
|
||||
@@ -77,7 +77,7 @@ typedef struct POSE_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
POSE_FramebufferList *fbl;
|
||||
POSE_TextureList *txl;
|
||||
POSE_PassList *psl;
|
||||
|
||||
@@ -77,7 +77,7 @@ typedef struct SCULPT_Data {
|
||||
/* Struct returned by DRW_viewport_engine_data_get.
|
||||
* If you don't use one of these, just make it a (void *) */
|
||||
// void *fbl;
|
||||
char engine_name[32]; /* Required */
|
||||
void *engine_type; /* Required */
|
||||
SCULPT_FramebufferList *fbl;
|
||||
SCULPT_TextureList *txl;
|
||||
SCULPT_PassList *psl;
|
||||
|
||||
@@ -64,7 +64,7 @@ typedef struct StorageList {
|
||||
} StorageList;
|
||||
|
||||
typedef struct ViewportEngineData {
|
||||
char engine_name[32];
|
||||
void *engine_type;
|
||||
|
||||
FramebufferList *fbl;
|
||||
TextureList *txl;
|
||||
@@ -83,8 +83,8 @@ void GPU_viewport_bind(GPUViewport *viewport, const rcti *rect);
|
||||
void GPU_viewport_unbind(GPUViewport *viewport);
|
||||
void GPU_viewport_free(GPUViewport *viewport);
|
||||
|
||||
void *GPU_viewport_engine_data_create(GPUViewport *viewport, const char *engine_name);
|
||||
void *GPU_viewport_engine_data_get(GPUViewport *viewport, const char *engine_name);
|
||||
void *GPU_viewport_engine_data_create(GPUViewport *viewport, void *engine_type);
|
||||
void *GPU_viewport_engine_data_get(GPUViewport *viewport, void *engine_type);
|
||||
void *GPU_viewport_framebuffer_list_get(GPUViewport *viewport);
|
||||
void *GPU_viewport_texture_list_get(GPUViewport *viewport);
|
||||
void GPU_viewport_size_get(GPUViewport *viewport, int *size);
|
||||
|
||||
@@ -79,11 +79,11 @@ GPUViewport *GPU_viewport_create(void)
|
||||
return viewport;
|
||||
}
|
||||
|
||||
void *GPU_viewport_engine_data_create(GPUViewport *viewport, const char *engine_name)
|
||||
void *GPU_viewport_engine_data_create(GPUViewport *viewport, void *engine_type)
|
||||
{
|
||||
LinkData *ld = MEM_callocN(sizeof(LinkData), "LinkData");
|
||||
ViewportEngineData *data = MEM_callocN(sizeof(ViewportEngineData), "ViewportEngineData");
|
||||
BLI_strncpy(data->engine_name, engine_name, 32);
|
||||
data->engine_type = engine_type;
|
||||
|
||||
data->fbl = MEM_callocN(sizeof(FramebufferList), "FramebufferList");
|
||||
data->txl = MEM_callocN(sizeof(TextureList), "TextureList");
|
||||
@@ -119,11 +119,11 @@ static void GPU_viewport_engines_data_free(GPUViewport *viewport)
|
||||
}
|
||||
}
|
||||
|
||||
void *GPU_viewport_engine_data_get(GPUViewport *viewport, const char *engine_name)
|
||||
void *GPU_viewport_engine_data_get(GPUViewport *viewport, void *engine_type)
|
||||
{
|
||||
for (LinkData *link = viewport->data.first; link; link = link->next) {
|
||||
ViewportEngineData *vdata = link->data;
|
||||
if (STREQ(engine_name, vdata->engine_name)) {
|
||||
if (vdata->engine_type == engine_type) {
|
||||
return vdata;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user