Keith Whitwell pisze:
> On Thu, 2009-11-26 at 10:42 -0800, michal wrote:
>   
>> Keith Whitwell pisze:
>>     
>>> On Wed, 2009-11-25 at 08:51 -0800, michal wrote:
>>>   
>>>       
>>>> michal pisze:
>>>>     
>>>>         
>>>>> Keith Whitwell pisze:
>>>>>   
>>>>>       
>>>>>           
>>>>>> On Wed, 2009-11-25 at 06:28 -0800, michal wrote:
>>>>>>   
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>>> Keith Whitwell pisze:
>>>>>>>     
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>>>> I've pushed a feature branch with some tgsi simplifications in it.  
>>>>>>>> With
>>>>>>>> these I've removed the biggest remaining oddities of that language, and
>>>>>>>> it's getting to a place where I'm starting to be happy with it as a
>>>>>>>> foundation for future work.
>>>>>>>>
>>>>>>>> Most of the surprising stuff like multiple negate flags, etc, is gone
>>>>>>>> now, and the core tokens are quite a bit easier to understand than in
>>>>>>>> previous iterations.
>>>>>>>>
>>>>>>>> I've still got my eye on reducing the verbosity of the names in the
>>>>>>>> tgsi_parse.h "FullToken" world, and promoting the tgsi_any_token union
>>>>>>>> into p_shader_tokens.h.
>>>>>>>>
>>>>>>>> It would be good if people can review the interface changes and provide
>>>>>>>> feedback, and also test out their drivers on this branch.  I've done
>>>>>>>> minimal softpipe testing so far but will do more over the next few 
>>>>>>>> days.
>>>>>>>>
>>>>>>>>   
>>>>>>>>       
>>>>>>>>         
>>>>>>>>             
>>>>>>>>                 
>>>>>>> All looks good to me, I'm happy somebody had the guts to cut off all 
>>>>>>> the 
>>>>>>> cruft in one shot.
>>>>>>>
>>>>>>> I see some compile errors on windows build -- I will fix those along 
>>>>>>> with other minor bugs I have spotted.
>>>>>>>
>>>>>>> Now, looking at the interface, I'm thinking about removing some more 
>>>>>>> tokens.
>>>>>>>
>>>>>>> 1) Remove tgsi_dimension and use tgsi_src_register directly with some 
>>>>>>> well-defined constraints.
>>>>>>>
>>>>>>> 2) Do the same to tgsi_instruction_predicate. Really, it's just an 
>>>>>>> optional src operand with some restrictions.
>>>>>>>     
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>> Interesting.  I'd be keen to see a patch.
>>>>>>
>>>>>>
>>>>>>   
>>>>>>     
>>>>>>         
>>>>>>             
>>>>> Attached. But the more I look at it the more lame it gets.
>>>>>
>>>>> Another option would be to define tgsi_any_register that would have 
>>>>> File, Index, Indirect and Dimension fields. Then there would be more 
>>>>> specialised tgsi_*_register tokens, that would be binary compatible with 
>>>>> the first one. One could cast them using a union and avoid more mistakes 
>>>>> at compile time. That way we don't have to put the constraints in 
>>>>> comments, but be more strict and use the compiler to enforce them. I 
>>>>> will follow up with a patch.
>>>>>   
>>>>>       
>>>>>           
>>>> Attached.
>>>>     
>>>>         
>>> This makes me wonder about a couple of other things, like whether 16
>>> bits is sufficient for the index value.  Probably its fine, but it's not
>>> beyond belief to consider a constant buffer of 256k or larger.
>>>
>>> I'd consider dropping the "generic_register" struct and any idea of a
>>> union of these registers.  I'm not really sure we want to encourage the
>>> idea of people casting between these registers -- for the most part they
>>> should be building these things with ureg-style functions rather than
>>> messing around with the tokens directly.  
>>>
>>> If you can easily cast between registers, that defeats any static
>>> constraints you attempt to impose via the type system, and you may as
>>> well just use "src_register" for predicates and dimensions.  An
>>> interpreter which might benefit from being able to share some code paths
>>> for the different registers doesn't need the union to be public.
>>>
>>> Basically, this looks like a good regularization/cleanup, but let's drop
>>> generic_register and not create any public union of these register
>>> structs.
>>>
>>>   
>>>       
>> Attached an updated patch.
>>
>> One thing to note in general is that by removing the Extended flags and 
>> the fact that some of the tokens already use up all the available 32 
>> bits, the only way to extend the language may be by incrementing the 
>> version number in shader's header. This can be a good or a bad thing, 
>> depending on the direction Gallium is heading, but with a bit of 
>> discipline that should be a good thing.
>>     
>
> I don't see that as an issue.  First and foremost, TGSI is part of
> gallium, which itself makes no binary compatibility guarantees from one
> build to the next.  In terms of tracing and replay, or any other use of
> TGSI to communicate shaders between components that weren't necessarily
> built at the same time, then yes a version number would be nice.  But
> those shaders won't exist in isolation and the rest of the 3d commands &
> state will need to establish compatibility.
>
> It's not the job of the shader representation to do versioning between
> two gallium-speaking entities.  
>
> >From that point of view I'm really not sure what the purpose of the
> version number, is in our representation, unless we want to be able to
> support multiple versions of TGSI simultaneously in one gallium
> instance.
>
> And in turn, I can't really think why we'd want to do that...
>
> So -- lets remove the version token while we're here.
>
>   
One scenario is a sanity check done in the gallium driver. Check if 
version number matches (exact match) -- there can be changes in the 
interface that do not break builds. No fancy major.minor versioning 
schemes, just a number incremented each time we change something in 
p_shader_tokens.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to