[Openchrome-users] Max Texture Size

Thomas Hellström thomas
Tue May 16 04:53:42 PDT 2006


Boris Du?ek wrote:

>Hi Thomas,
>
>I have completed a patch, all getenv's have their driQueryOptionb counterparts 
>now. I have tested the patch only by compiling and viewing the options present 
>in driconf. The patch includes the previous patch I sent you with 
>allow_large_textures.
>
>Btw. driconf has a bug - it uses name "unichrome" for the device, whereas 
>"via" is correct, so the config file resulting from it has no effect unless 
>one changes the device name to the correct value. I will report that to xorg 
>mailing list.
>
>Questions I have:
>
>should I completely remove the env. variable settings below, or leave it as it 
>is in the patch, that is a tandem of env. variable and drirc option decides 
>and env. variable has higher priotiry?
>
>  
>
Nice work, Boris. I think the next thing is to post the full patch on 
the Mesa development list, and if there are no objections, I can commit 
it. Some minor comments:

First try to use a unified diff format, diff -u or cvs diff -u.

Also the name of the new option should change. 
DRI_CONF_ALLOW_LARGE_TEXTURES() deals with memory constranints. We are 
dealing with allowing textures even if there aren't enough hardware 
mipmap levels.

I can imagine situations where environment variables are useful. Let's 
leave them in for now, but you should put the patch on the Mesa 
development list and perhaps ask the same question. People there might 
have another opinion.

>And now questions specifically for each one:
>
>On Thursday 11 May 2006 22:21, you wrote:
>  
>
>>via_context.c:      if (getenv("ALTERNATE_SCREEN"))
>>    
>>
>I don't know what it does - could you please provide a description so that 
>driconf users get an idea (and me too :)
>  
>
I don't know either.  I'll fill something in if I find out !

>  
>
>>via_context.c:    if (getenv("VIA_DEBUG"))
>>via_context.c:       VIA_DEBUG = driParseDebugString( getenv( "VIA_DEBUG"
>>    
>>
>this would benefit from xmlconfig.c extended to handle flag-type variables; if 
>you think it is a good idea, I will try to implement it in future if/when I 
>have more time;
>
>  
>
>>), via_context.c:    if (getenv("VIA_NO_RAST"))
>>    
>>
>that was the easiest option :)
>
>  
>
>>via_context.c:    vmesa->vblank_flags = (getenv("VIA_VSYNC") ?
>>    
>>
>seen some comments about non-functionality of drirc configuration using 
>driGetDefaultVBlankFlags, I too don't understand why that would not work 
>(maybe the comment is outdated), will try to test it
>
>  
>
>>via_context.c:    if (getenv("VIA_PAGEFLIP"))
>>    
>>
>I need a description for it too; I added the option to 
>common/xmlpool/t_options.h since other drivers also use PageFlip setting (but 
>none queries neither drirc nor env. variable) and may be interested in using 
>it too
>
>  
>
I think pageflipping is changing the front buffer starting address 
instead of  blitting from back to front. This belongs in the performance 
section.

>>via_tex.c:   if (getenv("VIA_NO_SSE"))
>>    
>>
>What gets resolved with this is toggling the apparently buggy sse_memcpy. Now 
>there is "sse_memcpy" option set by default to false. The new thing is that 
>one can enable it in drirc with the full "per application settings" 
>flexibility. I have reenabled the via_sse_memcpy code, so if one sets
><option name="sse_memcpy" value="true" />, it will have a real effect.
>
>  
>
Nice. I think the bug in the sse_memcpy code is that it tries to perform 
a prefetch even for a null size copy when the source address is invalid.

>Finally DRI_CONF_FTHROTTLE_MODE is not used anywhere but is declared in 
>__driConfigOptions - is it to be used somewhere, or did it accidentally 
>result from copying that code from radeon driver, as possibly suggested by the 
>comment before the declaration of __driConfigOptions?
>
>  
>
Throttling is currently implemented in the kernel with the VIA driver, 
so that option can go away.

>Regards,
>Boris
>
>  
>
>>These should ideally also be moved to driconf option handling, which is
>>only a matter of finishing what others have started.
>>    
>>
>
>  
>
Regards,
/Thomas


>>------------------------------------------------------------------------
>>
>>Index: common/xmlpool/t_options.h
>>===================================================================
>>RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/common/xmlpool/t_options.h,v
>>retrieving revision 1.2
>>diff -r1.2 t_options.h
>>219a220,224
>>    
>>
>>>#define DRI_CONF_PAGEFLIP(def) \
>>>DRI_CONF_OPT_BEGIN(pageflip,bool,def) \
>>>	DRI_CONF_DESC_BEGIN(en,gettext("Enable page flipping")) \
>>>DRI_CONF_OPT_END
>>>
>>>      
>>>
>>Index: unichrome/via_context.c
>>===================================================================
>>RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/unichrome/via_context.c,v
>>retrieving revision 1.60
>>diff -r1.60 via_context.c
>>276c276,277
>><       if (getenv("ALTERNATE_SCREEN")) 
>>---
>>    
>>
>>>      if (getenv("ALTERNATE_SCREEN") ||
>>>          driQueryOptionb (&vmesa->optionCache, "alternate_screen"))
>>>      
>>>
>>538c539
>><     viaInitTextureFuncs(&functions);
>>---
>>    
>>
>>>    viaInitTextureFuncs(&vmesa->optionCache, &functions);
>>>      
>>>
>>557a559
>>    
>>
>>559c561,566
>><     ctx->Const.MaxTextureLevels = 10;    
>>---
>>    
>>
>>>    if (driQueryOptioni(&vmesa->optionCache, "allow_large_textures"))
>>>      ctx->Const.MaxTextureLevels = 11;
>>>    else
>>>      ctx->Const.MaxTextureLevels = 10;
>>>
>>>      
>>>
>>647a655
>>    
>>
>>>    
>>>      
>>>
>>658c666,667
>><     if (getenv("VIA_NO_RAST"))
>>---
>>    
>>
>>>    if (getenv("VIA_NO_RAST") ||
>>>        driQueryOptionb (&vmesa->optionCache, "no_rast"))
>>>      
>>>
>>672c681,682
>><     if (getenv("VIA_PAGEFLIP"))
>>---
>>    
>>
>>>    if (getenv("VIA_PAGEFLIP") ||
>>>        driQueryOptionb (&vmesa->optionCache, "pageflip"))
>>>      
>>>
>>728a739,740
>>    
>>
>>>	driDestroyOptionCache (&vmesa->optionCache);
>>>
>>>      
>>>
>>Index: unichrome/via_screen.c
>>===================================================================
>>RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/unichrome/via_screen.c,v
>>retrieving revision 1.32
>>diff -r1.32 via_screen.c
>>49,50d48
>>< /* Radeon configuration
>><  */
>>52a51,60
>>    
>>
>>>#define DRI_CONF_ALTERNATE_SCREEN(def) \
>>>DRI_CONF_OPT_BEGIN(alternate_screen,bool,def) \
>>>	DRI_CONF_DESC(en,"Enable alternate screen") \
>>>DRI_CONF_OPT_END
>>>
>>>#define DRI_CONF_SSE_MEMCPY(def) \
>>>DRI_CONF_OPT_BEGIN(sse_memcpy,bool,def) \
>>>	DRI_CONF_DESC(en,"Enable SSE memcpy") \
>>>DRI_CONF_OPT_END
>>>
>>>      
>>>
>>57a66,71
>>    
>>
>>>        DRI_CONF_ALTERNATE_SCREEN(false)
>>>        DRI_CONF_PAGEFLIP(false)
>>>        DRI_CONF_SSE_MEMCPY(false)
>>>    DRI_CONF_SECTION_END
>>>    DRI_CONF_SECTION_QUALITY
>>>        DRI_CONF_ALLOW_LARGE_TEXTURES(0)
>>>      
>>>
>>63c77
>>< static const GLuint __driNConfigOptions = 3;
>>---
>>    
>>
>>>static const GLuint __driNConfigOptions = 7;
>>>      
>>>
>>208a223,224
>>    
>>
>>>	driDestroyOptionInfo (&viaScreen->optionCache);
>>>
>>>      
>>>
>>Index: unichrome/via_tex.c
>>===================================================================
>>RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/unichrome/via_tex.c,v
>>retrieving revision 1.14
>>diff -r1.14 via_tex.c
>>514a515,522
>>    
>>
>>>   /* The hardware only supports 10 mipmap levels. Ignore higher levels.
>>>    */
>>>
>>>   if ((numLevels > 10) && (ctx->Const.MaxTextureLevels > 10)) {
>>>       lastLevel -= numLevels - 10;
>>>       numLevels = 10;
>>>   }
>>>
>>>      
>>>
>>947c955,956
>>< void viaInitTextureFuncs(struct dd_function_table * functions)
>>---
>>    
>>
>>>void viaInitTextureFuncs(driOptionCache * optionCache,
>>>                         struct dd_function_table * functions)
>>>      
>>>
>>960c969
>>< #if 0 && defined( USE_SSE_ASM )
>>---
>>    
>>
>>>#if defined( USE_SSE_ASM )
>>>      
>>>
>>962,963c971
>><     * XXX this code is disabled for now because the via_sse_memcpy()
>><     * routine causes segfaults with flightgear.
>>---
>>    
>>
>>>    * the via_sse_memcpy() routine causes segfaults with flightgear.
>>>      
>>>
>>965d972
>><     * Note that this function is currently disabled in via_tris.c too.
>>967c974,975
>><    if (getenv("VIA_NO_SSE"))
>>---
>>    
>>
>>>   if (getenv("VIA_NO_SSE") ||
>>>       !driQueryOptionb (optionCache, "sse_memcpy"))
>>>      
>>>
>>979d986
>>< 
>>Index: unichrome/via_tex.h
>>===================================================================
>>RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/unichrome/via_tex.h,v
>>retrieving revision 1.6
>>diff -r1.6 via_tex.h
>>29a30
>>    
>>
>>>#include "xmlconfig.h"
>>>      
>>>
>>34c35
>>< void viaInitTextureFuncs(struct dd_function_table * functions);
>>---
>>    
>>
>>>void viaInitTextureFuncs(driOptionCache * optionCache, struct dd_function_table * functions);
>>>      
>>>
>>Index: unichrome/via_tris.c
>>===================================================================
>>RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/unichrome/via_tris.c,v
>>retrieving revision 1.37
>>diff -r1.37 via_tris.c
>>58c58
>>< #if 0
>>---
>>    
>>
>>>#if defined( USE_SSE_ASM )
>>>      
>>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://wiki.openchrome.org/pipermail/openchrome-users/attachments/20060516/b3ca9158/attachment.html



More information about the Openchrome-users mailing list