There are still a handful of piglit tests failing and I'm yet to test that there are no regressions in the non-packed path, but I'd really like some feedback on the approach as Dave has flagged it as a possible controversial tgsi change.
In order to avoid complicated swizzling and array element adjustments when dealing with arrays, this series simply adjusts the constant buffer index to point to the right location. There are some small changes to deal with indirect indexing but these also remain very simple and easy to follow. Dave has raised concerns that others might not like this as it doesn't strictly follow the tgsi approach that everything is a vec4. I would argue however that this is by far the simplest approch. Doing this with swizzles and array adjustments is going to require something like lower_packed_varyings.cpp which would be unnecessarily complicated IMO, I started off down that track and soon changed direction. The main goal of this series is to reduce the cpu overhead cause by _mesa_propagate_uniforms_to_driver_storage(). The function is slow since we need to deal with strides etc because we are copying packed data to an unpacked destination. It's also copying data that we have only just copied to anouther duplicate uniform storage that gets created by the linker. This series fixes both of these issues and also reduces the size of the drivers const buffer as a side effect. Patches 2-3 just rework the way we use the param list. The remaining add the packing support enabled by the PackedDriverUniformStorage const. You can get the series in my test4 branch [1]. [1] https://github.com/tarceri/Mesa.git _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev