linux/drivers/gpu/drm/qxl/qxl_dev.h

/*
   Copyright (C) 2009 Red Hat, Inc.

   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are
   met:

       * Redistributions of source code must retain the above copyright
	 notice, this list of conditions and the following disclaimer.
       * Redistributions in binary form must reproduce the above copyright
	 notice, this list of conditions and the following disclaimer in
	 the documentation and/or other materials provided with the
	 distribution.
       * Neither the name of the copyright holder nor the names of its
	 contributors may be used to endorse or promote products derived
	 from this software without specific prior written permission.

   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
   IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
   PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#ifndef H_QXL_DEV
#define H_QXL_DEV

#include <linux/types.h>

/*
 * from spice-protocol
 * Release 0.10.0
 */

/* enums.h */

enum SpiceImageType {};

enum SpiceBitmapFmt {};

enum SpiceSurfaceFmt {};

enum SpiceClipType {};

enum SpiceRopd {};

enum SpiceBrushType {};

enum SpiceCursorType {};

/* qxl_dev.h */

#pragma pack(push, 1)

/* 0x100-0x11f reserved for spice, 0x1ff used for unstable work */
#define QXL_DEVICE_ID_STABLE

enum {};

#define QXL_DEVICE_ID_DEVEL
#define QXL_REVISION_DEVEL

#define QXL_ROM_MAGIC
#define QXL_RAM_MAGIC

enum {};

/* qxl-1 compat: append only */
enum {};

QXLPHYSICAL;
QXLFIXED; /* fixed 28.4 */

struct qxl_point_fix {};

struct qxl_point {};

struct qxl_point_1_6 {};

struct qxl_rect {};

struct qxl_urect {};

/* qxl-1 compat: append only */
struct qxl_rom {};

/* qxl-1 compat: fixed */
struct qxl_mode {};

/* qxl-1 compat: fixed */
struct qxl_modes {};

/* qxl-1 compat: append only */
enum qxl_cmd_type {};

/* qxl-1 compat: fixed */
struct qxl_command {};

#define QXL_COMMAND_FLAG_COMPAT
#define QXL_COMMAND_FLAG_COMPAT_16BPP

struct qxl_command_ext {};

struct qxl_mem_slot {};

#define QXL_SURF_TYPE_PRIMARY

#define QXL_SURF_FLAG_KEEP_DATA

struct qxl_surface_create {};

#define QXL_COMMAND_RING_SIZE
#define QXL_CURSOR_RING_SIZE
#define QXL_RELEASE_RING_SIZE

#define QXL_LOG_BUF_SIZE

#define QXL_INTERRUPT_DISPLAY
#define QXL_INTERRUPT_CURSOR
#define QXL_INTERRUPT_IO_CMD
#define QXL_INTERRUPT_ERROR
#define QXL_INTERRUPT_CLIENT
#define QXL_INTERRUPT_CLIENT_MONITORS_CONFIG

struct qxl_ring_header {};

/* qxl-1 compat: append only */
struct qxl_ram_header {};

qxl_release_info;

struct qxl_release_info_ext {};

struct qxl_data_chunk {};

struct qxl_message {};

struct qxl_compat_update_cmd {};

struct qxl_update_cmd {};

struct qxl_cursor_header {};

struct qxl_cursor {};

enum {};

#define QXL_CURSOR_DEVICE_DATA_SIZE

struct qxl_cursor_cmd {};

enum {};

struct qxl_raster_glyph {};

struct qxl_string {};

struct qxl_copy_bits {};

enum qxl_effect_type {};

struct qxl_pattern {};

struct qxl_brush {};

struct qxl_q_mask {};

struct qxl_fill {};

struct qxl_opaque {};

struct qxl_copy {};

struct qxl_transparent {};

struct qxl_alpha_blend {};

struct qxl_compat_alpha_blend {};

struct qxl_rop_3 {};

struct qxl_line_attr {};

struct qxl_stroke {};

struct qxl_text {};

struct qxl_mask {};

struct qxl_clip {};

enum qxl_operator {};

struct qxl_transform {};

/* The flags field has the following bit fields:
 *
 *     operator:		[  0 -  7 ]
 *     src_filter:		[  8 - 10 ]
 *     mask_filter:		[ 11 - 13 ]
 *     src_repeat:		[ 14 - 15 ]
 *     mask_repeat:		[ 16 - 17 ]
 *     component_alpha:		[ 18 - 18 ]
 *     reserved:		[ 19 - 31 ]
 *
 * The repeat and filter values are those of pixman:
 *		REPEAT_NONE =		0
 *              REPEAT_NORMAL =		1
 *		REPEAT_PAD =		2
 *		REPEAT_REFLECT =	3
 *
 * The filter values are:
 *		FILTER_NEAREST =	0
 *		FILTER_BILINEAR	=	1
 */
struct qxl_composite {};

struct qxl_compat_drawable {};

struct qxl_drawable {};

enum qxl_surface_cmd_type {};

struct qxl_surface {};

struct qxl_surface_cmd {};

struct qxl_clip_rects {};

enum {};

struct qxl_path_seg {};

struct qxl_path {};

enum {};

struct qxl_image_id {};

qxl_image_id_union;

enum qxl_image_flags {};

enum qxl_bitmap_flags {};

#define QXL_SET_IMAGE_ID(image, _group, _unique)

struct qxl_image_descriptor {};

struct qxl_palette {};

struct qxl_bitmap {};

struct qxl_surface_id {};

struct qxl_encoder_data {};

struct qxl_image {};

/* A QXLHead is a single monitor output backed by a QXLSurface.
 * x and y offsets are unsigned since they are used in relation to
 * the given surface, not the same as the x, y coordinates in the guest
 * screen reference frame. */
struct qxl_head {};

struct qxl_monitors_config {};

#pragma pack(pop)

#endif /* _H_QXL_DEV */