Am Donnerstag, den 03.05.2018, 19:52 +0200 schrieb Gert Wollny: > Am Donnerstag, den 03.05.2018, 13:24 -0400 schrieb Ilia Mirkin: > > > > The api call is "clear", not "glClear in the context of whatever > > random GL state there might be". When the gallium clear API is > > invoked, the bound framebuffer needs to be cleared. This is how the > > API works, this is how all drivers implement it. It's basically > > memset(). It doesn't care about rasterizer discard or anything > > else. > > > > I stand corrected and sorry for the noise. Actually no:
The OpenGL standard section 14.1 says: "When enabled, RASTERIZER_DISCARD also causes the Clear and ClearBuffer* commands to be ignored." The glClear command has the following call chain: glClear(...) = _mesa_Clear at mesa/main/clear.c:242 clear(...) at mesa/main/clear.c:221 st_Clear(...) at mesa/state_tracker/st_cb_clear.c:366 clear() takes care of validating the non-driver state changes stored in ctx->NewState, but changes to RASTERIZER_DISCARD are stored in ctx->NewDriverState and in this case this refers to the gallium state tracker and hence st_Clear should also validate the renderer state. The reason most drivers get away without this validation is that they use the blitter who also validates the render state befor doing the actual clear operation. best, Gert _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
