1*61046927SAndroid Build Coastguard Worker/********************************************************** 2*61046927SAndroid Build Coastguard Worker * Copyright 2009-2011 VMware, Inc. All rights reserved. 3*61046927SAndroid Build Coastguard Worker * 4*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person 5*61046927SAndroid Build Coastguard Worker * obtaining a copy of this software and associated documentation 6*61046927SAndroid Build Coastguard Worker * files (the "Software"), to deal in the Software without 7*61046927SAndroid Build Coastguard Worker * restriction, including without limitation the rights to use, copy, 8*61046927SAndroid Build Coastguard Worker * modify, merge, publish, distribute, sublicense, and/or sell copies 9*61046927SAndroid Build Coastguard Worker * of the Software, and to permit persons to whom the Software is 10*61046927SAndroid Build Coastguard Worker * furnished to do so, subject to the following conditions: 11*61046927SAndroid Build Coastguard Worker * 12*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be 13*61046927SAndroid Build Coastguard Worker * included in all copies or substantial portions of the Software. 14*61046927SAndroid Build Coastguard Worker * 15*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16*61046927SAndroid Build Coastguard Worker * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17*61046927SAndroid Build Coastguard Worker * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18*61046927SAndroid Build Coastguard Worker * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 19*61046927SAndroid Build Coastguard Worker * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20*61046927SAndroid Build Coastguard Worker * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21*61046927SAndroid Build Coastguard Worker * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22*61046927SAndroid Build Coastguard Worker * SOFTWARE. 23*61046927SAndroid Build Coastguard Worker * 24*61046927SAndroid Build Coastguard Worker ********************************************************* 25*61046927SAndroid Build Coastguard Worker * Authors: 26*61046927SAndroid Build Coastguard Worker * Zack Rusin <zackr-at-vmware-dot-com> 27*61046927SAndroid Build Coastguard Worker * Thomas Hellstrom <thellstrom-at-vmware-dot-com> 28*61046927SAndroid Build Coastguard Worker */ 29*61046927SAndroid Build Coastguard Worker 30*61046927SAndroid Build Coastguard WorkerThe XA gallium frontend is intended as a versioned interface to gallium for 31*61046927SAndroid Build Coastguard Workerxorg driver writers. Initially it's mostly based on Zack Rusin's 32*61046927SAndroid Build Coastguard Workercomposite / video work for the Xorg gallium frontend. 33*61046927SAndroid Build Coastguard Worker 34*61046927SAndroid Build Coastguard WorkerThe motivation behind this gallium frontend is that the Xorg gallium frontend has 35*61046927SAndroid Build Coastguard Workera number of interfaces to work with: 36*61046927SAndroid Build Coastguard Worker 37*61046927SAndroid Build Coastguard Worker1) The Xorg sdk (versioned) 38*61046927SAndroid Build Coastguard Worker2) Gallium3D (not versioned) 39*61046927SAndroid Build Coastguard Worker3) KMS modesetting (versioned) 40*61046927SAndroid Build Coastguard Worker4) Driver-private (hopefully versioned) 41*61046927SAndroid Build Coastguard Worker 42*61046927SAndroid Build Coastguard WorkerSince Gallium3D is not versioned, the Xorg gallium frontend needs to be compiled 43*61046927SAndroid Build Coastguard Workerwith Gallium, but it's really beneficial to be able to compile xorg drivers 44*61046927SAndroid Build Coastguard Workerstandalone. 45*61046927SAndroid Build Coastguard Worker 46*61046927SAndroid Build Coastguard WorkerTherefore the xa gallium frontend is intended to supply the following 47*61046927SAndroid Build Coastguard Workerfunctionality: 48*61046927SAndroid Build Coastguard Worker 49*61046927SAndroid Build Coastguard Worker1) Versioning. 50*61046927SAndroid Build Coastguard Worker2) Surface functionality (creation and copying for a basic dri2 implementation) 51*61046927SAndroid Build Coastguard Worker3) YUV blits for textured Xv. 52*61046927SAndroid Build Coastguard Worker4) Solid fills without ROP functionality. 53*61046927SAndroid Build Coastguard Worker5) Copies with format conversion and - reinterpretation but without ROP 54*61046927SAndroid Build Coastguard Worker6) Xrender- type compositing for general acceleration. 55*61046927SAndroid Build Coastguard Worker 56*61046927SAndroid Build Coastguard Worker 57*61046927SAndroid Build Coastguard WorkerThe first user will be the vmwgfx xorg driver. When there are more users, 58*61046927SAndroid Build Coastguard Workerwe need to be able to load the appropriate gallium pipe driver, and we 59*61046927SAndroid Build Coastguard Workershould investigate sharing the loadig mechanism with the EGL gallium frontend. 60*61046927SAndroid Build Coastguard Worker 61*61046927SAndroid Build Coastguard WorkerIMPORTANT: 62*61046927SAndroid Build Coastguard WorkerVersion compatibilities: 63*61046927SAndroid Build Coastguard WorkerWhile this library remains OUTSIDE any mesa release branch, 64*61046927SAndroid Build Coastguard Workerand the major version number is still 0. Any minor bump should be viewed as 65*61046927SAndroid Build Coastguard Workeran incompatibility event, and any user of this library should test for that 66*61046927SAndroid Build Coastguard Workerand refuse to use the library if minor versions differ. 67*61046927SAndroid Build Coastguard WorkerAs soon as the library enters a mesa release branch, if not earlier, major 68*61046927SAndroid Build Coastguard Workerwill be bumped to 1, and normal incompatibility rules (major bump) 69*61046927SAndroid Build Coastguard Workerwill be followed. 70*61046927SAndroid Build Coastguard WorkerIt is allowed to add function interfaces while only bumping minor. Any 71*61046927SAndroid Build Coastguard Workeruser that uses these function interfaces must therefore use lazy symbol 72*61046927SAndroid Build Coastguard Workerlookups and test minor for compatibility before using such a function. 73