[Mesa-dev] [PATCH 5/7] i965: use _mesa_geometry_width/height/layers/samples for programming geometry of framebuffer to GEN
Rogovin, Kevin
kevin.rogovin at intel.com
Tue Apr 28 00:28:17 PDT 2015
Hi,
>A couple of us chatted about this, and we all agreed that it's probably not useful to
>enable ARB_framebuffer_no_attachments on pre-Gen7. We don't expose atomics, SSBOs,
> or image load/store on those platforms (and probably won't), so the
> only way fragment shaders can output any data is via framebuffer writes.
> So I'd be inclined to just not touch the pre-Gen7 code at all.
There are a number of issues lurking.
Firstly, there are atoms from Gen4 (for example brw_drawing_rect)
which are used all the way to Gen8. Therefore, Gen4 code must be
changed. At this point then one can advocate to only change those
atoms that are active in Gen7 and Gen8. If that is done, then there
is an style inconsistency where some atoms , for Gen4,5 and 6 use
the new functions and some do not. That is just icky in my opinion,
as it leads to the awkward question "why? is there something
delicate here?" Compounding the style issue is that the code
should -convey- what it being done to the reader what is going on.
Using the functions makes the convey more trivial for the reader
to know.
Secondly, not using those functions for Gen4,5 and 6 leaves the code
with a trap for later. Namely that trap if someone says "you know
although the extension is silly for Gens 4,5 and 6, it still is trivial to
enable". I hate leaving traps behind for others.
Thirdly, there is the real meat of reviewing patch 6: a good review
of that patch will make sure that any remaining references to
gl_framebuffer::Width, Height, and so on are correct (i.e. the code
requires the dimension of the backing store and not the geometry).
That checking is made easier, more mechanical if -all- of i965 is made
consistent in this fashion, for otherwise the checker has more to check
(i.e. instead of is this for setting rasterizer it is setting rasterizer and
active for Gen7 and 8).
When I was making these changes to i965 I was also tempted
to add a functions of the sort "_mesa_buffer_width", that
returned gl_fraembufffer::Width regardless of the value
of gl_framebuffer::_HasAttachments. The reason why I was
tempted was to help (via lovely grep) to make patch 6 and
the reviewing of it more mechanical and easier. but I chose
not to since the meaning of the fields from gl_framebuffer
became the exact meaning of those fields. That third
reason is the one reason that patch 6 should make people
itch (in my opinion): "where all references hit?" Checking
that require more than just checking the diff, that requires
knowing all the references to gl_framebuffer::Width and
friends, knowing the use there and then checking if the
patch does or DOES NOT change that code block
appropriately.
-Kevin
More information about the mesa-dev
mailing list