• He Junyan's avatar
    Add the feature of generating linear gradient picture by using shader. · 1026327c
    He Junyan authored
     Add the feature of generating linear gradient picture
     by using shader.  This logic will replace the original
     linear gradient picture generating manner in glamor
     which firstly use pixman and then upload it to GPU.
     Compare it to the result generated by pixman, the
     difference of each color component of each pixel is
     normally 0, sometimes 1/255, and 2/255 at most. The
     pixman use fixed-point but shader use float-point, so may have
     difference. The feature of transform matrix and 4 types
     of repeat modes have been supported. The array usage in
     shader seems slow, so use 8 uniform variables to avoid
     using array when stops number is not very big. This
     make code look verbose but the performance improved a
     lot.
    
     We still have slightly performance regression compare to
     original pixman version. There are one further optimization
     opportunity which is to merge the gradient pixmap generation
     and the latter compositing into one shader, then we don't need
     to generate the extra texture, we can use the gradient value
     directly at the compositing shader. Hope that can beat pixman
     version. Will do that latter.
    Reviewed-by: Chris Wilson's avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarZhigang Gong <zhigang.gong@linux.intel.com>
    Signed-off-by: default avatarZhigang Gong <zhigang.gong@linux.intel.com>
    1026327c
glamor_render.c 86.1 KB