add some missing bitfield initializers

OK this one is cool.

GrGLCaps::onSurfaceSupportsWritePixels() starts off like

    bool GrGLCaps::onSurfaceSupportsWritePixels(const GrSurface* surface) const {
        if (fDisallowTexSubImageForUnormConfigTexturesEverBoundToFBO) {
            ...

Clang compiles this into

    53e5:  cmpl   $0x0,0x94(%rdi)
    53ec:  js     5435 <GrGLCaps::onSurfaceSupportsWritePixels(GrSurface const*) const+0x5d>

I think what's going on is that
fDisallowTexSubImageForUnormConfigTexturesEverBoundToFBO is the 32nd of
a bunch of neighboring bitfields, and that makes it the top bit of the 4
bytes at a 0x94 byte offset from GrGLCaps (rdi == this).  The cmpl/js
combo is reading that whole 4-byte chunk of bitfields and asking "is
this negative", a fun and I'm sure efficient way to test that bit.

Now I bet Valgrind thinks all those bits need to be initialized to
answer that question, and I also bet GCC just slapped a big 4-byte 0
down onto all these bitfields, incidentally initializing the fields we
leave uninitialized.  In any case I think it's healthy to initialize
these fields.  Shame there aren't any bitfield initializers until C++20.
Think it's too early to upgrade?

Change-Id: I767515190cf1ed08cf1d6981e550a65ccaffdec5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255419
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
1 file changed