1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (C) 2009 Francisco Jerez. 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * All Rights Reserved. 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * a copy of this software and associated documentation files (the 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * "Software"), to deal in the Software without restriction, including 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * without limitation the rights to use, copy, modify, merge, publish, 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * distribute, sublicense, and/or sell copies of the Software, and to 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * permit persons to whom the Software is furnished to do so, subject to 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the following conditions: 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice (including the 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * next paragraph) shall be included in all copies or substantial 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * portions of the Software. 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef __NOUVEAU_UTIL_H__ 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define __NOUVEAU_UTIL_H__ 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/formats.h" 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/colormac.h" 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline unsigned 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpack_rgba_i(gl_format f, uint8_t c[]) 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (f) { 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ARGB8888: 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PACK_COLOR_8888(c[ACOMP], c[RCOMP], c[GCOMP], c[BCOMP]); 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ARGB8888_REV: 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PACK_COLOR_8888(c[BCOMP], c[GCOMP], c[RCOMP], c[ACOMP]); 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_XRGB8888: 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PACK_COLOR_8888(0, c[RCOMP], c[GCOMP], c[BCOMP]); 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_XRGB8888_REV: 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PACK_COLOR_8888(c[BCOMP], c[GCOMP], c[RCOMP], 0); 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA8888: 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PACK_COLOR_8888(c[RCOMP], c[GCOMP], c[BCOMP], c[ACOMP]); 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA8888_REV: 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PACK_COLOR_8888(c[ACOMP], c[BCOMP], c[GCOMP], c[RCOMP]); 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB565: 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PACK_COLOR_565(c[RCOMP], c[GCOMP], c[BCOMP]); 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(0); 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline unsigned 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpack_zs_i(gl_format f, uint32_t z, uint8_t s) 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (f) { 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_Z24_S8: 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (z & 0xffffff00) | (s & 0xff); 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_Z24_X8: 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (z & 0xffffff00); 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_Z16: 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (z & 0xffff0000) >> 16; 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(0); 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline unsigned 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpack_rgba_f(gl_format f, float c[]) 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return pack_rgba_i(f, (uint8_t []) { 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLOAT_TO_UBYTE(c[RCOMP]), 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLOAT_TO_UBYTE(c[GCOMP]), 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLOAT_TO_UBYTE(c[BCOMP]), 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLOAT_TO_UBYTE(c[ACOMP]) }); 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline unsigned 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpack_rgba_clamp_f(gl_format f, float c[]) 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLubyte bytes[4]; 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_unclamped_float_rgba_to_ubyte(bytes, c); 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return pack_rgba_i(f, bytes); 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline unsigned 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpack_zs_f(gl_format f, float z, uint8_t s) 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return pack_zs_i(f, FLOAT_TO_UINT(z), s); 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Integer base-2 logarithm, rounded towards zero. */ 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline unsigned 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orglog2i(unsigned i) 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned r = 0; 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (i & 0xffff0000) { 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org i >>= 16; 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r += 16; 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (i & 0x0000ff00) { 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org i >>= 8; 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r += 8; 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (i & 0x000000f0) { 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org i >>= 4; 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r += 4; 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (i & 0x0000000c) { 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org i >>= 2; 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r += 2; 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (i & 0x00000002) { 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org r += 1; 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return r; 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline unsigned 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgalign(unsigned x, unsigned m) 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (x + m - 1) & ~(m - 1); 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline void 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgget_scissors(struct gl_framebuffer *fb, int *x, int *y, int *w, int *h) 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *w = fb->_Xmax - fb->_Xmin; 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *h = fb->_Ymax - fb->_Ymin; 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *x = fb->_Xmin; 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *y = (fb->Name ? fb->_Ymin : 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Window system FBO: Flip the Y coordinate. */ 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org fb->Height - fb->_Ymax); 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline void 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgget_viewport_scale(struct gl_context *ctx, float a[16]) 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_viewport_attrib *vp = &ctx->Viewport; 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_framebuffer *fb = ctx->DrawBuffer; 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a[MAT_SX] = (float)vp->Width / 2; 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (fb->Name) 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a[MAT_SY] = (float)vp->Height / 2; 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Window system FBO: Flip the Y coordinate. */ 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a[MAT_SY] = - (float)vp->Height / 2; 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a[MAT_SZ] = fb->_DepthMaxF * (vp->Far - vp->Near) / 2; 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline void 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgget_viewport_translate(struct gl_context *ctx, float a[4]) 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_viewport_attrib *vp = &ctx->Viewport; 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_framebuffer *fb = ctx->DrawBuffer; 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a[0] = (float)vp->Width / 2 + vp->X; 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (fb->Name) 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a[1] = (float)vp->Height / 2 + vp->Y; 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Window system FBO: Flip the Y coordinate. */ 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a[1] = fb->Height - (float)vp->Height / 2 - vp->Y; 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org a[2] = fb->_DepthMaxF * (vp->Far + vp->Near) / 2; 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline GLboolean 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgis_color_operand(int op) 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return op == GL_SRC_COLOR || op == GL_ONE_MINUS_SRC_COLOR; 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline GLboolean 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgis_negative_operand(int op) 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return op == GL_ONE_MINUS_SRC_COLOR || op == GL_ONE_MINUS_SRC_ALPHA; 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline GLboolean 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgis_texture_source(int s) 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return s == GL_TEXTURE || (s >= GL_TEXTURE0 && s <= GL_TEXTURE31); 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline struct gl_texgen * 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgget_texgen_coord(struct gl_texture_unit *u, int i) 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return ((struct gl_texgen *[]) 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { &u->GenS, &u->GenT, &u->GenR, &u->GenQ }) [i]; 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline float * 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgget_texgen_coeff(struct gl_texgen *c) 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (c->Mode == GL_OBJECT_LINEAR) 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return c->ObjectPlane; 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else if (c->Mode == GL_EYE_LINEAR) 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return c->EyePlane; 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return NULL; 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline unsigned 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgget_format_blocksx(gl_format format, 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned x) 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint blockwidth; 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint blockheight; 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_get_format_block_size(format, &blockwidth, &blockheight); 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (x + blockwidth - 1) / blockwidth; 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic inline unsigned 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgget_format_blocksy(gl_format format, 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned y) 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint blockwidth; 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLuint blockheight; 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_get_format_block_size(format, &blockwidth, &blockheight); 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (y + blockheight - 1) / blockheight; 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 231