Draw Manager: Use engine type pointer instead of engine name.

Faster search
This commit is contained in:
Clément Foucault
2017-04-03 19:32:05 +02:00
parent ccd8353d58
commit 4a8aaab0b2
20 changed files with 34 additions and 35 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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));

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;
}
}