diff options
Diffstat (limited to 'hwc/rgz_2d.h')
-rwxr-xr-x | hwc/rgz_2d.h | 306 |
1 files changed, 0 insertions, 306 deletions
diff --git a/hwc/rgz_2d.h b/hwc/rgz_2d.h deleted file mode 100755 index de41b82..0000000 --- a/hwc/rgz_2d.h +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Copyright (C) Texas Instruments - http://www.ti.com/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef __RGZ_2D__ -#define __RGZ_2D__ - -#include <linux/bltsville.h> - -/* - * Maximum number of layers used to generate subregion rectangles in a - * horizontal region. - */ -#define RGZ_MAXLAYERS 13 - -/* - * Maximum number of layers the regionizer will accept as input. Account for an - * additional 'background layer' to generate empty subregion rectangles and - * a damage region as well. - */ -#define RGZ_INPUT_MAXLAYERS (RGZ_MAXLAYERS - 2) - -/* Number of framebuffers to track */ -#define RGZ_NUM_FB 2 - -/* - * Regionizer data - * - * This is an oqaque structure passed in by the client - */ -struct rgz; -typedef struct rgz rgz_t; - -/* - * With an open framebuffer file descriptor get the geometry of - * the device - */ -int rgz_get_screengeometry(int fd, struct bvsurfgeom *geom, int fmt); - -/* - * Regionizer input parameters - */ -struct rgz_in_hwc { - int flags; - int layerno; - hwc_layer_1_t *layers; - hwc_layer_extended_t *extlayers; - struct bvsurfgeom *dstgeom; -}; - -typedef struct rgz_in_params { - int op; /* See RGZ_IN_* */ - union { - struct rgz_in_hwc hwc; - } data; -} rgz_in_params_t; - -typedef struct rgz_ext_layer_list { - hwc_layer_extended_t layers[RGZ_INPUT_MAXLAYERS]; -} rgz_ext_layer_list_t; - -/* - * Validate whether the HWC layers can be rendered - * - * Arguments (rgz_in_params_t): - * op RGZ_IN_HWCCHK - * data.hwc.layers HWC layer array - * data.hwc.layerno HWC layer array size - * - * Returns: - * rv = RGZ_ALL, -1 failure - */ -#define RGZ_IN_HWCCHK 1 - -/* - * Regionize the HWC layers - * - * This generates region data which can be used with regionizer - * output function. This call will validate whether all or some of the - * layers can be rendered. - * - * The caller must use rgz_release when done with the region data - * - * Arguments (rgz_in_params_t): - * op RGZ_IN_HWC - * data.hwc.layers HWC layer array - * data.hwc.layerno HWC layer array size - * - * Returns: - * rv = RGZ_ALL, -1 failure - */ -#define RGZ_IN_HWC 2 - -int rgz_in(rgz_in_params_t *param, rgz_t *rgz); - -/* This means all layers can be blitted */ -#define RGZ_ALL 1 - -/* - * Free regionizer resources - */ -void rgz_release(rgz_t *rgz); - -/* - * Regionizer output operations - */ -struct rgz_out_bvcmd { - void *cmdp; - int cmdlen; - struct bvsurfgeom *dstgeom; - int noblend; - buffer_handle_t out_hndls[RGZ_INPUT_MAXLAYERS]; /* OUTPUT */ - int out_nhndls; /* OUTPUT */ - int out_blits; /* OUTPUT */ -}; - -struct rgz_out_svg { - int dispw; - int disph; - int htmlw; - int htmlh; -}; - -struct rgz_out_bvdirect { - struct bvbuffdesc *dstdesc; - struct bvsurfgeom *dstgeom; - int noblend; -}; - -typedef struct rgz_out_params { - int op; /* See RGZ_OUT_* */ - union { - struct rgz_out_bvcmd bvc; - struct rgz_out_bvdirect bv; - struct rgz_out_svg svg; - } data; -} rgz_out_params_t; - -/* - * Regionizer output commands - */ - -/* - * Output SVG from regionizer - * - * rgz_out_params_t: - * - * op RGZ_OUT_SVG - * data.svg.dispw - * data.svg.disph Display width and height these values will be the - * viewport dimensions i.e. the logical coordinate space - * rather than the physical size - * data.svg.htmlw - * data.svg.htmlh HTML output dimensions - */ -#define RGZ_OUT_SVG 0 - -/* - * This commands generates bltsville command data structures for HWC which will - * paint layer by layer - * - * rgz_out_params_t: - * - * op RGZ_OUT_BVCMD_PAINT - * data.bvc.cmdp Pointer to buffer with cmd data - * data.bvc.cmdlen length of cmdp - * data.bvc.dstgeom bltsville struct describing the destination geometry - * data.bvc.noblend Test option to disable blending - * data.bvc.out_hndls Array of buffer handles (OUTPUT) - * data.bvc.out_nhndls Number of buffer handles (OUTPUT) - * data.bvc.out_blits Number of blits (OUTPUT) - */ -#define RGZ_OUT_BVCMD_PAINT 1 - -/* - * This commands generates bltsville command data structures for HWC which will - * render via regions. This will involve a complete redraw of the screen. - * - * See RGZ_OUT_BVCMD_PAINT - */ -#define RGZ_OUT_BVCMD_REGION 2 - -/* - * Perform actual blits painting each layer from back to front - this is a test - * command - * - * rgz_out_params_t: - * - * op RGZ_OUT_BVDIRECT_PAINT - * data.bv.dstdesc bltsville struct describing the destination buffer - * data.bv.dstgeom bltsville struct describing the destination geometry - * data.bv.list List of HWC layers to blit, only HWC_OVERLAY layers - * will be rendered - * data.bv.noblend Test option to disable blending - */ -#define RGZ_OUT_BVDIRECT_PAINT 3 -/* - * Perform actual blits where each blit is a subregion - this is a test mode - */ -#define RGZ_OUT_BVDIRECT_REGION 5 - -int rgz_out(rgz_t *rgz, rgz_out_params_t* params); - -/* - * Produce instrumented logging of layer data - */ -void rgz_profile_hwc(hwc_display_contents_1_t* list, int dispw, int disph); - -/* - * ---------------------------------- - * IMPLEMENTATION DETAILS FOLLOW HERE - * ---------------------------------- - */ - -/* - * Regionizer blit data structures - */ -typedef struct blit_rect { - int left, top, right, bottom; -} blit_rect_t; - -/* - * A hregion is a horizontal area generated from the intersection of layers - * for a given composition. - * - * ---------------------------------------- - * | layer 0 | - * | xxxxxxxxxxxxxxxxxx | - * | x layer 1 x | - * | x x | - * | x xxxxxxxxxxxxxxxxxxx - * | x x layer 2 x - * | x x x - * | xxxxxxxxxx x - * | x x - * | x x - * ---------------------xxxxxxxxxxxxxxxxxxx - * - * This can be broken up into a number of horizontal regions: - * - * ---------------------------------------- - * | H1 l0 | - * |-----------xxxxxxxxxxxxxxxxxx---------| - * | H2 x x | - * | l0 x l01 x l0 | - * |-----------x--------xxxxxxxxxxxxxxxxxxx - * | H3 x x x x - * | l0 x l01 x l012 x l02 x - * |-----------xxxxxxxxxxxxxxxxxx---------x - * | H4 x x - * | l0 x l02 x - * ---------------------xxxxxxxxxxxxxxxxxxx - * - * Each hregion is just an array of rectangles. By accounting for the layers - * at different z-order, and hregion becomes a multi-dimensional array e.g. in - * the diagram above H4 has 2 sub-regions, layer 0 intersects with the first - * region and layers 0 and 2 intersect with the second region. - */ -#define RGZ_SUBREGIONMAX ((RGZ_MAXLAYERS << 1) - 1) -#define RGZ_MAX_BLITS (RGZ_SUBREGIONMAX * RGZ_SUBREGIONMAX) - -typedef struct rgz_layer { - hwc_layer_1_t hwc_layer; - uint32_t identity; - int buffidx; - int dirty_count; -} rgz_layer_t; - -typedef struct rgz_fb_state { - int rgz_layerno; - rgz_layer_t rgz_layers[RGZ_MAXLAYERS]; -} rgz_fb_state_t; - -typedef struct blit_hregion { - blit_rect_t rect; - rgz_layer_t *rgz_layers[RGZ_MAXLAYERS]; - int nlayers; - int nsubregions; - blit_rect_t blitrects[RGZ_MAXLAYERS][RGZ_SUBREGIONMAX]; /* z-order | rectangle */ -} blit_hregion_t; - -enum { RGZ_STATE_INIT = 1, RGZ_REGION_DATA = 2} ; - -struct rgz { - /* All fields here are opaque to the caller */ - blit_hregion_t *hregions; - int nhregions; - int state; - rgz_fb_state_t cur_fb_state; - int fb_state_idx; /* Target framebuffer index. Points to the fb where the blits will be applied to */ - rgz_fb_state_t fb_states[RGZ_NUM_FB]; /* Storage for previous framebuffer geometry states */ - blit_rect_t damaged_area; /* Area of the screen which will be redrawn unconditionally */ -}; - -#endif /* __RGZ_2D__ */ |