forked from bartvdbraak/blender
Fix #33417: add back GPU Mipmap Generation option, apparently with this disabled
it takes up less memory on some cards, still unclear why.
This commit is contained in:
parent
690359eb8d
commit
5bb576e8e4
@ -437,6 +437,7 @@ class USERPREF_PT_system(Panel):
|
|||||||
col.label(text="OpenGL:")
|
col.label(text="OpenGL:")
|
||||||
col.prop(system, "gl_clip_alpha", slider=True)
|
col.prop(system, "gl_clip_alpha", slider=True)
|
||||||
col.prop(system, "use_mipmaps")
|
col.prop(system, "use_mipmaps")
|
||||||
|
col.prop(system, "use_gpu_mipmap")
|
||||||
col.prop(system, "use_16bit_textures")
|
col.prop(system, "use_16bit_textures")
|
||||||
col.label(text="Anisotropic Filtering")
|
col.label(text="Anisotropic Filtering")
|
||||||
col.prop(system, "anisotropic_filter", text="")
|
col.prop(system, "anisotropic_filter", text="")
|
||||||
|
@ -116,7 +116,7 @@ void GPU_set_anisotropic(float value);
|
|||||||
float GPU_get_anisotropic(void);
|
float GPU_get_anisotropic(void);
|
||||||
|
|
||||||
/* enable gpu mipmapping */
|
/* enable gpu mipmapping */
|
||||||
void GPU_set_gpu_mipmapping(void);
|
void GPU_set_gpu_mipmapping(int gpu_mipmap);
|
||||||
|
|
||||||
/* Image updates and free
|
/* Image updates and free
|
||||||
* - these deal with images bound as opengl textures */
|
* - these deal with images bound as opengl textures */
|
||||||
|
@ -240,10 +240,16 @@ static struct GPUTextureState {
|
|||||||
|
|
||||||
/* Mipmap settings */
|
/* Mipmap settings */
|
||||||
|
|
||||||
void GPU_set_gpu_mipmapping()
|
void GPU_set_gpu_mipmapping(int gpu_mipmap)
|
||||||
{
|
{
|
||||||
/* always enable if it's supported */
|
int old_value = GTS.gpu_mipmap;
|
||||||
GTS.gpu_mipmap = GLEW_EXT_framebuffer_object;
|
|
||||||
|
/* only actually enable if it's supported */
|
||||||
|
GTS.gpu_mipmap = gpu_mipmap && GLEW_EXT_framebuffer_object;
|
||||||
|
|
||||||
|
if (old_value != GTS.gpu_mipmap) {
|
||||||
|
GPU_free_images();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GPU_set_mipmap(int mipmap)
|
void GPU_set_mipmap(int mipmap)
|
||||||
|
@ -144,6 +144,12 @@ static void rna_userdef_anisotropic_update(Main *bmain, Scene *scene, PointerRNA
|
|||||||
rna_userdef_update(bmain, scene, ptr);
|
rna_userdef_update(bmain, scene, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void rna_userdef_gl_gpu_mipmaps(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||||
|
{
|
||||||
|
GPU_set_gpu_mipmapping(U.use_gpu_mipmap);
|
||||||
|
rna_userdef_update(bmain, scene, ptr);
|
||||||
|
}
|
||||||
|
|
||||||
static void rna_userdef_gl_texture_limit_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
static void rna_userdef_gl_texture_limit_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||||
{
|
{
|
||||||
GPU_free_images();
|
GPU_free_images();
|
||||||
@ -3218,6 +3224,11 @@ static void rna_def_userdef_system(BlenderRNA *brna)
|
|||||||
RNA_def_property_ui_text(prop, "16 Bit Float Textures", "Use 16 bit per component texture for float images");
|
RNA_def_property_ui_text(prop, "16 Bit Float Textures", "Use 16 bit per component texture for float images");
|
||||||
RNA_def_property_update(prop, 0, "rna_userdef_gl_use_16bit_textures");
|
RNA_def_property_update(prop, 0, "rna_userdef_gl_use_16bit_textures");
|
||||||
|
|
||||||
|
prop = RNA_def_property(srna, "use_gpu_mipmap", PROP_BOOLEAN, PROP_NONE);
|
||||||
|
RNA_def_property_boolean_sdna(prop, NULL, "use_gpu_mipmap", 1);
|
||||||
|
RNA_def_property_ui_text(prop, "GPU Mipmap Generation", "Generate Image Mipmaps on the GPU");
|
||||||
|
RNA_def_property_update(prop, 0, "rna_userdef_gl_gpu_mipmaps");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "use_vertex_buffer_objects", PROP_BOOLEAN, PROP_NONE);
|
prop = RNA_def_property(srna, "use_vertex_buffer_objects", PROP_BOOLEAN, PROP_NONE);
|
||||||
RNA_def_property_boolean_negative_sdna(prop, NULL, "gameflags", USER_DISABLE_VBO);
|
RNA_def_property_boolean_negative_sdna(prop, NULL, "gameflags", USER_DISABLE_VBO);
|
||||||
RNA_def_property_ui_text(prop, "VBOs",
|
RNA_def_property_ui_text(prop, "VBOs",
|
||||||
|
@ -183,7 +183,7 @@ void WM_init(bContext *C, int argc, const char **argv)
|
|||||||
GPU_extensions_init();
|
GPU_extensions_init();
|
||||||
GPU_set_mipmap(!(U.gameflags & USER_DISABLE_MIPMAP));
|
GPU_set_mipmap(!(U.gameflags & USER_DISABLE_MIPMAP));
|
||||||
GPU_set_anisotropic(U.anisotropic_filter);
|
GPU_set_anisotropic(U.anisotropic_filter);
|
||||||
GPU_set_gpu_mipmapping();
|
GPU_set_gpu_mipmapping(U.use_gpu_mipmap);
|
||||||
|
|
||||||
UI_init();
|
UI_init();
|
||||||
}
|
}
|
||||||
|
@ -756,7 +756,7 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
GPU_set_anisotropic(U.anisotropic_filter);
|
GPU_set_anisotropic(U.anisotropic_filter);
|
||||||
GPU_set_gpu_mipmapping();
|
GPU_set_gpu_mipmapping(U.use_gpu_mipmap);
|
||||||
|
|
||||||
// Create the system
|
// Create the system
|
||||||
if (GHOST_ISystem::createSystem() == GHOST_kSuccess)
|
if (GHOST_ISystem::createSystem() == GHOST_kSuccess)
|
||||||
|
Loading…
Reference in New Issue
Block a user