ART feature requests and discussion

With AMD Ryzen some optimizations used in older Intel architectures are invalid or somewhat unnecessary, but it is possible to optimize for both (https://community.amd.com/thread/213573) and this does not necessarily mean that Skylake objects wont run ok on Ryzen. Forward compatibility across the vendors is not guaranteed.

1 Like

The new brush masks work very well. The software really has a complete set of genuinely useful features now…

@europlatus I make skylake builds because it is the architecture of my PC. You can try it and see if it works on a Zen architecture. It will surely not be optimised for it.

I can build for following micro architectures (-march=xxx):

nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 native

I suppose znver1 or znver2 are the target architecture for ryzen chips. I don’t know which to use so, hereunder the list of flags raised by the two architecture options:

-march=znver1

-m128bit-long-double [enabled]
-m64 [enabled]
-m80387 [enabled]
-mabm [enabled]
-maccumulate-outgoing-args [enabled]
-madx [enabled]
-maes [enabled]
-malign-double [enabled]
-malign-stringops [enabled]
-mavx [enabled]
-mavx2 [enabled]
-mavx256-split-unaligned-store [enabled]
-mbmi [enabled]
-mbmi2 [enabled]
-mclflushopt [enabled]
-mclzero [enabled]
-mcx16 [enabled]
-mf16c [enabled]
-mfancy-math-387 [enabled]
-mfentry [enabled]
-mfma [enabled]
-mfp-ret-in-387 [enabled]
-mfsgsbase [enabled]
-mfxsr [enabled]
-mhard-float [enabled]
-mieee-fp [enabled]
-mlong-double-80 [enabled]
-mlzcnt [enabled]
-mmmx [enabled]
-mmovbe [enabled]
-mms-bitfields [enabled]
-mmwaitx [enabled]
-mpclmul [enabled]
-mpe-aligned-commons [enabled]
-mpopcnt [enabled]
-mprfchw [enabled]
-mpush-args [enabled]
-mrdrnd [enabled]
-mrdseed [enabled]
-mred-zone [enabled]
-msahf [enabled]
-msha [enabled]
-msse [enabled]
-msse2 [enabled]
-msse3 [enabled]
-msse4 [enabled]
-msse4.1 [enabled]
-msse4.2 [enabled]
-msse4a [enabled]
-mssse3 [enabled]
-mstack-arg-probe [enabled]
-mstackrealign [enabled]
-mvzeroupper [enabled]
-mxsave [enabled]
-mxsavec [enabled]
-mxsaveopt [enabled]
-mxsaves [enabled]

-march=znver2

-m128bit-long-double [enabled]
-m64 [enabled]
-m80387 [enabled]
-mabm [enabled]
-maccumulate-outgoing-args [enabled]
-madx [enabled]
-maes [enabled]
-malign-double [enabled]
-malign-stringops [enabled]
-mavx [enabled]
-mavx2 [enabled]
-mbmi [enabled]
-mbmi2 [enabled]
-mclflushopt [enabled]
-mclwb [enabled]
-mclzero [enabled]
-mcx16 [enabled]
-mf16c [enabled]
-mfancy-math-387 [enabled]
-mfentry [enabled]
-mfma [enabled]
-mfp-ret-in-387 [enabled]
-mfsgsbase [enabled]
-mfxsr [enabled]
-mhard-float [enabled]
-mieee-fp [enabled]
-mlong-double-80 [enabled]
-mlzcnt [enabled]
-mmmx [enabled]
-mmovbe [enabled]
-mms-bitfields [enabled]
-mmwaitx [enabled]
-mpclmul [enabled]
-mpe-aligned-commons [enabled]
-mpopcnt [enabled]
-mprfchw [enabled]
-mpush-args [enabled]
-mrdpid [enabled]
-mrdrnd [enabled]
-mrdseed [enabled]
-mred-zone [enabled]
-msahf [enabled]
-msha [enabled]
-msse [enabled]
-msse2 [enabled]
-msse3 [enabled]
-msse4 [enabled]
-msse4.1 [enabled]
-msse4.2 [enabled]
-msse4a [enabled]
-mssse3 [enabled]
-mstack-arg-probe [enabled]
-mstackrealign [enabled]
-mvzeroupper [enabled]
-mwbnoinvd [enabled]
-mxsave [enabled]
-mxsavec [enabled]
-mxsaveopt [enabled]
-mxsaves [enabled]

Edit: You can find a build optimised for ZEN (AMD) micro architecture -march=znver2
ART_drawn-masks_1.1-13-gaa928b087_W64_Zenver2_200219.7z
uploaded at
https://keybase.pub/gaaned92/ART-W64NightlyBuilds

1 Like

Yes it already fully fonctionnal and run great. 0% of bugs, 100% of satisfaction!! :innocent: You are a genius! I love ART :heart_eyes:

honestly, I leveraged on a lot of great work done by the RT devs (@Hombre in particular), who built an infrastructure that made the brush implementation very easy – kudos!

BTW, here’s a quick demo on how to use the brush mask for dodge/burn retouching:

8 Likes

AUR git package for latest builds from master branch is updated as well.

Thanks again to you and the RT team for your work! :+1:

Here are some of my observations on how the various masks interact. I am trying to help but if it’s an annoyance, feel free to ignore!

With a rectangular area mask and the brush selected ‘paint on top of other masks’ to draw an X, the darkening effect is the same throughout the brush and the area masks, and nothing is different where they intersect:

However in the second example, I have darkened the building and some of the sky using a delta E mask, then drawn a cross through it using a brush in ‘paint on top of mask’ mode. Here, where they intersect, the darkening effect is much stronger - look at the building:

Is this behaviour by design, or it part of a work in progress…
This is just an observation, not a complaint!

Have uploaded the raw and arp file.
Coventry city centre 8.RW2 (14.8 MB) Coventry city centre 8.RW2.arp (134.1 KB)

I haven’t looked into this. Got a headache. :expressionless: Questions: Are your settings the same between tools? If so, then they definitely are behaving differently. Would the overlapping part have a higher opacity?

If you want to get that you need to add a new shape

@afre I think you may have answered it. Brushes and area masks are both 100% opacity whereas a delta E mask will be less than 100%. When you add a brush stroke it changes the opacity to 100 % wherever you brush so it looks like it is having a stronger effect at the intersection.
PS hope your headache improves…

1 Like

@carafife Thanks for your help, I think you may have slightly misunderstood the question, see above.
Sorry if it wasn’t clear…

no no you were clear but the translation from my french much less! :sourire: I just wanted to tell you that we can make intersections on shapes and then play on the opacity of the masks if desired. In your case with a deltaE mask it is normal that you get differences in opacity. It is I who, by adding this remark, has sowed an unnecessary doubt :rofl:

No problems as long as we are happy and perhaps slightly wiser…

1 Like

@agriggio,
you implemented the possibility to name the masks !!!
wouahaou !!!
thanks a lot for that !!! it simplifies a lot the masks management !!!

you’re a genius !!!

you’re welcome, but I think you are overreacting a little bit :wink:

1 Like

maybe just a little bit… but it’s really very useful !

but when are you sleep! ?? :stuck_out_tongue_winking_eye:

1 Like

I know you are joking, but let me try to give a somewhat serious answer… by far the hardest and most time-consuming activity in coding is thinking about what you have to do (the requirements) and how you are going to do it (the overall architecture of your solution). Both these activities do not require a computer at all, and can be performed everywhere, at any time (e.g. in the bus while going to work, during lunch/coffee break, while taking a shower or going to the gym, when watching tv, and even while playing with your kid…). Once you have a clear idea of what and how, translating this into code is relatively straightforward, and with a bit of experience you can get it almost* correct almost* at the first try…

* IMPORANT DISCLAIMER: there are many applications for which these “almost” make a world of difference, and render the task much, much harder: obviously security- and safety-critical applications, but also data structures and algorithm design, concurrency, networking, theorem proving, scientific computation… you name it. Fortunately, tinkering with ART is very far from all this :slight_smile:

5 Likes

In any case, the most incredible thing about your work is the “spirit” of your approach. Everything you code becomes as simple and intuitive as when you use it, you feel like you have created it yourself, so natural. It is a rare talent and your French fan club continues to grow! :heart_eyes:

2 Likes

Not only his French fan club… :upside_down_face: