104007ebaSmrg/* 204007ebaSmrg * Copyright (c) 2007 Advanced Micro Devices, Inc. 304007ebaSmrg * 404007ebaSmrg * Permission is hereby granted, free of charge, to any person obtaining a 504007ebaSmrg * copy of this software and associated documentation files (the "Software"), 604007ebaSmrg * to deal in the Software without restriction, including without limitation 704007ebaSmrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 804007ebaSmrg * and/or sell copies of the Software, and to permit persons to whom the 904007ebaSmrg * Software is furnished to do so, subject to the following conditions: 1004007ebaSmrg * 1104007ebaSmrg * The above copyright notice and this permission notice shall be included in 1204007ebaSmrg * all copies or substantial portions of the Software. 1304007ebaSmrg * 1404007ebaSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1504007ebaSmrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1604007ebaSmrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1704007ebaSmrg * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1804007ebaSmrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1904007ebaSmrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 2004007ebaSmrg * DEALINGS IN THE SOFTWARE. 2104007ebaSmrg * 2204007ebaSmrg * Neither the name of the Advanced Micro Devices, Inc. nor the names of its 2304007ebaSmrg * contributors may be used to endorse or promote products derived from this 2404007ebaSmrg * software without specific prior written permission. 2504007ebaSmrg */ 2604007ebaSmrg 27f29dbc25Smrg#ifndef AMD_BLEND_H_ 28f29dbc25Smrg#define AMD_BLEND_H_ 29f29dbc25Smrg 30f29dbc25Smrg#define GEODEPTR_FROM_PIXMAP(x) \ 31f29dbc25Smrg GEODEPTR(xf86Screens[(x)->drawable.pScreen->myNum]) 32f29dbc25Smrg#define GEODEPTR_FROM_SCREEN(x) \ 33f29dbc25Smrg GEODEPTR(xf86Screens[(x)->myNum]) 34f29dbc25Smrg#define GEODEPTR_FROM_PICTURE(x) \ 35f29dbc25Smrg GEODEPTR(xf86Screens[(x)->pDrawable->pScreen->myNum]) 36f29dbc25Smrg 37f29dbc25Smrg#define usesPasses(op) ((( \ 38f29dbc25Smrg ( 1 << PictOpAtop ) | \ 39f29dbc25Smrg ( 1 << PictOpAtopReverse ) | \ 40f29dbc25Smrg ( 1 << PictOpXor ) | \ 41f29dbc25Smrg 0 ) >> (op)) & 1) 42f29dbc25Smrg 43f29dbc25Smrg/* pass1 or pass2 */ 44f29dbc25Smrg#define usesSrcAlpha(op) ((( \ 45f29dbc25Smrg ( 1 << PictOpOver ) | \ 46f29dbc25Smrg ( 1 << PictOpInReverse ) | \ 47f29dbc25Smrg ( 1 << PictOpOutReverse ) | \ 48f29dbc25Smrg ( 1 << PictOpAtop ) | \ 49f29dbc25Smrg ( 1 << PictOpAtopReverse ) | \ 50f29dbc25Smrg ( 1 << PictOpXor ) | \ 51f29dbc25Smrg 0 ) >> (op)) & 1) 52f29dbc25Smrg 53f29dbc25Smrg/* pass1 or pass2 */ 54f29dbc25Smrg#define usesDstAlpha(op) ((( \ 55f29dbc25Smrg ( 1 << PictOpOverReverse ) | \ 56f29dbc25Smrg ( 1 << PictOpIn ) | \ 57f29dbc25Smrg ( 1 << PictOpOut ) | \ 58f29dbc25Smrg ( 1 << PictOpAtop ) | \ 59f29dbc25Smrg ( 1 << PictOpAtopReverse ) | \ 60f29dbc25Smrg ( 1 << PictOpXor ) | \ 61f29dbc25Smrg 0 ) >> (op)) & 1) 62f29dbc25Smrg 63f29dbc25Smrg/* non 2 pass ops */ 64f29dbc25Smrg#define usesChanB0(op) ((( \ 65f29dbc25Smrg ( 1 << PictOpOver ) | \ 66f29dbc25Smrg ( 1 << PictOpOverReverse ) | \ 67f29dbc25Smrg ( 1 << PictOpIn ) | \ 68f29dbc25Smrg ( 1 << PictOpInReverse ) | \ 69f29dbc25Smrg ( 1 << PictOpOut ) | \ 70f29dbc25Smrg ( 1 << PictOpOutReverse ) | \ 71f29dbc25Smrg ( 1 << PictOpAdd ) | \ 72f29dbc25Smrg 0 ) >> (op)) & 1) 73f29dbc25Smrg 74f29dbc25Smrg/* pass 1 ops */ 75f29dbc25Smrg#define usesChanB1(op) ((( \ 76f29dbc25Smrg ( 1 << PictOpAtop ) | \ 77f29dbc25Smrg ( 1 << PictOpAtopReverse ) | \ 78f29dbc25Smrg ( 1 << PictOpXor ) | \ 79f29dbc25Smrg 0 ) >> (op)) & 1) 80f29dbc25Smrg 81f29dbc25Smrg/* pass 2 ops */ 82f29dbc25Smrg#define usesChanB2(op) ((( \ 83f29dbc25Smrg ( 1 << PictOpAtop ) | \ 84f29dbc25Smrg ( 1 << PictOpAtopReverse ) | \ 85f29dbc25Smrg ( 1 << PictOpXor ) | \ 86f29dbc25Smrg 0 ) >> (op)) & 1) 87f29dbc25Smrg 88f29dbc25Smrg#endif 89