Merge branch 'release/1.9.x'

This commit is contained in:
rdb 2015-05-14 17:18:20 +02:00
commit 32fb6814e7
5 changed files with 40 additions and 14 deletions

View File

@ -135,6 +135,8 @@ def translated_type_name(type, scoped=True):
typename = interrogate_type_name(type)
if typename in ("PyObject", "_object"):
return "object"
elif typename == "PN_stdfloat":
return "float"
if interrogate_type_is_atomic(type):
token = interrogate_type_atomic_token(type)
@ -143,7 +145,9 @@ def translated_type_name(type, scoped=True):
else:
return typename
typename = translateTypeName(typename)
if not typename.endswith('_t'):
# Hack: don't mangle size_t etc.
typename = translateTypeName(typename)
if scoped and interrogate_type_is_nested(type):
return translated_type_name(interrogate_type_outer_class(type)) + '::' + typename

View File

@ -255,6 +255,11 @@ ConfigVariableBool dump_generated_shaders
"to disk. This is useful for debugging broken shader "
"generators."));
ConfigVariableBool cache_generated_shaders
("cache-generated-shaders", true,
PRC_DESC("Set this true to cause all generated shaders to be cached in "
"memory. This is useful to prevent unnecessary recompilation."));
ConfigVariableBool enforce_attrib_lock
("enforce-attrib-lock", true,
PRC_DESC("When a MaterialAttrib, TextureAttrib, or LightAttrib is "

View File

@ -64,6 +64,7 @@ extern EXPCL_PANDA_GOBJ ConfigVariableBool display_list_animation;
extern EXPCL_PANDA_GOBJ ConfigVariableBool connect_triangle_strips;
extern EXPCL_PANDA_GOBJ ConfigVariableBool preserve_triangle_strips;
extern EXPCL_PANDA_GOBJ ConfigVariableBool dump_generated_shaders;
extern EXPCL_PANDA_GOBJ ConfigVariableBool cache_generated_shaders;
extern EXPCL_PANDA_GOBJ ConfigVariableBool enforce_attrib_lock;
extern EXPCL_PANDA_GOBJ ConfigVariableBool vertices_float64;
extern EXPCL_PANDA_GOBJ ConfigVariableInt vertex_column_alignment;

View File

@ -1829,6 +1829,7 @@ cg_analyze_shader(const ShaderCaps &caps) {
// }
// }
cg_release_resources();
return true;
}
@ -2657,9 +2658,12 @@ make(const string &body, ShaderLanguage lang) {
#endif
ShaderFile sbody(body);
ShaderTable::const_iterator i = _make_table.find(sbody);
if (i != _make_table.end() && (lang == SL_none || lang == i->second->_language)) {
return i->second;
if (cache_generated_shaders) {
ShaderTable::const_iterator i = _make_table.find(sbody);
if (i != _make_table.end() && (lang == SL_none || lang == i->second->_language)) {
return i->second;
}
}
PT(Shader) shader = new Shader(lang);
@ -2678,7 +2682,9 @@ make(const string &body, ShaderLanguage lang) {
}
#endif
_make_table[sbody] = shader;
if (cache_generated_shaders) {
_make_table[sbody] = shader;
}
if (dump_generated_shaders) {
ostringstream fns;
@ -2718,9 +2724,11 @@ make(ShaderLanguage lang, const string &vertex, const string &fragment,
ShaderFile sbody(vertex, fragment, geometry, tess_control, tess_evaluation);
ShaderTable::const_iterator i = _make_table.find(sbody);
if (i != _make_table.end() && (lang == SL_none || lang == i->second->_language)) {
return i->second;
if (cache_generated_shaders) {
ShaderTable::const_iterator i = _make_table.find(sbody);
if (i != _make_table.end() && (lang == SL_none || lang == i->second->_language)) {
return i->second;
}
}
PT(Shader) shader = new Shader(lang);
@ -2737,8 +2745,10 @@ make(ShaderLanguage lang, const string &vertex, const string &fragment,
}
#endif
if (cache_generated_shaders) {
_make_table[sbody] = shader;
}
_make_table[sbody] = shader;
return shader;
}
@ -2759,16 +2769,22 @@ make_compute(ShaderLanguage lang, const string &body) {
sbody._separate = true;
sbody._compute = body;
ShaderTable::const_iterator i = _make_table.find(sbody);
if (i != _make_table.end() && (lang == SL_none || lang == i->second->_language)) {
return i->second;
if (cache_generated_shaders) {
ShaderTable::const_iterator i = _make_table.find(sbody);
if (i != _make_table.end() && (lang == SL_none || lang == i->second->_language)) {
return i->second;
}
}
PT(Shader) shader = new Shader(lang);
shader->_filename = ShaderFile("created-shader");
shader->_text = sbody;
_make_table[sbody] = shader;
if (cache_generated_shaders) {
_make_table[sbody] = shader;
}
return shader;
}

View File

@ -652,7 +652,7 @@ synthesize_shader(const RenderState *rs) {
text << "//Cg\n";
text << "/* Generated shader for render state " << rs << ":\n";
text << "/* Generated shader for render state:\n";
rs->write(text, 2);
text << "*/\n";