[Mesa-dev] Let's talk about -DDEBUG

Jason Ekstrand jason at jlekstrand.net
Thu Dec 13 01:24:33 UTC 2018


On Wed, Dec 12, 2018 at 6:45 PM Marek Olšák <maraeo at gmail.com> wrote:

> On Wed, Dec 12, 2018 at 7:35 PM Rob Clark <robdclark at gmail.com> wrote:
>
>> On Wed, Dec 12, 2018 at 7:14 PM Dylan Baker <dylan at pnwbakers.com> wrote:
>> >
>> > Quoting Rob Clark (2018-12-12 15:52:47)
>> > > On Wed, Dec 12, 2018 at 6:25 PM Dylan Baker <dylan at 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
>>
>
> Sounds good.
>
> Also I think we should make -Db_ndebug=true the default for release
> builds. !NDEBUG enables a lot more debugging code than just assertions.
>

Agreed.  In any driver using NIR, the assertions enabled by !NDEBUG are
very expensive.

--Jason
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181212/10fbbce1/attachment.html>


More information about the mesa-dev mailing list