Hello

On Mon, Jan 25, 2010 at 5:51 PM, Zack Rusin <za...@vmware.com> wrote:
> On Monday 25 January 2010 16:38:46 Igor Oliveira wrote:
>> Hello,
>>
>> This is just a report about the work i am doing.
>>
>> 2 days ago i began to study the vega state tracker to understand
>> better and help a bit since there i already fix some bugs.
>> So right now i am implementing the advanced blending extension[1].
>> This extension include many blending methods supported in authoring
>> tools & file formats like SVG 1.2. I just implemented right now 2
>> blend operations in next days i am finishing all operation methods.
>
> Sounds great Igor. Feel free to add some test to progs/openvg/trivial or such
> that shows the extended blending. When I was working on this code I used to
> use the Khronos conformance framework but I don't have access to it anymore
> and it'd be a good idea for us to build up more of a testing infrastructure
> for this stuff.
>
>> diff --git a/include/VG/openvg.h b/include/VG/openvg.h
>> index 60167e4..2a6c510 100644
>> --- a/include/VG/openvg.h
>> +++ b/include/VG/openvg.h
>> @@ -444,6 +444,8 @@ typedef enum {
>>    VG_BLEND_DARKEN                             = 0x2007,
>>    VG_BLEND_LIGHTEN                            = 0x2008,
>>    VG_BLEND_ADDITIVE                           = 0x2009,
>> +  VG_BLEND_SUBTRACT_KHR                       = 0x2017,
>> +  VG_BLEND_INVERT_KHR                         = 0x2018,
>>
>>    VG_BLEND_MODE_FORCE_SIZE                    = VG_MAX_ENUM
>>  } VGBlendMode;
>
> This change isn't right, we'd like to keep the openvg.h header like it is
> provided from Khronos (exactly the same way we do for GL). We just need to add
> the new vgext.h header from Khronos to account for all those new extensions.
> If you'd like I can do that soon.

yep it would be cool!
My first idea is to create a branch.

>
>> +static const char blend_subtract_khr_asm[] =
>> +   "TEX TEMP[1], IN[0], SAMP[2], 2D\n"
>> +   "SUB TEMP[1], TEMP[1], TEMP[0]\n"
>> +   "STR TEMP[2]\n"
>> +   "NOT TEMP[2]\n"
>> +   "MAX TEMP[1], TEMP[1], TEMP[2]\n"
>> +   "MUL TEMP[2], TEMP[0].wwww, TEMP[1].wwww\n"
>> +   "ADD TEMP[3], TEMP[0].wwww, TEMP[1].wwww\n"
>> +   "SUB TEMP[1].w, TEMP[3], TEMP[2]\n"
>> +   "MOV %s, TEMP[0]\n";
>> +
>> +static const char blend_invert_khr_asm[] =
>> +   "TEX TEMP[1], IN[0], SAMP[2], 2D\n"
>> +   "SUB TEMP[2], CONST[0].yyyy, TEMP[0].wwww\n"
>> +   "SUB TEMP[3], CONST[0].yyyy, TEMP[1]\n"
>> +   "MUL TEMP[2].xyz, TEMP[1], TEMP[2].wwww\n"
>> +   "MUL TEMP[3].xyz, TEMP[0].wwww, TEMP[3]\n"
>> +   "ADD TEMP[0], TEMP[2], TEMP[3]\n"
>> +   "MUL TEMP[2], TEMP[0].wwww, TEMP[1].wwww\n"
>> +   "ADD TEMP[3], TEMP[0].wwww, TEMP[1].wwww\n"
>> +   "SUB TEMP[1].w, TEMP[3], TEMP[2]\n"
>> +   "MOV %s, TEMP[0]\n";
>
> Looks good.
> Ideally we'd switch all of this hand assembly to tgsi_ureg code. It'd be a lot
> more flexible and more readable than manual assembling of semi-completed
> assembly fragments.
>

Hmm. i do not know about tgsi_ureg but i can have a look on it.

>> diff --git a/src/gallium/state_trackers/vega/shaders_cache.h
>> b/src/gallium/state_trackers/vega/shaders_cache.h
>> index feca58b..5bbb724 100644
>> --- a/src/gallium/state_trackers/vega/shaders_cache.h
>> +++ b/src/gallium/state_trackers/vega/shaders_cache.h
>> @@ -48,11 +48,13 @@ enum VegaShaderType {
>>     VEGA_BLEND_SCREEN_SHADER       = 1 <<  9,
>>     VEGA_BLEND_DARKEN_SHADER       = 1 << 10,
>>     VEGA_BLEND_LIGHTEN_SHADER      = 1 << 11,
>> +   VEGA_BLEND_SUBTRACT_KHR_SHADER = 1 << 12,
>> +   VEGA_BLEND_INVERT_KHR_SHADER   = 1 << 13,
>>
>> -   VEGA_PREMULTIPLY_SHADER        = 1 << 12,
>> -   VEGA_UNPREMULTIPLY_SHADER      = 1 << 13,
>> +   VEGA_PREMULTIPLY_SHADER        = 1 << 14,
>> +   VEGA_UNPREMULTIPLY_SHADER      = 1 << 15,
>>
>> -   VEGA_BW_SHADER                 = 1 << 14
>> +   VEGA_BW_SHADER                 = 1 << 16
>>  };
>
> We'll probably also need to do something about the caching. With 20+ extra
> blend modes we'll run out of the bits in our 32bit key that we're using to
> lookup shaders in our cache right now.

Yep. i was looking on it too.

>
> z
>

i will try to maintain you in touch about the advanced blending implementation.

igor

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to