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