summaryrefslogtreecommitdiff
path: root/src/ipa/ipa-sign.sh
AgeCommit message (Collapse)Author
2020-04-14libcamera: Add IPA module signing infrastructureLaurent Pinchart
Add infrastructure to generate an RSA private key and sign IPA modules. The signatures are stored in separate files with a .sign suffix. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
a id='n7' href='#n7'>7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
/* SPDX-License-Identifier: BSD-2-Clause */
/*
From http://jgt.akpeters.com/papers/McGuire08/

Efficient, High-Quality Bayer Demosaic Filtering on GPUs

Morgan McGuire

This paper appears in issue Volume 13, Number 4.
---------------------------------------------------------
Copyright (c) 2008, Morgan McGuire. All rights reserved.

Modified by Linaro Ltd to integrate it into libcamera.
Copyright (C) 2021, Linaro
*/

//Vertex Shader

attribute vec4 vertexIn;
attribute vec2 textureIn;

uniform vec2 tex_size;	/* The texture size in pixels */
uniform vec2 tex_step;

/** Pixel position of the first red pixel in the */
/**  Bayer pattern.  [{0,1}, {0, 1}]*/
uniform vec2            tex_bayer_first_red;

/** .xy = Pixel being sampled in the fragment shader on the range [0, 1]
    .zw = ...on the range [0, sourceSize], offset by firstRed */
varying vec4            center;

/** center.x + (-2/w, -1/w, 1/w, 2/w); These are the x-positions */
/** of the adjacent pixels.*/
varying vec4            xCoord;

/** center.y + (-2/h, -1/h, 1/h, 2/h); These are the y-positions */
/** of the adjacent pixels.*/
varying vec4            yCoord;

void main(void) {
    center.xy = textureIn;
    center.zw = textureIn * tex_size + tex_bayer_first_red;

    xCoord = center.x + vec4(-2.0 * tex_step.x,
                             -tex_step.x, tex_step.x, 2.0 * tex_step.x);
    yCoord = center.y + vec4(-2.0 * tex_step.y,
                              -tex_step.y, tex_step.y, 2.0 * tex_step.y);

    gl_Position = vertexIn;
}