UDI/include - add [com]buster's copy of udi_gfx.h (for comparison purposes)
authorJohn Hodge <[email protected]>
Sat, 31 Jan 2015 09:31:21 +0000 (17:31 +0800)
committerJohn Hodge <[email protected]>
Sat, 31 Jan 2015 09:31:21 +0000 (17:31 +0800)
UDI/include/udi_gfx.h.ORIG [new file with mode: 0644]

diff --git a/UDI/include/udi_gfx.h.ORIG b/UDI/include/udi_gfx.h.ORIG
new file mode 100644 (file)
index 0000000..fcaa5b7
--- /dev/null
@@ -0,0 +1,848 @@
+/**\r
+ * Summary: udi_gfx.h\r
+ * Contains the graphics metalanguage interface details\r
+ *\r
+ * Author:\r
+ *     Marcel Sondaar\r
+ *\r
+ * License:\r
+ *     <Public Domain>\r
+ *\r
+ * Origin:\r
+ *     http://www.d-rift.nl/combuster/mos3/?p=viewsource&file=/include/common/udi_gfx.h\r
+ */\r
+\r
+// note that the specification, and thus, the contents of this file is not fixed.\r
+\r
+#ifndef __UDI_GFX_H__\r
+#define __UDI_GFX_H__\r
+\r
+#include <udi.h>\r
+\r
+#ifndef UDI_GFX_VERSION\r
+#error "UDI_GFX_VERSION not defined."\r
+#elif UDI_GFX_VERSION != 0x101\r
+#error "UDI_GFX_VERSION not supported."\r
+#endif\r
+\r
+/**\r
+ * Enumeration: UDI_GFX_PROP\r
+ * Lists the various UDI properties\r
+ */\r
+\r
+// General state properties\r
+/* Constant: UDI_GFX_PROP_ENABLE\r
+ *\r
+ * Valid values:\r
+ *     0 - disabled\r
+ *     1 - enabled\r
+ *     2 - reset\r
+ *\r
+ * Ranges:\r
+ *     Must include at least 1\r
+ *\r
+ * The primary state of the connector or engine. An enabled state indicates\r
+ * it is functioning and generating live output. A disabled state is one where\r
+ * it is not contributing to any output but is otherwise functional. Finally\r
+ * the reset state is where the driver is free to deallocate all resources \r
+ * corresponding to this component and trash any state not referenced by other\r
+ * components.\r
+ *\r
+ * A disabled or reset engine forwards all data from the previous stage \r
+ * unmodified. The disabled state indicates that the component might be \r
+ * returned to its enabled state within short notice.\r
+ *\r
+ * A disabled connector will not send pixel data, but can perform other \r
+ * initialisation communication such as DDC. A reset connector will not respond\r
+ * in any fashion and can not be used for other purposes. Hardware is expected\r
+ * to be powered down in such state.\r
+ *\r
+ * Users should expect significant delays when moving components in and out of\r
+ * the reset state. Moving engines between the enabled and disabled state should\r
+ * take effect within one frame, such transition should take effect on a frame \r
+ * boundary when supported.\r
+ */\r
+#define UDI_GFX_PROP_ENABLE 0\r
+\r
+#define UDI_GFX_PROP_ENABLE_DISABLED 0\r
+#define UDI_GFX_PROP_ENABLE_ENABLED 1\r
+#define UDI_GFX_PROP_ENABLE_RESET 2\r
+/* Constant: UDI_GFX_PROP_INPUT\r
+ *\r
+ * Valid values:\r
+ *     Any valid engine ID, provided no dependency cycles are created, or -1\r
+ *\r
+ * Ranges:\r
+ *     Any non-empty set of valid values. Often hardwired.\r
+ *\r
+ * Points to the engine that is processed before this unit. In the case of a \r
+ * connector, it points to the last engine in a pipeline, and each engine points \r
+ * to the next engine in the sequence. A value of -1 indicates a source that \r
+ * only yields black pixels. Implementations must not allow cyclic structures. \r
+ * Changing this value may reallocate resources, and engines that are no longer \r
+ * referenced may lose their data (but not their state) when it is not part of \r
+ * any pipeline. If preservation is required, the ENABLE state should be used\r
+ * instead. Valid ranges includes one or more from the list of engines and -1 \r
+ * combined. In most cases, this property can not be modified.\r
+ */\r
+#define UDI_GFX_PROP_INPUT 1\r
+/* Constant: UDI_GFX_PROP_WIDTH\r
+ *\r
+ * Valid values:\r
+ *     Any non-zero positive number.\r
+ *\r
+ * Ranges:\r
+ *     Contains at least one valid value. Often only multiples of UNIT_WIDTH\r
+ *     or a power of two are allowed. May be hardwired.\r
+ *\r
+ * Contains the amount of pixels in the horizontal direction. For connectors, \r
+ * this is the amount of data pixels rendered horizontally. For engines, this \r
+ * is the width in pixels of the image. Pixels requested from an engine outside \r
+ * the range (0..width-1) are defined according to the <UDI_GFX_PROP_CLIP> \r
+ * property. In some cases, hardware may support only fixed combinations of \r
+ * width and height. In such cases, changing the width will also change the \r
+ * height to a corresponding valid number. Valid ranges include any values\r
+ * strictly above zero. For connectors, expect large continuous ranges, large\r
+ * ranges with a certain modulus, a limited number of fixed values, or a\r
+ * constant value.\r
+ */\r
+#define UDI_GFX_PROP_WIDTH 2\r
+/* Constant: UDI_GFX_PROP_HEIGHT\r
+ *\r
+ * Valid values:\r
+ *     Any non-zero positive number.\r
+ *\r
+ * Ranges:\r
+ *     Contains at least one valid value. Often only multiples of UNIT_HEIGHT\r
+ *     or a power of two are allowed. May be hardwired.\r
+ *\r
+ * Contains the amount of pixels in the vertical direction. Functions similar\r
+ * to the width property, but changing it will not alter the width property,\r
+ * and it's range at any time contains the valid range for the currently\r
+ * selected width.\r
+ */\r
+#define UDI_GFX_PROP_HEIGHT 3\r
+\r
+/* Constant: UDI_GFX_PROP_CUSTOM\r
+ * The first property index of the driver's custom range. These are not assigned\r
+ * directly assigned by the UDI specification, but may be specified in the\r
+ * operator tree.\r
+ */\r
+#define UDI_GFX_PROP_CUSTOM 1024\r
+\r
+// engine properties\r
+\r
+/* Constant: UDI_GFX_PROP_CLIP\r
+ *\r
+ * Valid values:\r
+ *     0 - points outside width x height are passed unmodified from input\r
+ *     1 - the engine's contents is tiled with size width x height\r
+ *     2 - points outside the width overflow into the y coordinate\r
+ *     3 - points outside the height overflow into the x coordinate\r
+ *\r
+ * Ranges:\r
+ *     Hardwired zero for connectors. Any non-empty subset for engines, usually\r
+ *     hardwired.\r
+ *\r
+ * For engines, contains the behaviour for pixels requested outside the width\r
+ * and height of the engine. Can be either 0 (pass from next stage), 1 (the\r
+ * coordinates are wrapped modulus the height and width), 2 (the coordinates\r
+ * overflow onto the next scanline horizontally, and wrap vertically), 3 (the\r
+ * coordinates overflow onto the next column vertically, and wrap horizontally).\r
+ * Valid ranges contain one or more of these options. For overlays and sprites,\r
+ * a value 0 is common. For framebuffers, 2 is the most common value. For\r
+ * connectors, this property is always 0 since they do not store pixel data\r
+ */\r
+#define UDI_GFX_PROP_CLIP 4\r
+\r
+/* Constant: UDI_GFX_PROP_UNIT_WIDTH\r
+ *\r
+ * Valid values:\r
+ *     Any non-zero positive value\r
+ *\r
+ * Ranges:\r
+ *     Any non-empty set of valid values. May be hardwired to 1 for\r
+ *     framebuffers, or a range of small values for hardware scaling, or any\r
+ *     larger hardwired number or set for tiling engines.\r
+ *\r
+ * Tiles are used to indicate that the hardware groups sets of pixels and have\r
+ * each group share certain properties, i.e. color or tile index, or share the\r
+ * same chroma subsample with only a different intensity. If the engine has no\r
+ * such grouping, or shares all properties over the entire contents, the value\r
+ * of this property should be 1. Some tile examples include rescaling, where a\r
+ * tile width of 2 indicates a pixel doubling in X direction, or in text mode\r
+ * where a tile width of 8 or 9 corresponds with the width of common bitmap\r
+ * fonts\r
+ */\r
+#define UDI_GFX_PROP_UNIT_WIDTH 5\r
+\r
+/* Constant: UDI_GFX_PROP_UNIT_HEIGHT\r
+ *\r
+ * Valid values:\r
+ *     Any non-zero positive value\r
+ *\r
+ * Ranges:\r
+ *     Any non-empty set of valid values. May be hardwired to 1 for\r
+ *     framebuffers, or a range of small values for hardware scaling, or any\r
+ *     larger hardwired number or set for tiling engines.\r
+ *\r
+ * See <UDI_GFX_PROP_UNIT_WIDTH>, but for the Y direction. Common values are\r
+ * 1-2 for framebuffers (doublescanning on or off), identical to the tile\r
+ * width, or mostly independent.\r
+ */\r
+#define UDI_GFX_PROP_UNIT_HEIGHT 6\r
+\r
+/* Constant: UDI_GFX_PROP_TRANSLATEX\r
+ * \r
+ * Valid values:\r
+ *     Any, signed value.\r
+ *\r
+ * Ranges:\r
+ *     Any non-empty set. Typical values are hardwired zero, continuous\r
+ *     between -WIDTH and WIDTH, -WIDTH to zero inclusive, or all possible values\r
+ *\r
+ * The horizontal offset where drawing starts. A positive value means the top-left \r
+ * corner moves towards the right end of the screen, a negative value moves the\r
+ * origin off the screen on the left side. Clipped areas moved off the screen do \r
+ * not reappear on the opposite side.\r
+ *\r
+ * With clipping enabled, this field combined with <UDI_GFX_PROP_WIDTH> \r
+ * determines the area where the image should be drawn, which is the horizontal \r
+ * range from UDI_GFX_PROP_TRANSLATEX to UDI_GFX_PROP_WIDTH + \r
+ * UDI_GFX_PROP_TRANSLATEX - 1\r
+ */\r
+#define UDI_GFX_PROP_TRANSLATEX 7\r
+\r
+/* Constant: UDI_GFX_PROP_TRANSLATEY\r
+ *\r
+ * Valid values:\r
+ *     Any signed value.\r
+ *\r
+ * Ranges:\r
+ *     Any non-empty set. Typical values are hardwired zero, continuous\r
+ *     between -WIDTH and WIDTH, or all possible values\r
+ *\r
+ * See <UDI_GFX_PROP_TRANSLATEX> but for the Y direction.\r
+ */\r
+#define UDI_GFX_PROP_TRANSLATEY 8\r
+\r
+#define UDI_GFX_PROP_GL_VERSION 14\r
+#define UDI_GFX_PROP_GLES_VERSION 15\r
+#define UDI_GFX_PROP_STATE_BLOCK 16\r
+#define UDI_GFX_PROP_COLOR_BITS 22\r
+#define UDI_GFX_PROP_GL_TARGET 23\r
+\r
+/* Constant: UDI_GFX_PROP_STOCK_FORMAT\r
+ *\r
+ * Value:\r
+ *     Zero, or any constant from <UDI_GFX_STOCK_FORMAT>\r
+ *\r
+ * Ranges:\r
+ *     Any non-empty set of valid values.\r
+ *\r
+ * This field indicates the storage format is one from a limited set of \r
+ * typical configurations. If the field is zero, the engine is not knowingly\r
+ * configured as a common framebuffer. If nonzero, the operator chain and any\r
+ * dependent settings are defined to be functionally equivalent to that of a\r
+ * typical framebuffer device.\r
+ *\r
+ * The value zero does not imply that the device does not actually follow a\r
+ * set convention. This saves drivers from writing elaborate checking code\r
+ * to determine the condition in question.\r
+ *\r
+ * Writing this field potentially modifies other property fields within the\r
+ * same engine to establish the requested configuration. Manually writing such \r
+ * properties after changing this setting may in turn revert this property to\r
+ * the zero state, even if there was no modification or the behaviour is still\r
+ * as previously advertised by this property.\r
+ */\r
+#define UDI_GFX_PROP_STOCK_FORMAT 27\r
+\r
+/* Constant: UDI_GFX_PROP_OPERATOR_COUNT\r
+ * \r
+ * Valid values:\r
+ *     Any non-zero positive number\r
+ * \r
+ * Ranges:\r
+ *     Most likely constant. Can be any set of valid values.\r
+ *\r
+ * The current value is the number of entries in the operator tree that can\r
+ * be requested for this engine using <udi_gfx_get_engine_operator_req> and\r
+ * <udi_gfx_get_engine_operator_ack>\r
+ */\r
+#define UDI_GFX_PROP_OPERATOR_COUNT 28\r
+\r
+// properties for removal:\r
+#define UDI_GFX_PROP_STORE_COUNT 24       // not generic\r
+#define UDI_GFX_PROP_STORE_WIDTH 9        // not generic\r
+#define UDI_GFX_PROP_STORE_HEIGHT 10      // not generic\r
+#define UDI_GFX_PROP_STORE_BITS 11        // not generic\r
+#define UDI_GFX_PROP_PALETTE 1024         // optional, can be derived from the operator tree\r
+#define UDI_GFX_PROP_BUFFER 1025          // optional, can be derived from the operator tree\r
+#define UDI_GFX_PROP_TILESHEET 1026       // optional, can be derived from the operator tree\r
+#define UDI_GFX_PROP_OPERATOR_INDEX 17    // deprecated for dedicated methods\r
+#define UDI_GFX_PROP_OPERATOR_OPCODE 18   // deprecated for dedicated methods\r
+#define UDI_GFX_PROP_OPERATOR_ARG_1 19    // deprecated for dedicated methods\r
+#define UDI_GFX_PROP_OPERATOR_ARG_2 20    // deprecated for dedicated methods\r
+#define UDI_GFX_PROP_OPERATOR_ARG_3 21    // deprecated for dedicated methods\r
+#define UDI_GFX_PROP_SOURCE_WIDTH 12      // should have been documented when I still knew what it did.\r
+#define UDI_GFX_PROP_SOURCE_HEIGHT 13     // should have been documented when I still knew what it did.\r
+#define UDI_GFX_PROP_INPUTX 25            // should have been documented when I still knew what it did.\r
+#define UDI_GFX_PROP_INPUTY 26            // should have been documented when I still knew what it did.\r
+\r
+// connector properties\r
+#define UDI_GFX_PROP_SIGNAL 23\r
+#define UDI_GFX_PROP_CONNECTOR_TYPE 24\r
+#define UDI_GFX_PROP_VGA_H_FRONT_PORCH 25\r
+#define UDI_GFX_PROP_VGA_H_BACK_PORCH 26\r
+#define UDI_GFX_PROP_VGA_H_SYNC 27\r
+#define UDI_GFX_PROP_VGA_V_FRONT_PORCH 28\r
+#define UDI_GFX_PROP_VGA_V_BACK_PORCH 29\r
+#define UDI_GFX_PROP_VGA_V_SYNC 30\r
+#define UDI_GFX_PROP_DOT_CLOCK 31\r
+#define UDI_GFX_PROP_VGA_H_SYNC_POL 32\r
+#define UDI_GFX_PROP_VGA_V_SYNC_POL 33\r
+\r
+/**\r
+ * Enumeration: UDI_GFX_SIGNAL\r
+ * Lists the various signal types\r
+ */\r
+#define UDI_GFX_SIGNAL_HIDDEN 0\r
+#define UDI_GFX_SIGNAL_INTEGRATED 0\r
+#define UDI_GFX_SIGNAL_RGBHV 1\r
+#define UDI_GFX_SIGNAL_RGBS 2\r
+#define UDI_GFX_SIGNAL_RGSB 3\r
+#define UDI_GFX_SIGNAL_YPBPR 4\r
+#define UDI_GFX_SIGNAL_DVID 5\r
+#define UDI_GFX_SIGNAL_YUV 6\r
+#define UDI_GFX_SIGNAL_YIQ 7\r
+#define UDI_GFX_SIGNAL_Y_UV 8\r
+#define UDI_GFX_SIGNAL_Y_IQ 9\r
+#define UDI_GFX_SIGNAL_HDMI 10\r
+#define UDI_GFX_SIGNAL_TEXT 11\r
+#define UDI_GFX_SIGNAL_CUSTOM 12\r
+\r
+/**\r
+ * Enumeration: UDI_GFX_CONNECTOR\r
+ * Lists the various external connectors\r
+ */\r
+#define UDI_GFX_CONNECTOR_HIDDEN 0\r
+#define UDI_GFX_CONNECTOR_VGA 1\r
+#define UDI_GFX_CONNECTOR_DVI 2\r
+#define UDI_GFX_CONNECTOR_SVIDEO 3\r
+#define UDI_GFX_CONNECTOR_COMPONENT 4\r
+#define UDI_GFX_CONNECTOR_HDMI 5\r
+#define UDI_GFX_CONNECTOR_RF 6\r
+#define UDI_GFX_CONNECTOR_SCART 7\r
+#define UDI_GFX_CONNECTOR_COMPOSITE 8\r
+#define UDI_GFX_CONNECTOR_MEMBUFFER 9\r
+\r
+/**\r
+ * Enumeration: UDI_GFX_OPERATOR\r
+ * Lists the display output operator\r
+ */\r
+#define UDI_GFX_OPERATOR_RGB     0 // output = (color) red(a1) + green(a2) + blue(a3) (each component is UDI_GFX_PROP_COLOR_BITS\r
+#define UDI_GFX_OPERATOR_YUV     1 // output = (color) Y(a1) + U(a2) + V(a3)\r
+#define UDI_GFX_OPERATOR_YIQ     2 // output = (color) Y(a1) + I(a2) + Q(a3)\r
+#define UDI_GFX_OPERATOR_I       3 // output = (color) intensity(a1)\r
+#define UDI_GFX_OPERATOR_ALPHA   4 // output = (color) a1 + alpha(a2)\r
+#define UDI_GFX_OPERATOR_ADD     5 // output = a1 + a2 + v3\r
+#define UDI_GFX_OPERATOR_SUB     6 // output = a1 - a2 - v3\r
+#define UDI_GFX_OPERATOR_MUL     7 // output = a1 * a2\r
+#define UDI_GFX_OPERATOR_DIV     8 // output = a1 / a2\r
+#define UDI_GFX_OPERATOR_MAD     9 // output = a1 * a2 + a3\r
+#define UDI_GFX_OPERATOR_FRC    10 // output = (a1 * a2) / a3\r
+#define UDI_GFX_OPERATOR_SHR    11 // output = a1 >> (a2 + v3)\r
+#define UDI_GFX_OPERATOR_SHL    12 // output = a1 << (a2 + v3)\r
+#define UDI_GFX_OPERATOR_ROR    13 // output = a1 >> a2 (over a3 bits)\r
+#define UDI_GFX_OPERATOR_ROL    14 // output = a1 << a2 (over a3 bits)\r
+#define UDI_GFX_OPERATOR_SAR    15 // output = a1 >> a2 (width is a3 bits, i.e. empties are filled with bit a3-1)\r
+#define UDI_GFX_OPERATOR_SAL    16 // output = a1 <<< (a2 + v3) (empties filled with bit 0)\r
+#define UDI_GFX_OPERATOR_AND    17 // output = a1 & a2\r
+#define UDI_GFX_OPERATOR_OR     18 // output = a1 | a2 | v3\r
+#define UDI_GFX_OPERATOR_NOT    19 // output = ~a1\r
+#define UDI_GFX_OPERATOR_XOR    20 // output = a1 ^ a2 ^ v3\r
+#define UDI_GFX_OPERATOR_NEG    21 // output = -a1\r
+#define UDI_GFX_OPERATOR_SEG    22 // output = (a1 >> v2) & (2**v3-1) (select v3 bits starting from bit v2)\r
+#define UDI_GFX_OPERATOR_RANGE  23 // output = (a1 > a2) ? a2 : ((a1 < a3) ? a3 : a1)\r
+#define UDI_GFX_OPERATOR_CONST  24 // output = v1\r
+#define UDI_GFX_OPERATOR_ATTR   25 // output = property[a1 + v2]\r
+#define UDI_GFX_OPERATOR_SWITCH 26 // output = output[(a1 % v3) + v2]\r
+#define UDI_GFX_OPERATOR_BUFFER 27 // output = buffer[a1][a2] (buffer is v3 bits per entry)\r
+#define UDI_GFX_OPERATOR_X      28 // output = output x pixel\r
+#define UDI_GFX_OPERATOR_Y      29 // output = output y pixel\r
+#define UDI_GFX_OPERATOR_TX     30 // output = horizontal tile index belonging to output pixel\r
+#define UDI_GFX_OPERATOR_TY     31 // output = vertical tile index belonging to output pixel\r
+#define UDI_GFX_OPERATOR_TXOFF  32 // output = horizontal offset from start of tile\r
+#define UDI_GFX_OPERATOR_TYOFF  33 // output = vertical offset from start of tile\r
+#define UDI_GFX_OPERATOR_INPUT  34 // output = input engine[x][y]   component v1\r
+#define UDI_GFX_OPERATOR_DINPUT 35 // output = input engine[a1][a2] component v3\r
+\r
+/* Enumeration: UDI_GFX_STOCK_FORMAT\r
+ * Lists stock configurations\r
+ *\r
+ * When a stock configuration is used, the device is set to behave as a \r
+ * simple framebuffer device. The <UDI_GFX_PROP_WIDTH> and <UDI_GFX_PROP_HEIGHT>\r
+ * determine the virtual size of the framebuffer, and <UDI_GFX_PROP_TRANSLATEX>\r
+ * and <UDI_GFX_PROP_TRANSLATEY> indicate the offset into that framebuffer \r
+ * that is visible (which are typically restricted to negative values)\r
+ */\r
+#define UDI_GFX_STOCK_FORMAT_UNKNOWN  0\r
+#define UDI_GFX_STOCK_FORMAT_R8G8B8X8 1\r
+#define UDI_GFX_STOCK_FORMAT_B8G8R8X8 2\r
+#define UDI_GFX_STOCK_FORMAT_R8G8B8   3\r
+#define UDI_GFX_STOCK_FORMAT_B8G8R8   4\r
+#define UDI_GFX_STOCK_FORMAT_R5G6B5   5\r
+#define UDI_GFX_STOCK_FORMAT_B5G6R5   6\r
+#define UDI_GFX_STOCK_FORMAT_R5G5B5X1 7\r
+#define UDI_GFX_STOCK_FORMAT_B5G5R5X1 8\r
+#define UDI_GFX_STOCK_FORMAT_N8 9\r
+\r
+// Enumeration: UDI_GFX_BUFFER_INFO_FLAG\r
+// Lists behavioural patterns for direct buffer accesses.\r
+//\r
+#define UDI_GFX_BUFFER_INFO_FLAG_R              0x0001  // buffer can be read\r
+#define UDI_GFX_BUFFER_INFO_FLAG_W              0x0002  // buffer can be written\r
+#define UDI_GFX_BUFFER_INFO_FLAG_BITALIGN_ENTRY 0x0004  // for non-multiple-of-eight buffer slot sizes, align on byte boundary every unit\r
+#define UDI_GFX_BUFFER_INFO_FLAG_BITALIGN_ROW   0x0008  // for non-multiple-of-eight buffer slot sizes, align only the start of the row\r
+\r
+\r
+// Constant: UDI_GFX_PROVIDER_OPS_NUM\r
+// the ops number used for the graphics driver\r
+#define UDI_GFX_PROVIDER_OPS_NUM 1\r
+\r
+// Constant: UDI_GFX_CLIENT_OPS_NUM\r
+// the ops number used for the graphics application\r
+#define UDI_GFX_CLIENT_OPS_NUM 2\r
+\r
+// Structure: udi_gfx_bind_cb_t\r
+// Contains the operations of a driver binding request\r
+typedef struct {\r
+    // Variable: gcb\r
+    // The main control block\r
+    udi_cb_t gcb;    \r
+} udi_gfx_bind_cb_t;\r
+#define UDI_GFX_BIND_CB_NUM 1\r
+\r
+// Function: udi_block_bind_req\r
+// function pointer prototype for connecting to a block device\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_block_bind_cb_t>\r
+//\r
+typedef void udi_gfx_bind_req_op_t (udi_gfx_bind_cb_t *cb );\r
+udi_gfx_bind_req_op_t udi_gfx_bind_req;\r
+\r
+// Function: udi_gfx_bind_ack\r
+// function pointer prototype for acknowledging a connection request\r
+// \r
+// in:\r
+//     cb      - A pointer to a <udi_gfx_bind_cb_t>\r
+//     sockets - The number of addressable socket components\r
+//     engines - The number of addressable engine components\r
+//     status  - The result of the bind operation\r
+//\r
+typedef void udi_gfx_bind_ack_op_t (udi_gfx_bind_cb_t *cb, udi_index_t sockets, udi_index_t engines, udi_status_t status );\r
+udi_gfx_bind_ack_op_t udi_gfx_bind_ack;\r
+\r
+// Function: udi_gfx_unbind_req\r
+// function pointer prototype for disconnecting a block device\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_block_bind_cb_t>\r
+//\r
+typedef void udi_gfx_unbind_req_op_t (udi_gfx_bind_cb_t *cb );\r
+udi_gfx_unbind_req_op_t udi_gfx_unbind_req;\r
+\r
+// Function: udi_gfx_unbind_ack\r
+// function pointer prototype for connecting to a block device\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_bind_cb_t>\r
+//\r
+typedef void udi_gfx_unbind_ack_op_t (udi_gfx_bind_cb_t *cb );\r
+udi_gfx_unbind_ack_op_t udi_gfx_unbind_ack;\r
+\r
+// Structure: udi_gfx_state_cb_t\r
+// Contains the operations of a read/write transaction\r
+typedef struct {\r
+    // Variable: gcb\r
+    // The main control block\r
+    udi_cb_t gcb;    \r
+    udi_ubit32_t subsystem;\r
+    udi_ubit32_t attribute;\r
+} udi_gfx_state_cb_t;\r
+#define UDI_GFX_STATE_CB_NUM 2\r
+\r
+// Function: udi_gfx_set_engine_req\r
+// function pointer prototype for setting an engine state\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_state_cb_t>\r
+//\r
+typedef void udi_gfx_set_engine_req_op_t (udi_gfx_state_cb_t *cb, udi_ubit32_t value);\r
+udi_gfx_set_engine_req_op_t udi_gfx_set_engine_req;\r
+\r
+// Function: udi_gfx_set_connector_req\r
+// function pointer prototype for setting an connector state\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_state_cb_t>\r
+//\r
+typedef void udi_gfx_set_connector_req_op_t (udi_gfx_state_cb_t *cb, udi_ubit32_t value);\r
+udi_gfx_set_connector_req_op_t udi_gfx_set_connector_req;\r
+\r
+// Function: udi_gfx_set_engine_ack\r
+// function pointer prototype for setting an engine state\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_state_cb_t>\r
+//\r
+typedef void udi_gfx_set_engine_ack_op_t (udi_gfx_state_cb_t *cb );\r
+udi_gfx_set_engine_ack_op_t udi_gfx_set_engine_ack;\r
+\r
+// Function: udi_gfx_set_connector_ack\r
+// function pointer prototype for setting an engine state\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_state_cb_t>\r
+//\r
+typedef void udi_gfx_set_connector_ack_op_t (udi_gfx_state_cb_t *cb );\r
+udi_gfx_set_connector_ack_op_t udi_gfx_set_connector_ack;\r
+\r
+// Function: udi_gfx_get_engine_req\r
+// function pointer prototype for setting an engine state\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_state_cb_t>\r
+//\r
+typedef void udi_gfx_get_engine_req_op_t (udi_gfx_state_cb_t *cb );\r
+udi_gfx_get_engine_req_op_t udi_gfx_get_engine_req;\r
+\r
+// Function: udi_gfx_get_connector_req\r
+// function pointer prototype for setting an connector state\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_state_cb_t>\r
+//\r
+typedef void udi_gfx_get_connector_req_op_t (udi_gfx_state_cb_t *cb );\r
+udi_gfx_get_connector_req_op_t udi_gfx_get_connector_req;\r
+\r
+// Function: udi_gfx_get_engine_ack\r
+// function pointer prototype for setting an engine state\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_state_cb_t>\r
+//\r
+typedef void udi_gfx_get_engine_ack_op_t (udi_gfx_state_cb_t *cb, udi_ubit32_t value);\r
+udi_gfx_get_engine_ack_op_t udi_gfx_get_engine_ack;\r
+\r
+// Function: udi_gfx_get_connector_ack\r
+// function pointer prototype for setting an engine state\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_state_cb_t>\r
+//\r
+typedef void udi_gfx_get_connector_ack_op_t (udi_gfx_state_cb_t *cb, udi_ubit32_t value);\r
+udi_gfx_get_connector_ack_op_t udi_gfx_get_connector_ack;\r
+\r
+// Function: udi_gfx_set_engine_nak\r
+// function pointer prototype for setting an engine state\r
+// \r
+// in:\r
+//     cb     - A pointer to a <udi_gfx_state_cb_t>\r
+//     status - An UDI status value indicative of the error\r
+//\r
+typedef void udi_gfx_set_engine_nak_op_t (udi_gfx_state_cb_t *cb, udi_status_t status);\r
+udi_gfx_set_engine_nak_op_t udi_gfx_set_engine_nak;\r
+\r
+// Function: udi_gfx_set_connector_nak\r
+// function pointer prototype for setting an engine state\r
+// \r
+// in:\r
+//     cb     - A pointer to a <udi_gfx_state_cb_t>\r
+//     status - An UDI status value indicative of the error\r
+//\r
+typedef void udi_gfx_set_connector_nak_op_t (udi_gfx_state_cb_t *cb, udi_status_t status);\r
+udi_gfx_set_connector_nak_op_t udi_gfx_get_connector_nak;\r
+\r
+// Structure: udi_gfx_range_cb_t\r
+// Contains the operations of a range request transaction\r
+typedef struct {\r
+    // Variable: gcb\r
+    // The main control block\r
+    udi_cb_t gcb;    \r
+    udi_ubit32_t subsystem;\r
+    udi_ubit32_t attribute;\r
+    udi_buf_t * rangedata;  \r
+} udi_gfx_range_cb_t;\r
+#define UDI_GFX_RANGE_CB_NUM 3\r
+\r
+// Function: udi_gfx_range_engine_req\r
+// function pointer prototype for getting an engine property range\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_range_cb_t>\r
+//\r
+typedef void udi_gfx_range_engine_req_op_t (udi_gfx_range_cb_t *cb );\r
+udi_gfx_range_engine_req_op_t udi_gfx_range_engine_req;\r
+\r
+// Function: udi_gfx_range_connector_req\r
+// function pointer prototype for getting a connector property range\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_range_cb_t>\r
+//\r
+typedef void udi_gfx_range_connector_req_op_t (udi_gfx_range_cb_t *cb );\r
+udi_gfx_range_connector_req_op_t udi_gfx_range_connector_req;\r
+\r
+// Function: udi_gfx_range_engine_ack\r
+// function pointer prototype for replying an engine property range\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_range_cb_t>\r
+//\r
+typedef void udi_gfx_range_engine_ack_op_t (udi_gfx_range_cb_t *cb );\r
+udi_gfx_range_engine_ack_op_t udi_gfx_range_engine_ack;\r
+\r
+// Function: udi_gfx_range_connector_ack\r
+// function pointer prototype for replying a connector property range\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_range_cb_t>\r
+//\r
+typedef void udi_gfx_range_connector_ack_op_t (udi_gfx_range_cb_t *cb );\r
+udi_gfx_range_connector_ack_op_t udi_gfx_range_connector_ack;\r
+\r
+// Function: udi_gfx_get_engine_operator_req\r
+// function pointer prototype for requesting the engine operator layout\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_state_cb_t>\r
+//\r
+typedef void udi_gfx_get_engine_operator_req_op_t (udi_gfx_range_cb_t *cb );\r
+udi_gfx_get_engine_operator_req_op_t udi_gfx_get_engine_operator_req;\r
+\r
+// Function: udi_gfx_get_engine_operator_ack\r
+// function pointer prototype for replying the engine operator layout\r
+// \r
+// in:\r
+//     cb   - A pointer to a <udi_gfx_state_cb_t>\r
+//     op   - The operator performed at this index\r
+//     arg1 - the first argument to this operator\r
+//     arg2 - the second argument to this operator\r
+//     arg3 - the third argument to this operator\r
+//\r
+typedef void udi_gfx_get_engine_operator_ack_op_t (udi_gfx_range_cb_t *cb, udi_ubit32_t op, udi_ubit32_t arg1, udi_ubit32_t arg2, udi_ubit32_t arg3 );\r
+udi_gfx_get_engine_operator_ack_op_t udi_gfx_get_engine_operator_ack;\r
+\r
+\r
+\r
+// Structure: udi_gfx_command_cb_t\r
+// Contains the operations of a command sequence\r
+typedef struct {\r
+    // Variable: gcb\r
+    // The main control block\r
+    udi_cb_t gcb;    \r
+    udi_buf_t * commanddata;\r
+} udi_gfx_command_cb_t;\r
+#define UDI_GFX_COMMAND_CB_NUM 4\r
+\r
+// Function: udi_gfx_connector_command_req\r
+// function pointer prototype for sending command data to the output connector\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_command_cb_t>\r
+//\r
+typedef void udi_gfx_connector_command_req_op_t (udi_gfx_command_cb_t *cb );\r
+udi_gfx_connector_command_req_op_t udi_gfx_connector_command_req;\r
+\r
+// Function: udi_gfx_engine_command_req\r
+// function pointer prototype for sending command data to the engine\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_command_cb_t>\r
+//\r
+typedef void udi_gfx_engine_command_req_op_t (udi_gfx_command_cb_t *cb );\r
+udi_gfx_engine_command_req_op_t udi_gfx_engine_command_req;\r
+\r
+// Function: udi_gfx_connector_command_ack\r
+// function pointer prototype for sending command data replies\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_command_cb_t>\r
+//\r
+typedef void udi_gfx_connector_command_ack_op_t (udi_gfx_command_cb_t *cb);\r
+udi_gfx_connector_command_ack_op_t udi_gfx_connector_command_ack;\r
+\r
+// Function: udi_gfx_engine_command_ack\r
+// function pointer prototype for sending engine data replies\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_command_cb_t>\r
+//\r
+typedef void udi_gfx_engine_command_ack_op_t (udi_gfx_command_cb_t *cb);\r
+udi_gfx_engine_command_ack_op_t udi_gfx_engine_command_ack;\r
+\r
+// Structure: udi_gfx_buffer_cb_t\r
+// Contains a description of a buffer, or area thereof\r
+typedef struct {\r
+    // Variable: gcb\r
+    // The main control block\r
+    udi_cb_t gcb;    \r
+    udi_ubit32_t buffer_index;\r
+} udi_gfx_buffer_info_cb_t;\r
+\r
+// Function: udi_gfx_buffer_info_req\r
+// function pointer prototype for getting buffer configuration information\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_command_cb_t>\r
+//\r
+typedef void udi_gfx_buffer_info_req_op_t (udi_gfx_buffer_info_cb_t *cb);\r
+udi_gfx_buffer_info_req_op_t udi_gfx_buffer_info_req;\r
+\r
+// Function: udi_gfx_buffer_info_ack\r
+// function pointer prototype for getting buffer configuration information\r
+// \r
+// in:\r
+//     cb       - A pointer to a <udi_gfx_command_cb_t>\r
+//     width    - The width of the buffer\r
+//     height   - The height of the buffer\r
+//     bitsper  - The number of bits read from the buffer per pixel unit\r
+//     flags    - A bitfield of <UDI_GFX_BUFFER_FLAGS> indicating the exposed \r
+//                capabilities of this buffer\r
+//\r
+// Note that bitsper might not be a multiple of eight.\r
+//\r
+typedef void udi_gfx_buffer_info_ack_op_t (udi_gfx_buffer_info_cb_t *cb, udi_ubit32_t width, udi_ubit32_t height, udi_ubit32_t bitsper, udi_ubit32_t flags);\r
+udi_gfx_buffer_info_ack_op_t udi_gfx_buffer_info_ack;\r
+\r
+// Structure: udi_gfx_buffer_cb_t\r
+// Contains a description of a buffer, or area thereof\r
+typedef struct {\r
+    // Variable: gcb\r
+    // The main control block\r
+    udi_cb_t gcb;    \r
+    udi_ubit32_t buffer_index;\r
+    udi_ubit32_t x;\r
+    udi_ubit32_t y;\r
+    udi_ubit32_t width;\r
+    udi_ubit32_t height;\r
+    udi_buf_t * buffer;\r
+} udi_gfx_buffer_cb_t;\r
+\r
+// Function: udi_gfx_buffer_write_req_op_t\r
+// function pointer prototype for writing raw hardware buffers\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_buffer_cb_t>\r
+//\r
+typedef void udi_gfx_buffer_write_req_op_t (udi_gfx_buffer_cb_t *cb);\r
+udi_gfx_buffer_write_req_op_t udi_gfx_buffer_write_req;\r
+\r
+// Function: udi_gfx_buffer_write_req_op_t\r
+// function pointer prototype for reading raw hardware buffers\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_buffer_cb_t>\r
+//\r
+typedef void udi_gfx_buffer_read_req_op_t (udi_gfx_buffer_cb_t *cb);\r
+udi_gfx_buffer_read_req_op_t udi_gfx_buffer_read_req;\r
+\r
+// Function: udi_gfx_buffer_write_ack_op_t\r
+// function pointer prototype for writing raw hardware buffers\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_buffer_cb_t>\r
+//\r
+typedef void udi_gfx_buffer_write_ack_op_t (udi_gfx_buffer_cb_t *cb);\r
+udi_gfx_buffer_write_ack_op_t udi_gfx_buffer_write_ack;\r
+\r
+// Function: udi_gfx_buffer_write_ack_op_t\r
+// function pointer prototype for reading raw hardware buffers\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_buffer_cb_t>\r
+//\r
+typedef void udi_gfx_buffer_read_ack_op_t (udi_gfx_buffer_cb_t *cb);\r
+udi_gfx_buffer_read_ack_op_t udi_gfx_buffer_read_ack;\r
+\r
+// Function: udi_gfx_buffer_write_nak_op_t\r
+// error handling for buffer writes\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_buffer_cb_t>\r
+//\r
+typedef void udi_gfx_buffer_write_nak_op_t (udi_gfx_buffer_cb_t *cb, udi_status_t status);\r
+udi_gfx_buffer_write_nak_op_t udi_gfx_buffer_write_nak;\r
+\r
+// Function: udi_gfx_buffer_write_nak_op_t\r
+// error handling for buffer reads\r
+// \r
+// in:\r
+//     cb - A pointer to a <udi_gfx_buffer_cb_t>\r
+//\r
+typedef void udi_gfx_buffer_read_nak_op_t (udi_gfx_buffer_cb_t *cb, udi_status_t status);\r
+udi_gfx_buffer_read_nak_op_t udi_gfx_buffer_read_nak;\r
+\r
+/* Structure: udi_gfx_provider_ops_t\r
+ * \r
+ * The graphics metalanguage entry points (provider side)\r
+ */\r
+typedef const struct {\r
+    udi_channel_event_ind_op_t          *channel_event_ind_op;\r
+    udi_gfx_bind_req_op_t               *gfx_bind_req_op;\r
+    udi_gfx_unbind_req_op_t             *gfx_unbind_req_op;\r
+    udi_gfx_set_connector_req_op_t      *gfx_set_connector_req_op;\r
+    udi_gfx_set_engine_req_op_t         *gfx_set_engine_req_op;\r
+    udi_gfx_get_connector_req_op_t      *gfx_get_connector_req_op;\r
+    udi_gfx_get_engine_req_op_t         *gfx_get_engine_req_op;\r
+    udi_gfx_range_connector_req_op_t    *gfx_range_connector_req_op;\r
+    udi_gfx_range_engine_req_op_t       *gfx_range_engine_req_op;\r
+    udi_gfx_get_engine_operator_req_op_t*gfx_get_engine_operator_req_op;\r
+    udi_gfx_connector_command_req_op_t  *gfx_connector_command_req_op;\r
+    udi_gfx_engine_command_req_op_t     *gfx_engine_command_req_op;\r
+    udi_gfx_buffer_info_req_op_t        *gfx_buffer_info_req_op;\r
+    udi_gfx_buffer_read_req_op_t        *gfx_buffer_read_req_op;\r
+    udi_gfx_buffer_write_req_op_t       *gfx_buffer_write_req_op;\r
+} udi_gfx_provider_ops_t;\r
+\r
+/* Structure: udi_gfx_client_ops_t\r
+ *\r
+ * The graphics metalanguage entry points (client side)\r
+ */\r
+typedef const struct {\r
+    udi_channel_event_ind_op_t          *channel_event_ind_op;\r
+    udi_gfx_bind_ack_op_t               *gfx_bind_ack_op;\r
+    udi_gfx_unbind_ack_op_t             *gfx_unbind_ack_op;\r
+    udi_gfx_set_connector_ack_op_t      *gfx_set_connector_ack_op;\r
+    udi_gfx_set_engine_ack_op_t         *gfx_set_engine_ack_op;\r
+    udi_gfx_set_connector_nak_op_t      *gfx_set_connector_nak_op;\r
+    udi_gfx_set_engine_nak_op_t         *gfx_set_engine_nak_op;\r
+    udi_gfx_get_connector_ack_op_t      *gfx_get_connector_ack_op;\r
+    udi_gfx_get_engine_ack_op_t         *gfx_get_engine_ack_op;\r
+    udi_gfx_range_connector_ack_op_t    *gfx_range_connector_ack_op;\r
+    udi_gfx_range_engine_ack_op_t       *gfx_range_engine_ack_op;\r
+    udi_gfx_get_engine_operator_req_op_t*gfx_get_engine_operator_ack_op;\r
+    udi_gfx_connector_command_ack_op_t  *gfx_connector_command_ack_op;\r
+    udi_gfx_engine_command_ack_op_t     *gfx_engine_command_ack_op;\r
+    udi_gfx_buffer_info_ack_op_t        *gfx_buffer_info_ack_op;\r
+    udi_gfx_buffer_read_ack_op_t        *gfx_buffer_read_ack_op;\r
+    udi_gfx_buffer_write_ack_op_t       *gfx_buffer_write_ack_op;\r
+    udi_gfx_buffer_read_nak_op_t        *gfx_buffer_read_nak_op;\r
+    udi_gfx_buffer_write_nak_op_t       *gfx_buffer_write_nak_op;\r
+} udi_gfx_client_ops_t;\r
+\r
+\r
+// temporary\r
+#ifndef UDI_ANNOY_ME\r
+void EngineReturnSimpleRange (int source, int index, int prop, int first, int last, int modulus);\r
+void ConnectorReturnSimpleRange (int source, int index, int prop, int first, int last, int modulus);\r
+void EngineReturnConstantRange (int source, int index, int prop, int value);\r
+void ConnectorReturnConstantRange (int source, int index, int prop, int value);\r
+void EngineReturnBooleanRange (int source, int index, int prop, int value1, int value2);\r
+void ConnectorReturnBooleanRange (int source, int index, int prop, int value1, int value2);\r
+#endif\r
+\r
+#endif\r

UCC git Repository :: git.ucc.asn.au