Quoting Rob Clark (2018-12-12 16:35:24)
> On Wed, Dec 12, 2018 at 7:14 PM Dylan Baker <dy...@pnwbakers.com> wrote:
> >
> > Quoting Rob Clark (2018-12-12 15:52:47)
> > > On Wed, Dec 12, 2018 at 6:25 PM Dylan Baker <dy...@pnwbakers.com> wrote:
> > > >
> > > > In the autotools discussion I've come to realize that we also need to 
> > > > talk about
> > > > the -DDEBUG guard. It seems that there are two different uses, and thus 
> > > > two
> > > > different asks about it:
> > > >
> > > > - Nine (and RadeonSI?) use -DDEBUG to hide generic debugging
> > > > - NIR and Intel (at least) use -DDEBUG to hide really expensive checks 
> > > > that are
> > > >   useful, but necessarily tank performance.
> > > >
> > > > The first group would like -DDEBUG in debugoptimized builds, the second
> > > > obviously doesn't.
> > > >
> > > > Is the right solution to move the first group being !NDEBUG, or would 
> > > > it be
> > > > better to split DEBUG into two different defines such as DEBUG_MESSAGES 
> > > > and
> > > > EXPENSIVE_VALIDATION (paint the bikeshed whatever color you like), with 
> > > > the
> > > > first for both debug and debugoptimized and the second only in debug 
> > > > builds?
> > >
> > > I guess my use cases for !=release builds are:
> > >
> > > + I want all the expensive checking because I'm not in it to win the
> > >   deqp/piglit fps race
> > > + I want debug syms for profiling and/or valgrind, but otherwise
> > >   want something close to a release build but with debug syms
> > >
> > >
> > > That said, I can get behind replacing DEBUG with !NDEBUG or
> > > EXPENSIVE_DEBUG or whatever permutation of that color folks prefer
> > >
> > >
> > > BR,
> > > -R
> >
> > I guess I should have covered that:
> >
> > autotools had effectively two build types "debug" and "not debug", "debug" 
> > set
> > "-DDEBUG -g -O2", "not debug" set -DNDEBUG
> >
> > Meson has 4 build types, and a separate toggle for NDEBUG:
> > debug: -O0 -DDEBUG (we add -DDEBUG)
> > debugoptimzed: -O2 -g
> > release: -O2
> > plain: (nothing)
> 
> I generally view meson as an upgrade in this respect, I guess mostly
> because I have no use for '-DDEBUG -g -O2' (ie. the -O0 equiv is fine
> by me).. maybe making meson debug config use -O2 would bridge the gap?
>  If so I have no problem with dropping -O0 and making debug config
> also use -O2
> 
> BR.
> -R

Unfortunately buildtypes are part of meson itself, you can't override them. It
does this to ensure that each buildtype is equivalent when changing compiler,
ie, MSVC doesn't have -O0 and -O2, but it does have equivalent commands options.

Basically our choices (as I see them are):

1. Status Quo
2. Split DEBUG into two flags, one that is only in debug builds, one that is in
   both debug and debugoptimized builds
3. Stop defining DEBUG by default in any build type and tell people to add
   -Dc_args=-DDEBUG -Dcpp_args=-DDEBUG if they want DEBUG.

Dylan

Attachment: signature.asc
Description: signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to