157382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez/* 257382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * Copyright (C) 2009-2010 Francisco Jerez. 357382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * All Rights Reserved. 457382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * 557382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * Permission is hereby granted, free of charge, to any person obtaining 657382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * a copy of this software and associated documentation files (the 757382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * "Software"), to deal in the Software without restriction, including 857382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * without limitation the rights to use, copy, modify, merge, publish, 957382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * distribute, sublicense, and/or sell copies of the Software, and to 1057382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * permit persons to whom the Software is furnished to do so, subject to 1157382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * the following conditions: 1257382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * 1357382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * The above copyright notice and this permission notice (including the 1457382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * next paragraph) shall be included in all copies or substantial 1557382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * portions of the Software. 1657382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * 1757382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1857382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1957382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2057382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 2157382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 2257382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 2357382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2457382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez * 2557382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez */ 2657382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 2757382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez#ifndef __NOUVEAU_ARRAY_H__ 2857382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez#define __NOUVEAU_ARRAY_H__ 2957382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 3057382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerezstruct nouveau_array; 3157382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 3257382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jereztypedef unsigned (*extract_u_t)(struct nouveau_array *, int, int); 3357382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jereztypedef float (*extract_f_t)(struct nouveau_array *, int, int); 3457382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 3557382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerezstruct nouveau_array { 3657382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez int attr; 3757382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez int stride, fields, type; 3857382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 3957382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez struct nouveau_bo *bo; 4057382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez unsigned offset; 4157382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez const void *buf; 4257382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 4357382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez extract_u_t extract_u; 4457382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez extract_f_t extract_f; 4557382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez}; 4657382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 4757382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerezvoid 4857382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jereznouveau_init_array(struct nouveau_array *a, int attr, int stride, 4957382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez int fields, int type, struct gl_buffer_object *obj, 502e47d01c9e5325906cf3bb979279599991c6328eBen Skeggs const void *ptr, GLboolean map, struct gl_context *ctx); 5157382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 5257382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerezvoid 5357382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jereznouveau_deinit_array(struct nouveau_array *a); 5457382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 5557382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerezvoid 5657382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jereznouveau_cleanup_array(struct nouveau_array *a); 5757382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez 5857382e71ef892a36ca2171fe8758aba6c9c885e6Francisco Jerez#endif 59