diff options
author | Roland Scheidegger <rscheidegger@gmx.ch> | 2006-02-03 13:29:11 +0000 |
---|---|---|
committer | Roland Scheidegger <rscheidegger@gmx.ch> | 2006-02-03 13:29:11 +0000 |
commit | e7276b7fa597f7914f7e10a2e50dae36ae50e10b (patch) | |
tree | 56b65ced65d5e39ab8d13a76e6cc797542fb2570 /src/mesa/drivers/dri/common | |
parent | 16a14510c4c134db9268719e9458bf6bf83e618a (diff) |
replace the texture level hack used in radeon/r200 to allow larger textures with different methods to calculate the announced maximum texture sizes. Default is still the same (that is, radeon/r200 default to not announce anything which might not fit, i830/i915 default to 1 texture must fit). Bug #5785.
Diffstat (limited to 'src/mesa/drivers/dri/common')
-rw-r--r-- | src/mesa/drivers/dri/common/texmem.c | 19 | ||||
-rw-r--r-- | src/mesa/drivers/dri/common/texmem.h | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/common/xmlpool/de.po | 39 | ||||
-rw-r--r-- | src/mesa/drivers/dri/common/xmlpool/options.h | 36 | ||||
-rw-r--r-- | src/mesa/drivers/dri/common/xmlpool/t_options.h | 10 |
5 files changed, 75 insertions, 34 deletions
diff --git a/src/mesa/drivers/dri/common/texmem.c b/src/mesa/drivers/dri/common/texmem.c index 7cf2e21b63..41316de1fc 100644 --- a/src/mesa/drivers/dri/common/texmem.c +++ b/src/mesa/drivers/dri/common/texmem.c @@ -971,19 +971,22 @@ get_max_size( unsigned nr_heaps, * For hardware that does not support mipmapping, this will be 1. * \param all_textures_one_heap True if the hardware requires that all * textures be in a single texture heap for multitexturing. + * \param allow_larger_textures 0 conservative, 1 calculate limits + * so at least one worst-case texture can fit, 2 just use hw limits. */ void driCalculateMaxTextureLevels( driTexHeap * const * heaps, unsigned nr_heaps, struct gl_constants * limits, - unsigned max_bytes_per_texel, + unsigned max_bytes_per_texel, unsigned max_2D_size, unsigned max_3D_size, unsigned max_cube_size, unsigned max_rect_size, unsigned mipmaps_at_once, - int all_textures_one_heap ) + int all_textures_one_heap, + int allow_larger_textures ) { struct maps_per_heap max_textures[8]; unsigned i; @@ -1012,18 +1015,22 @@ driCalculateMaxTextureLevels( driTexHeap * const * heaps, */ for ( i = 0 ; i < 4 ; i++ ) { - if ( max_sizes[ i ] != 0 ) { - fill_in_maximums( heaps, nr_heaps, max_bytes_per_texel, + if ( (allow_larger_textures != 2) && (max_sizes[ i ] != 0) ) { + fill_in_maximums( heaps, nr_heaps, max_bytes_per_texel, max_sizes[ i ], mipmaps[ i ], dimensions[ i ], faces[ i ], max_textures ); - max_sizes[ i ] = get_max_size( nr_heaps, - limits->MaxTextureUnits, + max_sizes[ i ] = get_max_size( nr_heaps, + allow_larger_textures == 1 ? + 1 : limits->MaxTextureUnits, max_sizes[ i ], all_textures_one_heap, max_textures ); } + else if (max_sizes[ i ] != 0) { + max_sizes[ i ] += 1; + } } SET_MAX( MaxTextureLevels, 0 ); diff --git a/src/mesa/drivers/dri/common/texmem.h b/src/mesa/drivers/dri/common/texmem.h index 22d1755895..6692efcc30 100644 --- a/src/mesa/drivers/dri/common/texmem.h +++ b/src/mesa/drivers/dri/common/texmem.h @@ -291,13 +291,14 @@ void driCalculateMaxTextureLevels( driTexHeap * const * heaps, unsigned nr_heaps, struct gl_constants * limits, - unsigned max_bytes_per_texel, + unsigned max_bytes_per_texel, unsigned max_2D_size, unsigned max_3D_size, unsigned max_cube_size, unsigned max_rect_size, unsigned mipmaps_at_once, - int all_textures_one_heap ); + int all_textures_one_heap, + int allow_larger_textures ); void driSetTextureSwapCounterLocation( driTexHeap * heap, unsigned * counter ); diff --git a/src/mesa/drivers/dri/common/xmlpool/de.po b/src/mesa/drivers/dri/common/xmlpool/de.po index e287d0fe79..4ea82f9010 100644 --- a/src/mesa/drivers/dri/common/xmlpool/de.po +++ b/src/mesa/drivers/dri/common/xmlpool/de.po @@ -178,8 +178,8 @@ msgid "" "Always synchronize with vertical refresh, application chooses the minimum " "swap interval" msgstr "" -"Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minmale " -"Bildinterval" +"Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minimale " +"Bildintervall" #: t_options.h:186 msgid "Use HyperZ to boost performance" @@ -190,42 +190,51 @@ msgid "Number of texture units used" msgstr "Anzahl der benutzten Textureinheiten" #: t_options.h:196 -msgid "" -"Enable hack to allow larger textures with texture compression on radeon/r200" -msgstr "" -"Hack aktivieren, der mit Texturkompression auf radeon/r200 größere Texturen " -"erlaubt" +msgid "Support larger textures not guaranteed to fit into graphics memory" +msgstr "Unterstütze grosse Texturen die evtl. nicht in den Grafikspeicher passen" + +#: t_options.h:197 +msgid "No" +msgstr "Nein" + +#: t_options.h:198 +msgid "At least 1 texture must fit under worst-case assumptions" +msgstr "Mindestens 1 Textur muss auch im schlechtesten Fall Platz haben" -#: t_options.h:201 +#: t_options.h:199 +msgid "Announce hardware limits" +msgstr "Benutze Hardware-Limits" + +#: t_options.h:205 msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering" msgstr "" "Texturfilterqualität versus -geschwindigkeit, auch bekannt als „brilineare“ " "Texturfilterung" -#: t_options.h:209 +#: t_options.h:213 msgid "Used types of texture memory" msgstr "Benutzte Arten von Texturspeicher" -#: t_options.h:210 +#: t_options.h:214 msgid "All available memory" msgstr "Aller verfügbarer Speicher" -#: t_options.h:211 +#: t_options.h:215 msgid "Only card memory (if available)" msgstr "Nur Grafikspeicher (falls verfügbar)" -#: t_options.h:212 +#: t_options.h:216 msgid "Only GART (AGP/PCIE) memory (if available)" msgstr "Nur GART-Speicher (AGP/PCIE) (falls verfügbar)" -#: t_options.h:220 +#: t_options.h:224 msgid "Features that are not hardware-accelerated" msgstr "Funktionalität, die nicht hardwarebeschleunigt ist" -#: t_options.h:224 +#: t_options.h:228 msgid "Enable extension GL_ARB_vertex_program" msgstr "Erweiterung GL_ARB_vertex_program aktivieren" -#: t_options.h:229 +#: t_options.h:233 msgid "Enable extension GL_NV_vertex_program" msgstr "Erweiterung GL_NV_vertex_program aktivieren" diff --git a/src/mesa/drivers/dri/common/xmlpool/options.h b/src/mesa/drivers/dri/common/xmlpool/options.h index 86d17d0249..a0d617c344 100644 --- a/src/mesa/drivers/dri/common/xmlpool/options.h +++ b/src/mesa/drivers/dri/common/xmlpool/options.h @@ -341,7 +341,7 @@ DRI_CONF_OPT_BEGIN_V(vblank_mode,enum,def,"0:3") \ DRI_CONF_ENUM(0,"Niemals mit der Bildwiederholung synchronisieren, Anweisungen der Anwendung ignorieren") \ DRI_CONF_ENUM(1,"Initiales Bildinterval 0, Anweisungen der Anwendung gehorchen") \ DRI_CONF_ENUM(2,"Initiales Bildinterval 1, Anweisungen der Anwendung gehorchen") \ - DRI_CONF_ENUM(3,"Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minmale Bildinterval") \ + DRI_CONF_ENUM(3,"Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minimale Bildintervall") \ DRI_CONF_DESC_END \ DRI_CONF_DESC_BEGIN(es,"Sincronización con el refresco vertical (intervalos de intercambio)") \ DRI_CONF_ENUM(0,"No sincronizar nunca con el refresco vertical, ignorar la elección de la aplicación") \ @@ -383,13 +383,33 @@ DRI_CONF_OPT_BEGIN_V(texture_units,int,def, # min ":" # max ) \ DRI_CONF_DESC(fr,"Nombre d'unités de texture") \ DRI_CONF_OPT_END -#define DRI_CONF_TEXTURE_LEVEL_HACK(def) \ -DRI_CONF_OPT_BEGIN(texture_level_hack,bool,def) \ - DRI_CONF_DESC(en,"Enable hack to allow larger textures with texture compression on radeon/r200") \ - DRI_CONF_DESC(de,"Hack aktivieren, der mit Texturkompression auf radeon/r200 größere Texturen erlaubt") \ - DRI_CONF_DESC(es,"Activar ”hack“ para permitir texturas más grandes con compresión de textura activada en la Radeon/r200") \ - DRI_CONF_DESC(nl,"Schakel hack in om met textuurcompressie grotere texturen toe te staan op een radeon/r200") \ - DRI_CONF_DESC(fr,"Activer le hack permettant l'utilisation de textures de grande taille avec la compression de textures sur radeon/r200") \ +#define DRI_CONF_ALLOW_LARGE_TEXTURES(def) \ +DRI_CONF_OPT_BEGIN_V(allow_large_textures,enum,def,"0:2") \ + DRI_CONF_DESC_BEGIN(en,"Support larger textures not guaranteed to fit into graphics memory") \ + DRI_CONF_ENUM(0,"No") \ + DRI_CONF_ENUM(1,"At least 1 texture must fit under worst-case assumptions") \ + DRI_CONF_ENUM(2,"Announce hardware limits") \ + DRI_CONF_DESC_END \ + DRI_CONF_DESC_BEGIN(de,"Unterstütze grosse Texturen die evtl. nicht in den Grafikspeicher passen") \ + DRI_CONF_ENUM(0,"Nein") \ + DRI_CONF_ENUM(1,"Mindestens 1 Textur muss auch im schlechtesten Fall Platz haben") \ + DRI_CONF_ENUM(2,"Benutze Hardware-Limits") \ + DRI_CONF_DESC_END \ + DRI_CONF_DESC_BEGIN(es,"Support larger textures not guaranteed to fit into graphics memory") \ + DRI_CONF_ENUM(0,"No") \ + DRI_CONF_ENUM(1,"At least 1 texture must fit under worst-case assumptions") \ + DRI_CONF_ENUM(2,"Announce hardware limits") \ + DRI_CONF_DESC_END \ + DRI_CONF_DESC_BEGIN(nl,"Support larger textures not guaranteed to fit into graphics memory") \ + DRI_CONF_ENUM(0,"No") \ + DRI_CONF_ENUM(1,"At least 1 texture must fit under worst-case assumptions") \ + DRI_CONF_ENUM(2,"Announce hardware limits") \ + DRI_CONF_DESC_END \ + DRI_CONF_DESC_BEGIN(fr,"Support larger textures not guaranteed to fit into graphics memory") \ + DRI_CONF_ENUM(0,"No") \ + DRI_CONF_ENUM(1,"At least 1 texture must fit under worst-case assumptions") \ + DRI_CONF_ENUM(2,"Announce hardware limits") \ + DRI_CONF_DESC_END \ DRI_CONF_OPT_END #define DRI_CONF_TEXTURE_BLEND_QUALITY(def,range) \ diff --git a/src/mesa/drivers/dri/common/xmlpool/t_options.h b/src/mesa/drivers/dri/common/xmlpool/t_options.h index ab9245ee29..0330f7560e 100644 --- a/src/mesa/drivers/dri/common/xmlpool/t_options.h +++ b/src/mesa/drivers/dri/common/xmlpool/t_options.h @@ -191,9 +191,13 @@ DRI_CONF_OPT_BEGIN_V(texture_units,int,def, # min ":" # max ) \ DRI_CONF_DESC(en,gettext("Number of texture units used")) \ DRI_CONF_OPT_END -#define DRI_CONF_TEXTURE_LEVEL_HACK(def) \ -DRI_CONF_OPT_BEGIN(texture_level_hack,bool,def) \ - DRI_CONF_DESC(en,gettext("Enable hack to allow larger textures with texture compression on radeon/r200")) \ +#define DRI_CONF_ALLOW_LARGE_TEXTURES(def) \ +DRI_CONF_OPT_BEGIN_V(allow_large_textures,enum,def,"0:2") \ + DRI_CONF_DESC_BEGIN(en,gettext("Support larger textures not guaranteed to fit into graphics memory")) \ + DRI_CONF_ENUM(0,gettext("No")) \ + DRI_CONF_ENUM(1,gettext("At least 1 texture must fit under worst-case assumptions")) \ + DRI_CONF_ENUM(2,gettext("Announce hardware limits")) \ + DRI_CONF_DESC_END \ DRI_CONF_OPT_END #define DRI_CONF_TEXTURE_BLEND_QUALITY(def,range) \ |