On some drivers, location might be same as index, but on some, it's different. This commit iterates through all given uniforms to find the correspond uniforms with given name, than store and get the type, to determine whenether to use glUniformMatrix4fv or glUniform4fv
* gxm: Add more SceGxmProgram fields and SceGxmProgramParameterContainer
* shaders: Use ATTR offset provided by parameter and container
* shader: Make each writeable SA 4 bytes
Align each pa variable to pa0_temp, pa4_temp and make all of them a vec4
* shaders: Check for null container
Simply use the absolute offset if container not available
* shader: Add offset with size of 1 element after generate 1 array element
* shader: Check if two registers has the same component count as dest
The optimization requires that the dest component count must also equal to original register component count
* shader: Support array type
* render/uniforms: Remove unroll
* shader: Handle properly creating new writeable PA and correct the constant hack
* shader: Implement VMIN, VMAX, VF16MIN, VF16MAX
* shader: Fix some warnings
* renderer/uniform: Pass uniform data as matrix if the uniform type is matrix
* shader: Support for reading/writing non-referenced SAs on parameter lists
There are total 128 registers, sometimes shader will use some of them for temporary usage or read from it. Some of those registers are not reference from parameter lists
* shader: Correct SA supply index
* module: Implement vargs and printf functions
- Source code of printf is here: https://github.com/mpaland/printf, modify for vita3k usage
* [module] Pass layout state as argument rather than tuple
* module: Get rid of state array and don't continue layout if meet varargs
* module/test: Readjust test as requests and add test for vargs
* module: Remove unneccesary thin function is_arg_vargs
* module: Add newline