This removes references to symbols in draw module for OpenGL ES build.
As OpenGL ES does not support feedback/selection mode, draw module is
used in pathes that will never be reached. However, if the symbols are
referenced, it will bloat the final shared libraries unnecessarily.
This is serious when LLVM is enabled.
With the omit list gone, there are not too many differences in building
core mesa and ES overlay. Remove the mesa/es and build both of them in
src/mesa/Makefile.
This allows atifragshader.h to be used without knowing if
FEATURE_ATI_fragment_shader is enabled. As a result, atifragshader.c is
removed from the omit list in ES overlay.
Remove sources that are feature-aware from the omit list. x86 -O0 build
is ~12KiB smaller afther making those sources feature-aware.
Also, remove get.c from the omit list as get_es[12].c have been merged
to it.
Make st_cb_feedback.h FEATURE_feedback aware and st_cb_rastpos.h
FEATURE_rastpos aware. Move creation of selection/feedback draw context
to st_init_draw.
This allows transformfeedback.h and st_cb_xformfb.h to be included and
used without knowing if FEATURE_EXT_transform_feedback is enabled. Fix
build of ES overlay.
We were allocating too much memory for linear layouts. The block_size
factor is already included in the row_stride and should not be used in
the img_stride calculation. This is typically a 4x savings!
If debug build, keep a linked list of all allocated resources (textures).
The llvmipe_print_resources() function can be called from a debugger to
print a list of all resources, their sizes, total size, etc.
When we have DRI2 protocol at least 2.3, we get an event from the
server when the back buffers get invalidated. When that's the case
let the driver know that it can rely on invalidate instead of the
glViewport polling.
The presence of this extension indicates to the DRI driver that the
loader will call invalidate in the __DRI2_FLUSH extension, whenever
the needs to query for new buffers. This means that the DRI driver
can drop the polling in glViewport().
Now that transfers are context operations it is the driver's
responsibility to ensure that transfers happen in order with all other
context operations, so flushes and finishes inside Mesa should be no
longer necessary. The attached patch implements that.
This should proportionate significant improvements for hardware drivers
which are able to stream transfers in the command buffers.
You can use the softpipe/llvmpipe_flush_resource() as reference
implementation of the worst case scenario, where the driver is not able
to streamline transfers. But the expectation is that driver
implementators will want to avoid flushing as much as possible.