Add mouse and keyboard configuration file
[profile/ivi/xorg-x11-server.git] / glx / indirect_texture_compression.c
1 /*
2  * (C) Copyright IBM Corporation 2005, 2006
3  * All Rights Reserved.
4  * 
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sub license,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
19  * IBM,
20  * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
22  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23  * SOFTWARE.
24  */
25
26 #ifdef HAVE_DIX_CONFIG_H
27 #include <dix-config.h>
28 #endif
29
30 #include "glxserver.h"
31 #include "glxbyteorder.h"
32 #include "glxext.h"
33 #include "singlesize.h"
34 #include "unpack.h"
35 #include "indirect_size_get.h"
36 #include "indirect_dispatch.h"
37 #include "glapitable.h"
38 #include "glapi.h"
39 #include "glthread.h"
40 #include "dispatch.h"
41
42 int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *pc)
43 {
44     xGLXSingleReq * const req = (xGLXSingleReq *) pc;
45     int error;
46     __GLXcontext * const cx = __glXForceCurrent( cl, req->contextTag, & error );
47     ClientPtr client = cl->client;
48
49
50     pc += __GLX_SINGLE_HDR_SIZE;
51     if ( cx != NULL ) {
52         const GLenum target = *(GLenum *)(pc + 0);
53         const GLint  level  = *(GLint  *)(pc + 4);
54         GLint compsize = 0;
55         char *answer = NULL, answerBuffer[200];
56
57         CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize));
58
59         if ( compsize != 0 ) {
60             __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
61             __glXClearErrorOccured();
62             CALL_GetCompressedTexImageARB(GET_DISPATCH(), (target, level, answer));
63         }
64
65         if (__glXErrorOccured()) {
66             __GLX_BEGIN_REPLY(0);
67             __GLX_SEND_HEADER();
68         } else {
69             __GLX_BEGIN_REPLY(compsize);
70             ((xGLXGetTexImageReply *)&__glXReply)->width = compsize;
71             __GLX_SEND_HEADER();
72             __GLX_SEND_VOID_ARRAY(compsize);
73         }
74
75         error = Success;
76     }
77
78     return error;
79 }
80
81
82 int __glXDispSwap_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *pc)
83 {
84     xGLXSingleReq * const req = (xGLXSingleReq *) pc;
85     int error;
86     __GLXcontext * const cx = __glXForceCurrent( cl, bswap_32( req->contextTag ), & error );
87     ClientPtr client = cl->client;
88
89
90     pc += __GLX_SINGLE_HDR_SIZE;
91     if ( cx != NULL ) {
92         const GLenum target = (GLenum) bswap_32( *(int *)(pc + 0) );
93         const GLint  level =  (GLint ) bswap_32( *(int *)(pc + 4) );
94         GLint compsize = 0;
95         char *answer = NULL, answerBuffer[200];
96
97         CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize));
98
99         if ( compsize != 0 ) {
100             __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
101             __glXClearErrorOccured();
102             CALL_GetCompressedTexImageARB(GET_DISPATCH(), (target, level, answer));
103         }
104
105         if (__glXErrorOccured()) {
106             __GLX_BEGIN_REPLY(0);
107             __GLX_SEND_HEADER();
108         } else {
109             __GLX_BEGIN_REPLY(compsize);
110             ((xGLXGetTexImageReply *)&__glXReply)->width = compsize;
111             __GLX_SEND_HEADER();
112             __GLX_SEND_VOID_ARRAY(compsize);
113         }
114         
115         error = Success;
116     }
117
118     return error;
119 }